Module:Tmpl: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
m Protected "Module:Tmpl": High-risk Lua module: Request at COM:ANB ([Edit=Allow only template editors and administrators] (indefinite) [Move=Allow only template editors and administrators] (indefinite)) |
mediawiki>Pppery m Protected "Module:Tmpl": Highly visible page or template ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) |
||
| Line 1: | Line 1: | ||
-- This is a helper module for |
-- This is a helper module for {{tmpl}} |
||
require('strict') |
|||
-- 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 pargs = (frame:getParent() or {}).args |
|||
local input = pargs[0] or '' |
|||
local result = {} |
|||
for k, v in pairs(pargs) do |
|||
| ⚫ | |||
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 |
|||
| ⚫ | |||
startPos, _, k = string.find(input, PATTERN, prevPos) |
|||
| ⚫ | |||
if (not startPos) then break end |
|||
table.insert(result, string.sub(input, prevPos, startPos - 1)) |
|||
| ⚫ | |||
local r = pargs[n] |
|||
if (r) then |
|||
table.insert(result, r) |
|||
else |
|||
table.insert(result, '$' .. n) |
|||
| ⚫ | |||
prevPos = startPos + #k + 1 |
|||
end |
|||
end |
|||
table.insert(result, string.sub(input, prevPos)) |
|||
| ⚫ | |||
end |
end |
||
Revision as of 23:33, 12 March 2025
Documentation for this module may be created at Module:Tmpl/doc
-- This is a helper module for {{tmpl}}
require('strict')
-- 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 = {}
function this.renderTmpl(frame)
local args = frame.args
local pargs = (frame:getParent() or {}).args
local input = pargs[0] or ''
local result = {}
local prevPos = 1
do
local startPos, _, k
while true do
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
return this