Module:ProcessArgs

From SWGoH Wiki
Jump to navigationJump to search

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

local p = {}
function p.norm( origArgs )
	if type( origArgs ) ~= 'table' then
		origArgs = mw.getCurrentFrame():getParent().args
	end
	local args = {}
	
	for k, v in pairs( origArgs ) do
		v = mw.text.trim( tostring( v ) )
		if v ~= '' then
			args[k] = v
		end
	end
	
	return args
end

function p.merge( origArgs, parentArgs, norm )
	if type( origArgs ) ~= 'table' then
		norm = origArgs
		local f = mw.getCurrentFrame()
		origArgs = f.args
		parentArgs = f:getParent().args
	end
	local args = {}
	
	for k, v in pairs( origArgs ) do
		v = mw.text.trim( tostring( v ) )
		if not norm or norm and v ~= '' then
			args[k] = v
		end
	end
	
	for k, v in pairs( parentArgs ) do
		v = mw.text.trim( v )
		if ( not norm or norm and v ~= '' ) and not args[k] then
			args[k] = v
		end
	end
	
	return args
end

-- Usage: {{#invoke:ProcessArgs|passThrough|<template name>}}
-- Calls the provided template with all the arguments available in the current context.
-- For instance, if the template {{A}} invokes this with a template 'B', and a page transcludes {{A}} and supplies arguments to it ({{A|arg1|arg2}}, calling this will return the equivalent of {{B|arg1|arg2}}
function p.passThrough( frame )
	return frame:expandTemplate{title = frame.args[1], args = mw.getCurrentFrame():getParent().args}
end

return p