|
|
Line 1: |
Line 1: |
| -- This is a helper module for Template:tmpl | | -- This is a helper module for {{tmpl}} |
| | require('Module:No globals') |
| | |
| | -- The trailing `[^0-9]?` ensures that `$10` doesn't potentially change |
| | -- from being treated as `${1}0` to being treated as `${10}` |
| | -- if the number of supported parameters is ever expanded: |
| | local PATTERN = "%$([1-9])[^0-9]?" |
| | |
| local this = {} | | local this = {} |
|
| |
|
| function this.renderTmpl(frame) | | function this.renderTmpl(frame) |
| local args = frame.args
| | local args = frame.args |
| local pargs = (frame:getParent() or {}).args
| | local pargs = (frame:getParent() or {}).args |
| local result = pargs[0] or ''
| | local input = pargs[0] or '' |
| for k, v in pairs(pargs) do
| | local result = {} |
| local n = tonumber(k) or -1
| | |
| if (n >= 1 and n <= 9) then
| | local prevPos = 1 |
| result = mw.ustring.gsub( result, '$' .. n, mw.text.trim(v) )
| | do |
| end
| | local startPos, _, k |
| end
| | while true do |
| return result
| | startPos, _, k = string.find(input, PATTERN, prevPos) |
| | if (not startPos) then break end |
| | table.insert(result, string.sub(input, prevPos, startPos - 1)) |
| | |
| | local n = tonumber(k) |
| | local r = pargs[n] |
| | if (r) then |
| | table.insert(result, r) |
| | else |
| | table.insert(result, '$' .. n) |
| | end |
| | |
| | prevPos = startPos + #k + 1 |
| | end |
| | end |
| | |
| | table.insert(result, string.sub(input, prevPos)) |
| | return table.concat(result) |
| end | | end |
|
| |
|
| return this | | return this |