Mediawiki>ExE Boss |
|
Line 1: |
Line 1: |
| -- This is a helper module for {{tmpl}} | | -- This is a helper module for Template: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 input = pargs[0] or ''
| | local result = pargs[0] or '' |
| local result = {}
| | for k, v in pairs(pargs) do |
| | | local n = tonumber(k) or -1 |
| local prevPos = 1
| | if (n >= 1 and n <= 9) then |
| do
| | result = mw.ustring.gsub( result, '$' .. n, mw.text.trim(v) ) |
| local startPos, _, k
| | end |
| while true do
| | end |
| startPos, _, k = string.find(input, PATTERN, prevPos)
| | return result |
| 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 |