વિભાગ:Check for unknown parameters
Appearance
Documentation for this module may be created atવિભાગ:Check for unknown parameters/doc
-- 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 list
localp={}
localfunctiontrim(s)
returns:match('^%s*(.-)%s*$')
end
localfunctionisnotempty(s)
returnsands:match('%S')
end
localfunctionclean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
localpos,truncated
localfunctiontruncate(text)
iftruncatedthen
return''
end
ifmw.ustring.len(text)>25then
truncated=true
text=mw.ustring.sub(text,1,25)..'...'
end
returnmw.text.nowiki(text)
end
localparts={}
forbefore,tag,remainderintext:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()')do
pos=remainder
table.insert(parts,truncate(before)..'<'..tag..'>...</'..tag..'>')
end
table.insert(parts,truncate(text:sub(posor1)))
returntable.concat(parts)
end
functionp._check(args,pargs)
iftype(args)~="table"ortype(pargs)~="table"then
-- TODO: error handling
return
end
-- create the list of known args, regular expressions, and the return string
localknownargs={}
localregexps={}
fork,vinpairs(args)do
iftype(k)=='number'then
v=trim(v)
knownargs[v]=1
elseifk:find('^regexp[1-9][0-9]*$')then
table.insert(regexps,'^'..v..'$')
end
end
-- loop over the parent args, and make sure they are on the list
localignoreblank=isnotempty(args['ignoreblank'])
localshowblankpos=isnotempty(args['showblankpositional'])
localvalues={}
fork,vinpairs(pargs)do
iftype(k)=='string'andknownargs[k]==nilthen
localknownflag=false
for_,regexpinipairs(regexps)do
ifmw.ustring.match(k,regexp)then
knownflag=true
break
end
end
ifnotknownflagand(notignoreblankorisnotempty(v))then
table.insert(values,clean(k))
end
elseiftype(k)=='number'andknownargs[tostring(k)]==nilthen
localknownflag=false
for_,regexpinipairs(regexps)do
ifmw.ustring.match(tostring(k),regexp)then
knownflag=true
break
end
end
ifnotknownflagand(showblankposorisnotempty(v))then
table.insert(values,k..' = '..clean(v))
end
end
end
-- add results to the output tables
localres={}
if#values>0then
localunknown_text=args['unknown']or'Found _VALUE_, '
ifmw.getCurrentFrame():preprocess("{{REVISIONID}}")==""then
localpreview_text=args['preview']
ifisnotempty(preview_text)then
preview_text=require('Module:If preview')._warning({preview_text})
elseifpreview==nilthen
preview_text=unknown_text
end
unknown_text=preview_text
end
for_,vinpairs(values)do
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
ifv==''thenv=' 'end
-- avoid error with v = 'example%2' ( "invalid capture index" )
localr=unknown_text:gsub('_VALUE_',{_VALUE_=v})
table.insert(res,r)
end
end
returntable.concat(res)
end
functionp.check(frame)
localargs=frame.args
localpargs=frame:getParent().args
returnp._check(args,pargs)
end
returnp