Модуль:Check for clobbered parameters
Зовнішній вигляд
| Цей модуль позначений як К:бета-модуль (30), і готовий до широкого вжитку. Він і досі новий і його слід використовувати з певною обережністю, щоб гарантувати, передбачувані результати. |
| Цей модуль залежить від наступних модулів: |
Цей модуль може додаватися до шаблону для перевірки на використання кортежів несумнісних параметрів.
Використання
[ред. код]Базове використання
[ред. код]{{#invoke:Check for clobbered parameters|check
|nested=1
|template=Деяка назва шаблону
|cat={{main other|Категорія:Деяка назва категорії спостереження}}
|arg1a; arg1b|arg2a; arg2b; arg2c|...|argNa; argNb}}
Тут, (arg1a, arg1b), (arg2a, arg2b, arg2c), є кортежами несумісних параметрів.
По стандарту, модуль ігнорує пусті параметри, які корисними для ланцюжку {{if empty}} параметрів. Для вкладеного ланцюжку параметрів, використайте |nested=1, щоб враховувати також і пусті параметри.
По стандарту, роздільником кортежів є ;, але це можна змінити параметром |delimiter=.
Значення |template= використовується в тексті попереджувального повідомлення в попередньому перегляжді. Коли параметр опущений, то модуль виведе загальне повідомлення.
Приклад 1
[ред. код]{{Картка
| угорі = {{{ім'я|}}}
| мітка1 = Засновник{{#if:{{{засновники|}}}|и}}
| текст1 = {{if empty| {{{засновники|}}} | {{{засновник|}}} }}
| мітка2 = Штаб-квартира
| текст2 = {{if empty| {{{штаб-квартира|}}} | {{{шк|}}} | {{{розташування|}}} }}
}}<!--
кінець картки, початок відстеження
-->{{#invoke:Check for clobbered parameters|check
| template = Картка приклад
| cat = {{main other|Категорія:Сторінки, що використовують шаблон картка приклад з несумісними параметрами}}
| засновники; засновник
| штаб-квартира; шк; розташування
}}
Приклад 2
[ред. код]{{Картка
| угорі = {{{ім'я|}}}
| мітка1 = Засновник(и)
| текст1 = {{{засновники|{{{засновник|}}}}}}
| мітка2 = Штаб-квартира
| текст2 = {{{штаб-квартира|{{{шк|{{{розташування|}}}}}}}}}
}}<!--
кінець картки, початок відстеження
-->{{#invoke:Check for clobbered parameters|check
| nested = 1
| template = Картка приклад
| cat = {{main other|Категорія:Сторінки, що використовують шаблон картка приклад з несумісними параметрами}}
| засновники; засновник
| штаб-квартира; шк; розташування
}}
Див. також
[ред. код]- Модуль:Check for unknown parameters
- Модуль:Check for deprecated parameters
- Модуль:Params
- Шаблон:Conflicting parameters category (для викоргистання на сторінках категорій)
Документація вище включена з Модуль:Check for clobbered parameters/документація. (ред. | історія)
Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля.
Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки.
Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля.
Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки.
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
local checknested = isnotempty(args['nested'])
local delimiter = isnotempty(args['delimiter']) and args['delimiter'] or ';'
local argpairs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
local plist = mw.text.split(v, delimiter)
local pfound = {}
local count = 0
for ii, vv in ipairs(plist) do
vv = trim(vv)
if checknested and pargs[vv] or isnotempty(pargs[vv]) then
count = count + 1
table.insert(pfound, vv)
end
end
if count > 1 then
table.insert(argpairs, pfound)
end
end
end
local warnmsg = {}
local res = ''
local cat = ''
if args['cat'] and (mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') or mw.ustring.match(args['cat'],'^[Кк][Аа][Тт][Ее][Гг][Оо][Рр][Іі][Яя]:')) then
cat = args['cat']
end
local template = args['template'] and ' у ' .. args['template'] or ''
if #argpairs > 0 then
for i, v in ipairs( argpairs ) do
table.insert(
warnmsg,
mw.ustring.format(
'Використання більш ніж одного з наступних параметрів%s: <code>%s</code>.',
template,
table.concat(v, '</code>, <code>')
)
)
if cat ~= '' then
res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
end
end
end
if #warnmsg > 0 then
res = require('Модуль:If preview')._warning({
table.concat(warnmsg, '<br>')
}) .. res
end
return res
end
return p