Module:Tmpl
Jump to navigation
Jump to search
Implements {{Tmpl}}
-- for {{tmpl}}
-- forked from MediaWiki
require('strict')
local PATTERN = "%$([1-9])[^0-9]?"
local p = {}
function p.renderTmpl(frame)
local args = frame.args
local pargs = (frame:getParent() or {}).args
local inp = pargs[0] or ''
local re = {}
local prevPos = 1
do
local startPos, _, k
while true do
startPos, _, k = string.find(inp, PATTERN, prevPos)
if (not startPos) then break end
table.insert(re, string.sub(inp, prevPos, startPos - 1))
local n = tonumber(k)
local r = pargs[n]
if (r) then
table.insert(re, r)
else
table.insert(re, '$' .. n)
end
prevPos = startPos + #k + 1
end
end
table.insert(re, string.sub(inp, prevPos))
return table.concat(re)
end
return p