Модуль:Check for unknown parameters
Игътибар! Бу иң еш кулланылган модульләрнең берсе. Аның һәр үзгәртелүе «Викимедиа Фондының» серверларына эш өсти. Зинһар, нәрсә эшләгәнегезне аңлагыз һәм махсус өйрәнү урыннарында татып карагыз.
|
Бу модуль билгесез параметрлар кулллануны тикшерү өчен калыпларга кертелә ала. Куллануның иң гади ысулы — {{cfup}} калыпы башына урнаштыру. Игътибар итегез, мәкаләләр кэшлану аркасында мәкаләләр төркемгә вакыт үткәч кенә өстәлә.
Куллану
үзгәртүГади рәвештә куллану
үзгәртү{{#invoke:check for unknown parameters|check |unknown=[[Төркем:Ниндидер күзәтүче төркем]] |arg1|arg2|...|argN}}
,
яки төркемдәге битләрне параметр буенча сортлау һәм алдан карау режимында күрсәтү өчен:
{{#invoke:check for unknown parameters|check |unknown=[[Төркем:Ниндидер күзәтүче төркем|_VALUE_]] |preview=Билгесез параметр «_VALUE_» |arg1|arg2|...|argN}}
,
яки хата турында ачык күренә торган хәбәрнамә өчен:
Монда arg1
, arg2
, …, argN
— билгеле параметрлар. Исемләнмәгән параметрлар шулай ук санала алалар: |1|2|argname1|argname2|...
. Бу исемлеккә кермәгән, кулланышта булган теләсә нинди параметр модульне unknown
параметрында тапшырылган мәгънәне кайтарырга мәҗбүр итә. _VALUE_
сүзе параметрның исеменә алмашына. Төркемдәге битләрне сортлау өчен дә, өстәмә мәгълүмат күрсәтү өчен дә бу файдалы булырга мөмкин.
Килешенгәнчә, модуль игълан ителгән буш параметрларны һәм буш булмаган параметрларны аермый. Шуңа күрә, алар исемлектә булмаса, модуль |foo=x
турында да, |foo=
турында да хәбәр итәр. Буш булмаган параметрларны гына күзәтү өчен |ignoreblank=1
кулланыгыз.
Килешенгәнчә, модуль буш исемләнмәгән параметрларга игътибар итми. Ягъни, исемлектә булмаса да, |2=
игътибарсыз калачак.
Lua паттерннары
үзгәртүМодуль, бер системада исемләнгән, билгеле булган күп параметрлар булганда, (регуляр гыйбарәләргә охшаш Lua паттерннары белән эшли. Мәсьәлән, шундый код:
| 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]*
боларның бар параметрлары өчен дә эшләячәк:
headerNUM
, labelNUM
, dataNUM
, dataNUMa
, dataNUMb
, dataNUMc
, …, rowcellstyleNUM
. Монда где NUM — цифрлар юлы.
Параметрлар генераторлары
үзгәртү{{subst:#invoke:check for unknown parameters|generate |unknown=[[Төркем:Ниндидер күзәтүче төркем]] |{{subst:NAMESPACE}}|{{subst:PAGENAME}}}}
Модуль куелган битнең кодында {{{param
(аңлатмасы булганнар да) табып автоматик рәвештә параметрларны бер-бер артлы карап чыга. |ignoreblank=
, |preview=
, |showblankpositional=
параметрларын монда ук билгеләргә була, алар модульне кертеп куйганда өстәлер.
Башка телле бүлектә тулырак мәкалә бар: Модуль: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
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and trim(s) ~= ''
end
function p.check (frame)
local args = frame.args
local pargs = frame:getParent().args
local ignoreblank = isnotempty(frame.args['ignoreblank'])
local showblankpos = isnotempty(frame.args['showblankpositional'])
local knownargs = {}
local unknown = frame.args['unknown'] or 'Found _VALUE_, '
local preview = frame.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>Warning:</strong> ' .. preview .. ' (this message is shown only in 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 i, 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
k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
table.insert(values, k)
end
elseif type(k) == 'number' and
knownargs[tostring(k)] == nil and
( showblankpos or isnotempty(v) )
then
local vlen = mw.ustring.len(v)
v = mw.ustring.sub(v, 1, (vlen < 25) and vlen or 25)
v = mw.ustring.gsub(v, '[^%w\-_ ]', '?')
table.insert(values, k .. ' = ' .. v .. ((vlen >= 25) and ' ...' or ''))
end
end
-- add resuls to the output tables
if #values > 0 then
if frame:preprocess( "{{REVISIONID}}" ) == "" then
unknown = preview
end
for k, 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
local r = unknown:gsub('_VALUE_', v)
table.insert(res, r)
end
end
return table.concat(res)
end
return p