Difference between revisions of "Module:ProcessArgs"
Jump to navigation
Jump to search
imported>Elaeagnifolia (Created page with "local p = {} function p.norm( origArgs ) if type( origArgs ) ~= 'table' then origArgs = mw.getCurrentFrame():getParent().args end local args = {} for k, v in pairs( or...") |
>Eave m |
||
| (3 intermediate revisions by the same user not shown) | |||
| Line 41: | Line 41: | ||
return args | return args | ||
end | 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 | return p | ||
Latest revision as of 00:21, 27 June 2020
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