Modul:Check for clobbered parameters
TemplateStyles' src
attribute must not be empty.
![]() | Modul nèka ènilai minangka modul beta, tor lasta èyangghuy halè tèghâr. Modul nèka ghi' anyar tor samostèna èyangghuy kelabân mastètè otabâ prajhâtna ka'angghuy mamastè asèlla nyondhuk kelabân pengarebbhânna. |
TemplateStyles' src
attribute must not be empty.
![]() | This Lua module is used on approximately 111.000 pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
TemplateStyles' src
attribute must not be empty.
![]() | This module depends on the following other modules: |
This module may be appended to a template to check for uses of tuples of conflicting parameters.
Usage
beccè'Basic usage
beccè'{{#invoke:Check for clobbered parameters|check
|nested=1
|template=Some template name
|cat={{main other|Category:Some tracking category}}
|arg1a; arg1b|arg2a; arg2b; arg2c|...|argNa; argNb}}
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 |nested=1
to consider blank parameters as well.
By default, the delimiter for the tuples is ;
but this can be changed with |delimiter=
.
The value of |template=
is used to for the text of the preview warning message. When omitted, the module will use a generic message.
Example 1
beccè'{{Infobox
| above = {{{name|}}}
| label1 = Founder{{#if:{{{founders|}}}|s}}
| data1 = {{if empty| {{{founders|}}} | {{{founder|}}} }}
| label2 = Headquarters
| data2 = {{if empty| {{{headquarters|}}} | {{{hq|}}} | {{{location|}}} }}
}}<!--
end infobox, start tracking
-->{{#invoke:Check for clobbered parameters|check
| template = Infobox example
| cat = {{main other|Category:Pages using infobox example with conflicting parameters}}
| founders; founder
| headquarters; hq; location
}}
Example 2
beccè'{{Infobox
| above = {{{name|}}}
| label1 = Founder(s)
| data1 = {{{founders|{{{founder|}}}}}}
| label2 = Headquarters
| data2 = {{{headquarters|{{{hq|{{{location|}}}}}}}}}
}}<!--
end infobox, start tracking
-->{{#invoke:Check for clobbered parameters|check
| nested = 1
| template = Infobox example
| cat = {{main other|Category:Pages using infobox example with conflicting parameters}}
| founders; founder
| headquarters; hq; location
}}
See also
beccè'- Module:Check for unknown parameters
- Module:Check for deprecated parameters
- Module:Params
- Template:Conflicting parameters category (for use on category pages)
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 cat = ''
if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then
cat = args['cat']
end
local res = ''
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 = {}
if #argpairs > 0 then
for i, v in ipairs( argpairs ) do
table.insert(warnmsg, 'Using more than one of the following parameters: <code>' ..
table.concat(v, '</code>, <code>') .. '</code>')
if cat ~= '' then
res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
end
end
end
if #warnmsg > 0 then
if frame:preprocess( "{{REVISIONID}}" ) == "" then
local ptxt = args['template'] and args['template'] .. ' warning' or 'Warning'
res = '<div class="hatnote" style="color:red"><strong>' .. ptxt .. ':</strong> ' .. table.concat(warnmsg, '<br>') .. '</div>' .. res
end
end
return res
end
return p