Module:Convert: Difference between revisions

From Random Island Wiki
Jump to navigation Jump to search
>WOSlinker
No edit summary
>WOSlinker
No edit summary
Line 3: Line 3:


local p = {}
local p = {}
function convert(in_val,in_unit,out_unit)
    local out_val;
    if in_unit .. "|" .. out_unit == "°C|°F" then
        out_val = in_val * 9 / 5 + 32;
    elseif in_unit .. "|" .. out_unit == "°F|°C" then
        out_val = (in_val - 32) * 5 / 9;
    elseif in_unit .. "|" .. out_unit == "kg|lb" then
        out_val = in_val * 2.20462262;
    end
    return out_val
end


-- This is the top-level function called by {{convert}}.
-- This is the top-level function called by {{convert}}.
Line 25: Line 38:
         in_unit  = args[2];
         in_unit  = args[2];
         out_unit = args[3];
         out_unit = args[3];
         if in_unit .. "|" .. out_unit == "°C|°F" then
         out_val1 = convert(in_val,in_unit,out_unit);
            out_val1 = in_val1 * 9 / 5 + 32;
        elseif in_unit .. "|" .. out_unit == "°F|°C" then
            out_val1 = (in_val1 - 32) * 5 / 9;
        elseif in_unit .. "|" .. out_unit == "kg|lb" then
            out_val1 = in_val1 * 2.20462262;
        end
          
          
         if disp == "or" then
         if disp == "or" then

Revision as of 13:35, 2 September 2012

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

--require "mw.text"
--require "mw.page"

local p = {}

function convert(in_val,in_unit,out_unit)
    local out_val;
    if in_unit .. "|" .. out_unit == "°C|°F" then
        out_val = in_val * 9 / 5 + 32;
    elseif in_unit .. "|" .. out_unit == "°F|°C" then
        out_val = (in_val - 32) * 5 / 9;
    elseif in_unit .. "|" .. out_unit == "kg|lb" then
        out_val = in_val * 2.20462262;
    end
    return out_val
end


-- This is the top-level function called by {{convert}}.
function p.main(frame, config, args)
    local pframe = frame:getParent();
    local args = pframe.args; -- the arguments passed TO the {{convert}} template, in the wikitext that instantiates the template
    local config = frame.args; -- the arguments passed BY the {{convert}} template, in the wikitext of the template itself
    local output;
    
    in_val1 = tonumber(args[1]);
    in_val2 = tonumber(args[3]);
    disp = args["disp"];


    if in_val1 == nil then
        error ("Module:Convert value not supplied");
        return ""
    end

    if in_val2 == nil then
        -- Single value supplied
        in_unit  = args[2];
        out_unit = args[3];
        out_val1 = convert(in_val,in_unit,out_unit);
        
        if disp == "or" then
            output = in_val1 .. " " .. in_unit .. " or " .. out_val1 .. " " .. out_unit;
        elseif disp == "sqbr" then
            output = in_val1 .. " " .. in_unit .. " <nowiki>[</nowiki>" .. out_val1 .. " " .. out_unit .. "<nowiki>]</nowiki>";
        else
            output = in_val1 .. " " .. in_unit .. " (" .. out_val1 .. " " .. out_unit .. ")";
        end
    else
        -- Two values supplied
        range    = args[2];
        in_unit  = args[4];
        out_unit = args[5];
    end
    
    --error ("Module:Convert is not implemented");
    return output    
end

return p