This module may be appended to a template to check for uses of unknown parameters.
{{#invoke:check for unknown parameters|check|unknown=[[Category:Some tracking category]]|arg1|arg2|...|argN}}
or to sort the entries in the tracking category by parameter
{{#invoke:check for unknown parameters|check|unknown=[[Category:Some tracking category|_VALUE_]]|arg1|arg2|...|argN}}
or for an explicit red error message
{{#invoke:check for unknown parameters|check|unknown=<span class=error>Sorry, I don't recognize _VALUE_</span>|arg1|arg2|...|argN}}
or to use hidden error messages which can be viewed in the HTML source
{{#invoke:check for unknown parameters|check|unknown=<span>HIDDEN ERROR: Usage of "_VALUE_" is not recognized</span>|arg1|arg2|...|argN}}
Here,arg1
,arg2
, ...,argN
, are the known parameters. Any parameter which is used, but not on this list, will cause the module to return whatever is passed with theunknown
parameter. The_VALUE_
keyword, if used, will be changed to the name of the parameter. This is useful for either sorting the entries in a tracking category, or for provide more explicit information.
By default, the module makes no distinction between a defined-but-blank parameter and a non-blank parameter. To only track non-blank parameters use|ignoreblank=1
.
{{Infobox| above = {{{name|}}}| label1 = Height| data1 = {{{height|}}}| label2 = Weight| data2 = {{{weight|}}}| label3 = Website| data3 = {{{website|}}}}}<!-- end infobox, start tracking-->{{#invoke:Check for unknown parameters|check| unknown = [[Category:Some tracking category|_VALUE_]]| name| height | weight| website}}
-- This module may be used to compare the arguments passed to the parent-- with a list of arguments, returning a specified result if an argument is-- not on the listlocalp={}localfunctionisnotempty(s)returnsands:match('^%s*(.-)%s*$')~=''endfunctionp.check(frame)localargs=frame.argslocalpargs=frame:getParent().argslocalignoreblank=isnotempty(frame.args['ignoreblank'])localcheckpos=isnotempty(frame.args['checkpositional'])localknownargs={}localunknown='Found _VALUE_, 'localres={}localcomments={}localcommentstr=''-- create the list of known args, and the return stringfork,vinpairs(args)doiftype(k)=='number'thenv=mw.ustring.gsub(v,'^%s*(.-)%s*$','%1')knownargs[v]=1elseif(k=='unknown'andtype(v)=='string')thenunknown=vendendend-- loop over the parent args, and make sure they are on the listfork,vinpairs(pargs)doif(type(k)=='string'andknownargs[k]==nil)thenif((notignoreblank)or(ignoreblankandisnotempty(v)))thenk=mw.ustring.gsub(k,'[^%w\-_ ]','?')localr=mw.ustring.gsub(unknown,'_VALUE_',k)table.insert(res,r)table.insert(comments,'"'..k..'"')endelseif(checkposandtype(k)=='number'andknownargs[tostring(k)]==nil)thenif((notignoreblank)or(ignoreblankandisnotempty(v)))thenlocalr=mw.ustring.gsub(unknown,'_VALUE_',k)table.insert(res,r)table.insert(comments,'"'..k..'"')endendendif(#comments>0)thencommentstr='<!-- Module:Check for unknown parameters results: '..table.concat(comments,', ')..'-->'endreturntable.concat(res)..commentstrendreturnp