Jump to content

Module:Forward parameters to template call

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Tamzin (talk | contribs) at 03:45, 5 February 2022 (i hate coding). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}
local getArgs = require('Module:Arguments').getArgs
local sparseIpairs = require('Module:TableTools').sparseIpairs

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function convert(args)
	local filter = {}
	local numberedParams = {}
	for arg, val in pairs(args) do
		if arg == tostring(arg) and arg:match("_convert_prefix") then
			filter[val] = {}
	end end
	for arg, val in pairs(args) do
		if arg == tonumber(arg) then
			mw.log(arg .. " is a number")
			numberedParams[#numberedParams + 1] = val
		else
			mw.log(arg .. " is not a number")
			for prefix, _ in pairs(filter) do
				mw.log(arg, prefix)
				if arg:match(prefix) then
					mw.log(arg)
					if arg == prefix then
						filter[prefix][0] = val
					else
						local prefixnum = arg:match(prefix .. "(%d)")
						if prefixnum then
							filter[prefix][tonumber(prefixnum)] = val
	end end end end end end
	for _, values in pairs(filter) do
		for _, val in sparseIpairs(values) do
			numberedParams[#numberedParams + 1] = val
	end end
	return numberedParams
end

function p._main(args)
	local markup = "{{" .. args._template
	local convertedArgs = convert(args)
	for i, val in ipairs(convertedArgs) do
		markup = markup .. "|" .. i .. "=" .. val
	end
	return markup .. "}}"
end
return p