Jump to content
šŸ—³ļøšŸ–„ļø The Wikimedia Foundation December 2024 Developer Satisfaction Survey closes on the 2025-01-03. This survey helps us measure developer satisfaction, and prioritize work on tools and platforms for our technical contributors.

Module:Tmpl

From wikiNonStop
Revision as of 06:53, 27 December 2024 by Majestix (talk | contribs) (1 revision imported: Initial )
(diff) ā† Older revision | Latest revision (diff) | Newer revision ā†’ (diff)
Module documentation

Lua error: expandTemplate: template loop detected.

-- 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