The wiki has moved!

Visit the new wiki at stationeers-wiki.com The old wiki here at legacy.stationeers-wiki.com will sunset eventually.

Edits made after the 7th of March 6PM EST were NOT carried over to the new server as previously announced right here in this box.

 Actions

Module

Difference between revisions of "Yesno"

From Unofficial Stationeers Wiki

(better code for getting args)
(edit inaccurate comment)
Line 10: Line 10:
 
     }
 
     }
  
     -- Allow arguments to override defaults. Arguments are taken from
+
     -- Allow arguments to override defaults.
    -- the parent frame; other arguments are ignored.
 
 
     local args;
 
     local args;
 
     if frame == mw.getCurrentFrame() then
 
     if frame == mw.getCurrentFrame() then

Revision as of 05:26, 28 March 2013

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

local p = {}

function p.yesno(frame)

    -- defaults
    local retvals = {
        yes   = "yes",
        no    = "",
        ["¬"] = ""
    }

    -- Allow arguments to override defaults.
    local args;
    if frame == mw.getCurrentFrame() then
        -- We're being called via #invoke. If the invoking template passed any args, use
        -- them. Otherwise, use the args that were passed into the template.
        args = frame:getParent().args;
        for k, v in pairs(frame.args) do
            args = frame.args;
            break
        end
    else
        -- We're being called from another module or from the debug console, so assume
        -- the args are passed in directly.
        args = frame;
    end
    
    for k,v in pairs(args) do
        retvals[k] = v
    end

    val = args[1]

    -- First deal with the case if val is nil, then deal with other cases.
    if val == nil then
        return retvals['¬']
    end

    val = val:lower()          -- Make lowercase.
    val = val:match'^%s*(.*%S)' or ''  -- Trim whitespace.

    if val == '' then
        return retvals['blank'] or retvals['no']
    elseif val == 'n' or val == 'no'  or tonumber(val) == 0 then
        return retvals['no']
    elseif val == 'y' or val == 'yes' or tonumber(val) == 1 then
        return retvals['yes']
    elseif val == '¬' then
        return retvals['¬']
    else
        return retvals['def'] or retvals['yes']
    end
end

return p