Module:Check for clobbered parameters
Vilwelo
Vya masiku ghose
Print/export
Ma project ghanyake
![]() | This module is rated asbeta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
![]() | This Lua module is used onapproximately 1,220,000 pages, or roughly 3130% of all pages. To avoid major disruption and server load, any changes should be tested in the module's/sandbox or/testcases subpages, or in your ownmodule sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on thetalk page before implementing them. |
![]() | 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.
{{#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.
{{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}}
{{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}}
localp={}localfunctiontrim(s)returns:match('^%s*(.-)%s*$')endlocalfunctionisnotempty(s)returnsands:match('%S')endfunctionp.check(frame)localargs=frame.argslocalpargs=frame:getParent().argslocalchecknested=isnotempty(args['nested'])localdelimiter=isnotempty(args['delimiter'])andargs['delimiter']or';'localargpairs={}fork,vinpairs(args)doiftype(k)=='number'thenlocalplist=mw.text.split(v,delimiter)localpfound={}localcount=0forii,vvinipairs(plist)dovv=trim(vv)ifchecknestedandpargs[vv]orisnotempty(pargs[vv])thencount=count+1table.insert(pfound,vv)endendifcount>1thentable.insert(argpairs,pfound)endendendlocalwarnmsg={}localres=''localcat=''ifargs['cat']andmw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:')thencat=args['cat']endlocaltemplate=args['template']and' in '..args['template']or''if#argpairs>0thenfori,vinipairs(argpairs)dotable.insert(warnmsg,mw.ustring.format('Using more than one of the following parameters%s: <code>%s</code>.',template,table.concat(v,'</code>, <code>')))ifcat~=''thenres=res..'[['..cat..'|'..(v[1]==''and' 'or'')..v[1]..']]'endendendif#warnmsg>0thenres=require('Module:If preview')._warning({table.concat(warnmsg,'<br>')})..resendreturnresendreturnp