Module:$var
Aller à la navigation
Aller à la recherche
La documentation pour ce module peut être créée à Module:$var/doc
-- <nowiki> -------------------------------------------------------------------------------- -- Lua module for rendering the source of template transclusions using -- [[mw:Special:MyLanguage/Help:Extension:Translate/Page translation administration#Variables|$<var>var</var>]]. -- -- @module $var -- @alias p -- @author [[User:ExE Boss]] -- @require [[Module:Arguments]] -- @require [[Module:No globals]] -- @require [[Module:TableTools]] -------------------------------------------------------------------------------- require("Module:No globals"); local getArgs = require("Module:Arguments").getArgs; local tableTools = require("Module:TableTools"); local p, mt = {}, {}; local function echoSource(name, args) local numArgs, sArgs = {}, {}; local numArgsCount = 0; for k, v in pairs(args) do if (tableTools.isPositiveInteger(k)) then if (k > numArgsCount) then numArgsCount = k end numArgs[k] = v; else sArgs[k] = v; end end local iArgs = {}; for i, v in ipairs(numArgs) do iArgs[i] = v; end if #iArgs ~= numArgsCount then local namedArgs2 = {}; for i = #iArgs + 1, numArgsCount do local v = numArgs[i]; if v ~= nil then namedArgs2[i] = v; end end for k, v in pairs(sArgs) do namedArgs2[k] = v; end sArgs = namedArgs2; end local content = mw.html.create() :wikitext("{{", name); for _, v in ipairs(numArgs) do content:wikitext("|", v); end for k, v in pairs(sArgs) do content:wikitext("|", k, "=", v); end content:wikitext("}}"); return tostring( mw.html.create("code") :wikitext(mw.text.nowiki(tostring(content))) :allDone() ); end function mt.__index(t, name) if (type(name) == "string" and mw.ustring.find(name, "^%$.")) then return function(frame) local args = getArgs(frame, { trim = false, removeBlanks = false, wrappers = { "Template:$1", "Template:$2", "Template:$3", "Template:$4", "Template:$5", "Template:$6", "Template:$7", "Template:$8", "Template:$9", }, }); return echoSource(name, args); end end end return setmetatable(p, mt);