Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:GetParameters

From Net 7 Portal Wiki

Module:GetParameters/doc

From Wikipedia, see:

This module is a dependency of Module:String2, see the documentation there.

Usage

{{#invoke:GetParameters|function_name|param=1|param=2}}

The above doc is transcluded from Module:GetParameters/doc. (edit | history)
Add categories to the /doc subpage, not here. Subpages of this template.


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