Модуль:ParamValue2Value
Гэты модуль дазваляе ў асобных выпадках пазбавіцца ад неабходнасці выкарыстоўваць у неіменаваных параметрах шаблона мыліцы тыпу шаблона {{=}}, HTML-сутнасці = або ручной нумарацыі параметраў. Ён:
- прымае ад шаблона параметры, з якімі ён быў выкліканы;
- пераўтварае найменныя параметры выгляду
параметр=значэнне
, за выключэннем тых, імя якіх пачынаецца са знака падкрэсліванне_
, з пералічаных праз/
у параметры_exceptions
, у ненайменныя, злучаючы імя параметру і яго значэнне знакам=
і дадаючы атрыманы параметр у канец спісу; - перадае ўсе параметры ў шаблон, паказаны ў параметры
_pass_to
.
Важна: пакуль не будзе вырашана праблема скажонага парадку найменных параметраў у Scribunto, модуль будзе стабільна працаваць толькі пры адным, і не больш, найменным параметры, які трэба пераўтварыць; інакш парадак прытрымлівання параметраў можа змяняцца без усялякай логікі. Прычым параметр, у які можа зачасацца знак «=», павінен быць апошнім у спісе, інакш парадак сказіцца.
Гл. таксама
правіць
local p = {}
-- выклік шаблона, пры памылцы вяртае пусты радок
local function expand(frame, tname, targs)
local success, result = pcall(
frame.expandTemplate,
frame,
{title = tname, args = targs}
)
if success then
return result
else
return ''
end
end
local function is_exception(arg, exceptions)
return mw.ustring.find(exceptions, '/' .. arg .. '/')
end
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {
trim = false,
removeBlanks = false
})
local tname = args._pass_to
local exceptions = args._exceptions and '/' .. args._exceptions .. '/' or ''
local targs, i = {}, 1
for k, v in pairs(args) do
if type(k) == 'number' then --ненайменныя параметры
targs[i] = v
i = i+1
elseif not k:find('^_') and not is_exception(k, exceptions) then --найменныя параметры, выключаючы налады выклікаючага шаблона
targs[i] = k .. "=" .. v
i = i+1
elseif k ~= '_pass_to' and k ~= '_exceptions' then --налады выклікаючага шаблона
targs[k] = v
end
end
return tostring(expand(frame, tname, targs))
end
return p