Модул:Check for unknown parameters
Овај {{
|Модул=Луа модул |#default=шаблон }} се користи на {{#if:> 3800|> 3.800|веома великом броју}} страница, тако да ће промене на њему бити широко примећене. Молимо да било какве измене тестирате на подстраницама {{
|Модул=модула |#default=шаблона }} [[{{
| doc | sandbox | док | песак = Модул:Check for unknown parameters | #default = Модул:Check for unknown parameters }}/песак|/песак]] или [[{{
| doc | sandbox | док | песак = Модул:Check for unknown parameters | #default = Модул:Check for unknown parameters }}/тестови|/тестови]]{{
|Модул=. |#default=, или на сопственој корисничкој подстраници. }} Размислите и о постављању расправе о променама које намеравате да унесете на {{#if:|страници [[{{{2}}}]]|[[{{#switch: Check for unknown parameters | doc | sandbox | док | песак = Разговор о модулу:Check for unknown parameters | #default = Разговор о модулу:Check for unknown parameters }}|страници за разговор]]}} пре њиховог примењивања. |
{{#switch:
{{#if:
|
| {{#ifeq:Модул|Модул
| module
| other
}}
}}
| module =
{{#switch: p
| pre-alpha | prealpha | pa =}} | {{#switch: p
| pre-alpha | prealpha | pa = Овај модул је оцењен као pre-alpha. Незавршен је и постоји могућност да је у активном развоју. Не би требало да га се користи на страницама именског простора чланак. Модули остају pre-alpha све док оригинални уредник (или неко ко преузме уређивање ако је оно запостављено одређено време) не буде задовољан основном структуром.{{#switch: Check for unknown parameters|doc|sandbox= | {{#ifeq: | true | | }} }} | alpha | a = Овај модул је оцењен као alpha. Спреман је за унос од стране трећег лица и може да буде коришћен на неколико страница да би се увиделе евентуалне грешке и проблеми; за то време треба да се надзире. Предлози за нове функције или промене у механизму уноса и исписа су добродошли.{{#switch: Check for unknown parameters|doc|sandbox= | {{#ifeq: | true | | }} }} | beta | b = Овај модул је оцењен као beta и спреман је за широку употребу. Још увек је нов и треба да га се користи са дозом опреза да би се осигурали очекивани резултати.{{#switch: Check for unknown parameters|doc|sandbox= | {{#ifeq: | true | | }} }} | release | r | general | g = Овај модул је оцењен као спреман за генералну употребу. Досегао је зрео облик и сматра се да нема никаквих багова те да га се може употребити где год је то потребно. Спреман је за помињање на помоћним страницама и другим Википедијиним изворима као опција за нове кориснике који почињу да уче. Да би се смањило оптерећење сервера и лош излаз података, треба да се побољшава тестирањима у песку, а не константним пуњењем историје покушавајући постићи жељене промене.{{#switch: Check for unknown parameters|doc|sandbox= | {{#ifeq: | true | | }} }} | protected | protect | p = Овај модул је предмет заштите страница. То је веома коришћен модул у употреби огромног броја страница или се супституише веома често. Због вандализма или грешака које би утицале на много страница или тривијалног уређивања које би могло да изазове проблеме на серверима, модул је заштићен од уређивања.{{#switch: Check for unknown parameters|doc|sandbox= | {{#ifeq: | true | | }} }} | #default = Ознака модула је неважећа или није наведена.}} |
| other | #default = Овај шаблон треба да буде коришћен на страницама именског простора „Модул”. }}
This module may be appended to a template to check for uses of unknown parameters.
Usage
Basic usage
{{#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 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 class="error">Sorry, I don't recognize _VALUE_</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 |{{SAFESUBST:#if:ignoreblank|ignoreblank=}}1.
By default, the module ignores blank positional parameters. To include blank positional parameters in the tracking use |{{SAFESUBST:#if:showblankpositional|showblankpositional=}}1.
Regular expressions
This module supports regular 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 form headerNUM, labelNUM, dataNUM, dataNUMa, dataNUMb, dataNUMc, ..., rowcellstyleNUM, where NUM is a string of digits.
Example
{{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_]]
| preview = unknown parameter "_VALUE_"
| name
| height | weight
| website
}}
Templates invoking this module
The following is a list of some of the templates which invoke this module, with the associated category for each.
For a more up-to-date list, search for the "check for unknown parameters" within the template namespace.
See also
- module:TemplatePar (originally from dewiki)
- Template:Parameters and Module:Parameters – generates a list of parameter names for a given template
{{#ifeq:Check for unknown parameters|sandbox||
}}
-- 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 trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local knownargs = {}
local unknown = args['unknown'] or 'Пронађено _VALUE_, '
local preview = args['preview']
local values = {}
local res = {}
local regexps = {}
-- create the list of known args, regular expressions, and the return string
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
if isnotempty(preview) then
preview = '<div class="hatnote" style="color:red"><strong>Упозорење:</strong> ' .. preview .. ' (ова порука се приказује само у претпрегледу).</div>'
elseif preview == nil then
preview = unknown
end
-- loop over the parent args, and make sure they are on the list
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and
knownargs[tostring(k)] == nil and
( showblankpos or isnotempty(v) )
then
table.insert(values, k .. ' = ' .. clean(v))
end
end
-- add results to the output tables
if #values > 0 then
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
unknown = preview
end
for _, v in pairs(values) do
if v == '' then
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
v = ' '
end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p