Module:Tmpl

From Uncyclopedia, the content-free encyclopedia
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