Module:ProcessArgs

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

-- This method uses the current frame's args (from #invoke), -- unless fromParent is set, then uses the parent frame's args. -- fromParent should only be set in a template wrapper function p.fromParent( origArgs ) local args if type( origArgs ) ~= 'table' then -- Normalize to make sure arg fromParent is non-empty if it exists args = p.norm( mw.getCurrentFrame.args ) if args.fromParent then args = p.norm( mw.getCurrentFrame:getParent.args ) end else args = p.norm( origArgs ) end -- This will always return a table normalized from norm 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

return p