Module:Check for clobbered parameters: Difference between revisions
moduleimport2>Izno use if preview |
m 1 revision imported |
(No difference)
|
Latest revision as of 02:14, 4 August 2025
Template:Module rating Script error: No such module "High-use". Lua error in Module:Lua_banner at line 113: attempt to index field 'edit' (a nil value). This module may be appended to a template to check for uses of tuples of conflicting parameters.
Usage
Basic usage
<syntaxhighlight lang="wikitext">
</syntaxhighlight>
Here, (arg1a
, arg1b
), (arg2a
, arg2b
, arg2c
), are tuples of the conflicting parameters.
By default, the module ignores blank parameters which is useful for {{if empty}} chains of parameters. For nested chains of parameters, use |{{SAFESUBST:#if:nested|nested=}}1
to consider blank parameters as well.
By default, the delimiter for the tuples is ;
but this can be changed with |{{SAFESUBST:#if:delimiter|delimiter=}}
.
The value of |{{SAFESUBST:#if:template|template=}}
is used to for the text of the preview warning message. When omitted, the module will use a generic message.
Example 1
<syntaxhighlight lang="wikitext">
Founder{{#if:|s}} | Template:If empty |
---|---|
Headquarters | Template:If empty |
{{#switch:
{{#if: | {{{demospace}}} | {{#ifeq:Module|Template | template | other }} }}
| template = {{#ifeq:Check for clobbered parameters|Infobox||{{#ifeq:Template:Str left|Infobox|[[Category:Infobox templates|Template:Remove first word]]}}}} | other | #default = }}</syntaxhighlight>
Example 2
<syntaxhighlight lang="wikitext"> {{#switch:
{{#if: | {{{demospace}}} | {{#ifeq:Module|Template | template | other }} }}
| template = {{#ifeq:Check for clobbered parameters|Infobox||{{#ifeq:Template:Str left|Infobox|[[Category:Infobox templates|Template:Remove first word]]}}}} | other | #default = }}</syntaxhighlight>
See also
- Module:Check for unknown parameters
- Module:Check for deprecated parameters
- Module:Params
- Template:Conflicting parameters category (for use on category pages)
{{#if:{{#ifeq:Check f|sandbox|1}}{{#ifeq:Check for clobbered parameters|doc|1}}|| }}
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
local checknested = isnotempty(args['nested'])
local delimiter = isnotempty(args['delimiter']) and args['delimiter'] or ';'
local argpairs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
local plist = mw.text.split(v, delimiter)
local pfound = {}
local count = 0
for ii, vv in ipairs(plist) do
vv = trim(vv)
if checknested and pargs[vv] or isnotempty(pargs[vv]) then
count = count + 1
table.insert(pfound, vv)
end
end
if count > 1 then
table.insert(argpairs, pfound)
end
end
end
local warnmsg = {}
local res = ''
local cat = ''
if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then
cat = args['cat']
end
local template = args['template'] and ' in ' .. args['template'] or ''
if #argpairs > 0 then
for i, v in ipairs( argpairs ) do
table.insert(
warnmsg,
mw.ustring.format(
'Using more than one of the following parameters%s: <code>%s</code>.',
template,
table.concat(v, '</code>, <code>')
)
)
if cat ~= '' then
res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
end
end
end
if #warnmsg > 0 then
res = require('Module:If preview')._warning({
table.concat(warnmsg, '<br>')
}) .. res
end
return res
end
return p