Mòdul:DemoTemplate
Aparença
Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]
A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]
Ús
[modifica]Simplement col·loqueu "#invoke:DemoTemplate|" abans d’una crida a una plantilla. Per exemple, {{#invoke:DemoTemplate|Convert|10|km|nmi|abbr=off}} produeix el següent:
{{Convert|10|km|nmi|abbr=off}}
→ 10 quilometres (5.4 milles nàutiques)
Aquest mòdul gestiona correctament tant els paràmetres nomenats i posicionals com els signes iguals tant en els noms com en els valors dels paràmetres, de manera que això (per exemple) funcionarà: {{#invoke:DemoTemplate|1x|1=Alguns paràmetres amb un = sign in it}}
{{1x|1=Alguns paràmetres amb un = sign in it}}
→ Alguns paràmetres amb un = sign in it
Tingueu en compte, però, que aquest mòdul no manipula correctament les barres verticals, claus, etc., de manera que això (per exemple) no funcionarà correctament: {{#invoke:DemoTemplate|1x|foo{{!}}bar}}
{{1x|foo|bar}}
→ foo
require('strict')
local newBuffer = require('Module:OutputBuffer')
local mt = {}
function mt.__index(t, title)
return function(frame)
local getBuffer, print, printf = newBuffer()
printf('{{%s', title)
local ipairsArgs = {}
for k,v in ipairs(frame.args) do
if string.find(v, '=', 1, true) then
break
end
ipairsArgs[k] = true
printf('|%s', v)
end
for k,v in pairs(frame.args) do
if not ipairsArgs[k] then
printf('|%s=%s', string.gsub(k, '=', '{{=}}'), v)
end
end
print('}}')
local buffer = getBuffer()
-- rather than calling expandTemplate with the title and args we have, call preprocess, so that our code example will always match our output, even in the cases of pipes or other things we should have escaped but didn't
return string.format('<code>%s</code> → %s', mw.text.nowiki(buffer), frame:preprocess(buffer))
end
end
return setmetatable({}, mt)