Moduł:Tmpl

Z Fundacja Dr. Owsika
Wersja z dnia 21:43, 14 maj 2023 autorstwa Szprink (dyskusja | edycje) (Utworzono nową stronę "-- 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 = {} function this.renderTmpl(frame) local args = frame.args local pargs = (frame:getParent() or {}).args local input = pargs[0] or '' local result = {}…")
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Tmpl/opis

-- 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 = {}

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