Modul:Check for unknown parameters
Ieu modul dipeunteun béta, tur siap dipaké sacara widespread. Anyar kénéh tur kudu dipakéIt is still new and should be used with some caution to ensure the results are as expected. |
This module may be appended to a template to check for uses of unknown parameters.
Usage édit
{{#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 style="display:none">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 the unknown
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
.
Example édit
{{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 list
local p = {}
local function isnotempty(s)
return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end
function p.check (frame)
local args = frame.args
local pargs = frame:getParent().args
local ignoreblank = isnotempty(frame.args['ignoreblank'])
local knownargs = {}
local unknown = 'Found _VALUE_, '
local res = {}
-- create the list of known args, and the return string
for k, v in pairs(args) do
if type(k) == 'number' then
v = mw.ustring.gsub(v, '^%s*(.-)%s*$', '%1')
knownargs[v] = 1
else
if (k == 'unknown' and type(v) == 'string') then
unknown = v
end
end
end
-- loop over the parent args, and make sure they are on the list
for k,v in pairs(pargs) do
if (knownargs[k] == nil and type(k) == 'string') then
if( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) then
k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
local r = mw.ustring.gsub(unknown, '_VALUE_', k)
table.insert(res, r)
end
end
end
return table.concat(res)
end
return p