Module:GetParameters
Template loop detected: Template:Module other
Usage
getParameters
Takes 2 required arguments, frame_args
and arg_list
. Parses a frame's arguments, returning either the provided named arguments in arg_list
if found or the positional parameters instead if not. This is designed to work around the stripping of values that takes place for defined parameters which could be important.
As an example, the calls <syntaxhighlight lang=lua inline>getParameters({"a", "b", "c"}, {"x", "y"})</syntaxhighlight> and <syntaxhighlight lang=lua inline>getParameters({x="a", y="b", z="c"}, {"x", "y"})</syntaxhighlight> would both give back <syntaxhighlight lang=lua inline>{x="a", y="b"}</syntaxhighlight>.
getBoolean
Takes 1 required argument boolean_str
. Turns the input into a true/false boolean value based on the input. Will error if given anything other than a string or boolean value.
defined
To be invoked from inside a template instead of a module. Determines if a certain parameter is defined in the parent frame's arguments.
See also
local p = {} --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function p.getParameters( frame_args, arg_list ) local new_args = {}; local index = 1; local value; for i,arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args; end --[[ Helper Function to interpret boolean strings ]] function p.getBoolean( boolean_str ) local boolean_value; if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower(); if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false; else boolean_value = true; end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str; else error( 'No boolean value found' ); end return boolean_value end function p.defined(frame) local arg = mw.text.trim(frame.args[1]) --if arg == tostring(tonumber(arg)) then -- undesired result for '-0' -- arg = tonumber(arg) --end --if mw.ustring.find(arg, '^%s*-?[1-9][0-9]*%s*$') ~= nil or arg == '0' then -- arg = tonumber(arg) --end if mw.ustring.find(arg, '^-?[1-9][0-9]*$') ~= nil then arg = tonumber(arg) elseif arg == '0' then arg = 0 end return frame:getParent().args[arg] ~= nil end return p