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

(edit inaccurate comment)
(change to a simpler Lua-only version)
Line 1: Line 1:
local p = {}
+
-- This is a simplified, Lua-only replacement for the template {{yesno}}. It provides a consistent
 
+
-- interface for users entering boolean or boolean-style input.
function p.yesno(frame)
+
return function (val, default)
 
+
     val = type(val) == 'string' and mw.ustring.lower(val) or val -- put in lower case
     -- defaults
+
     if not val or val == 'no' or val == 'n' or val == 'false' or tonumber(val) == 0 then
     local retvals = {
+
         return false
        yes  = "yes",
+
    elseif val == true or val == 'yes' or val == 'y' or val == 'true' or tonumber(val) == 1 then
        no   = "",
+
         return true
        ["¬"] = ""
+
    elseif default ~= nil then
    }
+
         return default
 
 
    -- 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
 
     else
        -- We're being called from another module or from the debug console, so assume
+
         return true
        -- 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
 
end
 
end
 
return p
 

Revision as of 07:23, 20 September 2013

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

-- This is a simplified, Lua-only replacement for the template {{yesno}}. It provides a consistent
-- interface for users entering boolean or boolean-style input.
return function (val, default)
    val = type(val) == 'string' and mw.ustring.lower(val) or val -- put in lower case
    if not val or val == 'no' or val == 'n' or val == 'false' or tonumber(val) == 0 then
        return false
    elseif val == true or val == 'yes' or val == 'y' or val == 'true' or tonumber(val) == 1 then
        return true
    elseif default ~= nil then
        return default
    else
        return true
    end
end