Module:ArgsUtil

From Survivors of Atlantis Wiki
Jump to navigation Jump to search

Documentation for this module may be created at Module:ArgsUtil/doc

local p = {}

--converts arguments passed without a name ({value} instead of {name = value})
--to the expected value while keeping the arguments that were named
function p.fix_unnamed_params(args, expected)
	local i = 1
	for arg, _ in ipairs(expected) do
		if args[expected[arg]] == nil then
			args[expected[arg]] = args[i]
			i = i + 1
		end
	end
	return args
end

--combines fix_unnamed_params and merge
function p.unnamed_merge(expected)
	return p.fix_unnamed_params(p.merge(), expected)
end

--combines fix_unnamed_params and overwrite
function p.unnamed_overwrite(expected)
	return p.fix_unnamed_params(p.overwrite(), expected)
end

--thanks river
function p.merge()
	local f = mw.getCurrentFrame()
	local origArgs = f.args
	local parentArgs = f:getParent().args

	local args = {}
	
	for k, v in pairs(origArgs) do
		v = mw.text.trim(tostring(v))
		if v ~= '' then
			args[k] = v
		end
	end
	
	for k, v in pairs(parentArgs) do
		v = mw.text.trim(v)
		if v ~= '' then
			args[k] = v
		end
	end
	
	return args
end

--thanks river
function p.overwrite()
	local f = mw.getCurrentFrame()
	local origArgs = f.args
	local parentArgs = f:getParent().args

	local args = {}
	
	for k, v in pairs(parentArgs) do
		v = mw.text.trim(v)
		args[k] = v
	end
	
	for k, v in pairs(origArgs) do
		v = mw.text.trim(tostring(v))
		args[k] = v
	end
	
	return args
end

return p