Movatterモバイル変換


[0]ホーム

URL:


Jump to content
Wikiquote
Search

Module:Check for unknown parameters

From Wikiquote

This module may be appended to a template to check for uses of unknown parameters.

Usage

[edit]

Basic usage

[edit]
{{#invoke:check for unknown parameters|check|unknown=[[Category:Some tracking category]]|arg1|arg2|arg3|argN}}

or to sort the entries in the tracking category by parameter with a preview error message

{{#invoke:check for unknown parameters|check|unknown=[[Category:Some tracking category|_VALUE_]]|preview=unknown parameter "_VALUE_"|arg1|arg2|...|argN}}

or for an explicit red error message

{{#invoke:check for unknown parameters|check|unknown=<span>Sorry, I don't recognize _VALUE_</span>|arg1|arg2|...|argN}}

Here,arg1,arg2, ...,argN, are the known parameters. Unnamed (positional) parameters can be added too:|1|2|argname1|argname2|.... 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. That is, both unlisted|foo=x and|foo= are reported. To only track non-blank parameters use|ignoreblank=1.

By default, the module ignores blank positional parameters. That is, an unlisted|2= is ignored. Toinclude blank positional parameters in the tracking use|showblankpositional=1.

Lua patterns

[edit]

This module supportsLua patterns (similar toregular expressions), which are useful when there are many known parameters which use a systematic pattern. For example,template:infobox3cols uses

| regexp1 = header[%d][%d]*| regexp2 = label[%d][%d]*| regexp3 = data[%d][%d]*[abc]?| regexp4 = class[%d][%d]*[abc]?| regexp5 = rowclass[%d][%d]*| regexp6 = rowstyle[%d][%d]*| regexp7 = rowcellstyle[%d][%d]*

to match all parameters of the formheaderNUM,labelNUM,dataNUM,dataNUMa,dataNUMb,dataNUMc, ...,rowcellstyleNUM, where NUM is a string of digits.

Example

[edit]
{{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 = {{main other|[[Category:Some tracking category|_VALUE_]]}}| preview = unknown parameter "_VALUE_"| name| height | weight| website}}

See also

[edit]



-- 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={}localfunctiontrim(s)returns:match('^%s*(.-)%s*$')endlocalfunctionisnotempty(s)returnsands:match('%S')endlocalfunctionclean(text)-- Return text cleaned for display and truncated if too long.-- Strip markers are replaced with dummy text representing the original wikitext.localpos,truncatedlocalfunctiontruncate(text)iftruncatedthenreturn''endifmw.ustring.len(text)>25thentruncated=truetext=mw.ustring.sub(text,1,25)..'...'endreturnmw.text.nowiki(text)endlocalparts={}forbefore,tag,remainderintext:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()')dopos=remaindertable.insert(parts,truncate(before)..'&lt;'..tag..'&gt;...&lt;/'..tag..'&gt;')endtable.insert(parts,truncate(text:sub(posor1)))returntable.concat(parts)endfunctionp._check(args,pargs)iftype(args)~="table"ortype(pargs)~="table"then-- TODO: error handlingreturnend-- create the list of known args, regular expressions, and the return stringlocalknownargs={}localregexps={}fork,vinpairs(args)doiftype(k)=='number'thenv=trim(v)knownargs[v]=1elseifk:find('^regexp[1-9][0-9]*$')thentable.insert(regexps,'^'..v..'$')endend-- loop over the parent args, and make sure they are on the listlocalignoreblank=isnotempty(args['ignoreblank'])localshowblankpos=isnotempty(args['showblankpositional'])localvalues={}fork,vinpairs(pargs)doiftype(k)=='string'andknownargs[k]==nilthenlocalknownflag=falsefor_,regexpinipairs(regexps)doifmw.ustring.match(k,regexp)thenknownflag=truebreakendendifnotknownflagand(notignoreblankorisnotempty(v))thentable.insert(values,clean(k))endelseiftype(k)=='number'andknownargs[tostring(k)]==nilthenlocalknownflag=falsefor_,regexpinipairs(regexps)doifmw.ustring.match(tostring(k),regexp)thenknownflag=truebreakendendifnotknownflagand(showblankposorisnotempty(v))thentable.insert(values,k..' = '..clean(v))endendend-- add results to the output tableslocalres={}if#values>0thenlocalunknown_text=args['unknown']or'Found _VALUE_, 'ifmw.getCurrentFrame():preprocess("{{REVISIONID}}")==""thenlocalpreview_text=args['preview']ifisnotempty(preview_text)thenpreview_text=require('Module:If preview')._warning({preview_text})elseifpreview==nilthenpreview_text=unknown_textendunknown_text=preview_textendfor_,vinpairs(values)do-- Fix odd bug for | = which gets stripped to the empty string and-- breaks category linksifv==''thenv=' 'end-- avoid error with v = 'example%2' ("invalid capture index")localr=unknown_text:gsub('_VALUE_',{_VALUE_=v})table.insert(res,r)endendreturntable.concat(res)endfunctionp.check(frame)localargs=frame.argslocalpargs=frame:getParent().argsreturnp._check(args,pargs)endreturnp
Retrieved from "https://en.wikiquote.org/w/index.php?title=Module:Check_for_unknown_parameters&oldid=3312524"

[8]ページ先頭

©2009-2025 Movatter.jp