Модуль:Check for unknown parameters
Цей модуль позначений як К:реліз, готовий до загального вжитку (33). Він досягнув стадії готовності і вважається, що вільний від помилок і може використовуватись всюди, де знадобиться. Його можна вживати на допоміжних сторінках та інших сторінках Вікіпедії як можливість для навчання новачків. Аби зменшити навантаження на сервери та некоректний показ сторінок, його можна вдосконалювати в рамцях чернеткового тестування, а не з застосуванням спроб і помилок. |
{{Модуль:Check for unknown parameters}} (обг. · викор. · ред.)
Модуль викликається з шаблонів, які бажають перевіряти власні виклики з невідомими їм параметрами.
Використання
Базове
{{#invoke:check for unknown parameters|check|unknown=[[Категорія:Шаблон:<Назва шаблону>:Параметр не підтримується]]|arg1|arg2|...|argN}}
або щоб відсортувати сторінки з помилками в категорії спостереження за помилковою назвою параметра із повідомленням про помилку у попередньому перегляді
{{#invoke:check for unknown parameters|check|unknown=[[Категорія:Шаблон:<Назва шаблону>:Параметр не підтримується |_VALUE_]]|preview=невідомий параметр "_VALUE_"|arg1|arg2|...|argN}}
або для повідомлення про помилку у тілі сторінки
{{#invoke:check for unknown parameters|check|unknown=<span class="error">Вибачте, я не розумію параметр «_VALUE_»</span>|arg1|arg2|...|argN}}
або використати приховані повідомлення про помилку, які можна побачити у вихідному коді HTML, разом з повідомленням у попередньому перегляді
{{#invoke:check for unknown parameters|check|unknown=<span class="error" style="display:none">HIDDEN ERROR: Usage of "_VALUE_" is not recognized</span>|preview=unknown parameter "_VALUE_"|arg1|arg2|...|argN}}
Тут, arg1
, arg2
, ..., argN
— параметри, які вміє обробляти шаблон. 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. Щоб відстежувати лише непорожні параметри вкажіть модулю |ignoreblank=1
.
Регулярні вирази
Модуль підтримує патерни Lua (подібні до регулярних виразів), якими зручно користуватися, коли у шаблона багато відомих параметрів за певною маскою назви параметра. Наприклад, {{infobox3cols}} (обг. · викор. · ред.) використовує
| 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.
Приклад
{{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}}
Шаблони на Модуль:Check for unknown parameters
The following is a list of templates which invoke this module, with the associated category for each.
Перелік шаблонів, які викликають {{Модуль:Check for unknown parameters}} (обг. · викор. · ред.) (список від рушія) | |
---|---|
Шаблон | Категорія спостереження |
{{Year box}} (обг. · викор. · ред.) | Категорія:Сторінки, що використовують year box з невідомими параметрами (0 К, 0 С) |
{{Затока}} (обг. · викор. · ред.) | Категорія:Шаблон:Затока:Параметр не підтримується (0 К, 2 С) |
{{Картка Ресторан}} (обг. · викор. · ред.) | [[:Категорія:|Категорія:]] (0 К, 0 С) |
{{Картка університету}} (обг. · викор. · ред.) | [[:Категорія:|Категорія:]] (0 К, 0 С) |
{{Картка анатомії}} (обг. · викор. · ред.) | [[:Категорія:|Категорія:]] (0 К, 0 С) |
Документація вище включена з Модуль:Check for unknown parameters/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниці (ред. | різн.) та тести (створити) цього шаблону. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
-- 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-- modified at ukwikilocal p = {}local function trim(s) return s:match('^%s*(.-)%s*$')endlocal function isnotempty(s) return s and trim(s) ~= ''endlocal 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, truncatedlocal function truncate(text)if truncated thenreturn ''endif mw.ustring.len(text) > 25 thentruncated = truetext = mw.ustring.sub(text, 1, 25) .. '...'endreturn mw.text.nowiki(text)endlocal parts = {}for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') dopos = remaindertable.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')endtable.insert(parts, truncate(text:sub(pos or 1)))return table.concat(parts)endfunction 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 '<s>|_VALUE_=</s>, '-- якщо не задано local preview = frame.args['preview'] or '<s>|_VALUE_=</s>, '-- завжди попередж. в прев'ю local values = {} local res = {} local regexps = {} local revisionid = isnotempty( frame:preprocess( "{{REVISIONID}}" ) ) local function nounderscore( pargs ) for k, v in pairs(pargs) do k = mw.ustring.gsub(k, '[_]', ' ') end return pargs end-- 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 not isnotempty(preview) 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 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 resuls to the output tables if #values > 0 then if not revisionid then unknown = preview end for k, v in pairs(values) do-- Fix odd bug for | = which gets stripped to the empty string and-- breaks category links if v == '' then v = ' ' end local r = unknown:gsub('_VALUE_', v) table.insert(res, r) end if not revisionid then table.insert(res, 1, '<div class="hatnote" style="color:red; border:1px dashed pink; border-radius:10px;"><strong>Увага:</strong> {{[[' .. tostring(mw.getCurrentFrame():getParent():getTitle()) .. ']]}}: не розумію параметр(и):<br/><span style="font-color:black;font-size:85%;">') table.insert(res, '</span><br/>(це повідомлення лише в попередперегляді). [[Вікіпедія:Проєкт:Шаблони#Параметри шаблонів|Докладніше]]</div>') end end return table.concat(res)endreturn p