Terraria Wiki

Fandom.png

Merge-arrows.svg
В ближайшие дни будет осуществлён перенос статей из «Террария вики»
В течение нескольких дней в русскоязычный раздел официальной Terraria Wiki будут переноситься статьи из русскоязычного раздела неофициальной «Террария вики».
Настоятельно рекомендуем не вносить какие-либо изменения в статьи, которые буду перенесы из неофициальной вики, а также не нужно переносить статьи самостоятельно. Всё будет производиться и исправляться в полуавтоматическом режиме.

ПОДРОБНЕЕ

Terraria Wiki
Terraria Wiki
1546
страниц
См. также этот модуль на английском языке: Module:Localization. В нём может содержаться более полная или подробная информация.

Документация для этого модуля отсутствует. Создайте её.


local ugsub = mw.ustring.gsub
local usub = mw.ustring.sub

------------------------------
return {
	-- replace all tokens in source string with replacement
	replace = function(frame)
		local str = frame.args['str']
		-- iterate over parameters
		for token, replace in pairs(frame:getParent().args) do
			local isReplacementArg = usub(token, 1, 1) == '$' -- parameter name starts with the "$" character
			if frame.args['calledFromModule'] ~= nil and frame.args['calledFromModule'] ~= '' then
				-- if {{l10n/long}} was called from a module, then it is impossible to include the "$" character in a parameter name
				-- therefore, replacement arguments are not in the format of "$arg$", but "__arg" there
				isReplacementArg = usub(token, 1, 2) == '__'
				token = '$' .. usub(token, 3) .. '$' -- reformat "__arg" to "$arg$"
			end
			if isReplacementArg then
				-- escape, to perform plain text replacement. see Module:String
				str = ugsub(str, (ugsub(token, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1")), (ugsub(replace, "%%", "%%%%" ))) -- () to force return only 1 value.
			end
		end
		return str
	end,

}