Modul:Unsubst

![]() |
Aceasta este pagina de documentație pentru Modul:Unsubst. Pagina descrie modul de folosire al formatului și conține categoriile de care acesta aparține, precum și orice altceva ce nu face parte din formatul propriu-zis. Ea poate fi editată modificând pagina Modul:Unsubst/doc |
Modul de ajutor pentru a facilita transformarea unui format substituit într-o transcluziune.
Formatele de întreținere, cum ar fi {{Necesită citare}} sau {{Referințe}}, nu trebuie substituite niciodată. Pentru a evita aceasta, se înlocuiește un format cu forma sa transclusă.
Infocasetele ar trebui să folosească Module:Unsubst-infobox, ca și orice alte formate cu parametri listați implicit în format bloc.
Utilizare
Pentru a face ca un format să se autosubstituie, înconjurați codul existent al formatului cu:
{{ {{{|safesubst:}}}#invoke:Unsubst||$B= [ ... existing template code ... ] }}
Wikitextul de afișat când nu este substituit se dă ca argument pentru "$B". Toți ceilalți parametri pe care îi primește #invoke vor fi copiați la invocarea formatului generat drept valori implicite. Dacă valoarea oricărui parametru implicit este "__DATE__", acea valoare din invocarea formatului generat va fi luna și anul curente.
Unele formate au un <noinclude> care nu este închis de un </noinclude> la sfârșit. În asemenea cazuri, tagul </noinclude> lipsă trebuie adăugat înainte de }}
de la final.
Utilizare avansată
{{ {{{|safesubst:}}}#invoke:Unsubst||$params=[ parameters ]|$aliases=[ aliases ]|$flags=[ flags ]|$B= [ ... existing template code ... ] }}
Din cauza limitărilor limbajului Lua, parametrii sunt în mod normal ordonați aleator la substituirea formatului. |$params=
se poate utiliza în #invoke:Unsubst pentru a lista parametri formatului în ordine, separați de virgulă (de ex. egg,bacon,sausage,cheese,spam
). Parametrii cu numere trebuie puși înaintea celorlalți în listă. Orice alți parametri sunt puși la sfârșitul invocării generate.
Aliasurile pentru parametri pot fi listate în |$aliases=
(nu în |$params=
), și se vor înlocui automat. Fiecare alias și înlocuitorul său trebuie formatați ca alias>înlocuitor
, și fiecare astfel de pereche trebuie să fie separată de virgulă (de ex, œuf>ou,cheese>brânză
). Acest parametru poate funcționa cu și fără |$params=
.
Parametrul |$flags=
poate fi utilizat pentru a modifica alte aspecte ale comportamentului formatului; valorile sunt separate de virgulă. Flaguri valide sunt override
(permite ca parametrii din #invoke: să aibă prioritate față de parametrii din invocarea originară a formatului); keep-whitespace
(împiedică eliminarea whitespace-ului de la începutul și sfârșitul parametrilor fără nume); și remove-empty
(înlătură parametrii goi).
Acești parametri pot fi manipulați folosind funcții parser pentru a crea opțiuni mai complicate (atenție că în parametri orice funcție parser, apel de format ori modul, trebuie să aibă Format:(((|safesubst:Format:)))
).
Exemplu
Fie un format Format:Exemplu cu următorul cod:
{{ {{{|safesubst:}}}#invoke:Unsubst||foo=bar |date=__DATE__ |$B= [ ... Codul formatului ... ] }}
Originar | Rezultat |
---|---|
{{subst:exemplu}} | {{Exemplu|foo=bar|date=iunie 2025}} |
{{subst:exemplu|foo=X}} | {{Exemplu|foo=X|date=iunie 2025}} |
{{subst:exemplu|baz=X}} | {{Exemplu|foo=bar|baz=X|date=iunie 2025}} |
{{subst:exemplu|date=ianuarie 2001}} | {{Exemplu|foo=bar|date=ianuarie 2001}} |
local p = {}
local specialParams = {
['$N'] = 'template name',
['$B'] = 'template content',
}
p[''] = function ( frame )
if not frame:getParent() then
error( '{{#invoke:Unsubst|unsubst}} makes no sense without a parent frame' )
end
for k, v in pairs( specialParams ) do
if not frame.args[k] then
error( '{{#invoke:Unsubst|unsubst}} requires parameter ' .. k .. ' (' .. v .. ')' )
end
end
if mw.isSubsting() then
---- substing
-- Combine passed args with passed defaults
local args = {}
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
-- Now, build an equivalent template invocation
-- First numbered args, then named
local ret = '{{' .. frame.args['$N']
for k, v in ipairs( args ) do
if string.find( v, '=', 1, true ) then
-- likely something like 1=foo=bar, we need to do it as a named arg
break
end
ret = ret .. '|' .. v
args[k] = nil
end
for k, v in pairs( args ) do
ret = ret .. '|' .. k .. '=' .. v
end
return ret .. '}}'
else
---- Not substing
-- Just return the "body"
return frame.args['$B']
end
end
return p