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

(back to the old "no" value, per talk)
(simplify/optimise)
Line 10: Line 10:
 
     }
 
     }
  
     -- Allow arguments to override defaults.
+
     -- Allow arguments to override defaults. Arguments are taken from
     -- 'any' tracks the presence of any arguments at all.
+
     -- the parent frame; other arguments are ignored.
    local args = frame.args
+
     for k,v in pairs(frame:getParent().args) do
    local any = false
 
     for k,v in pairs(args) do
 
        any = true
 
 
         retvals[k] = v
 
         retvals[k] = v
 
     end
 
     end
    -- If there are no arguments, try and get them from the parent frame.
 
    if any == false then
 
        local pframe = frame:getParent()
 
        args = pframe.args
 
        for k,v in pairs(args) do
 
            retvals[k] = v
 
        end
 
    end   
 
  
 
     val = args[1]
 
     val = args[1]
Line 37: Line 26:
 
     val = val:match'^%s*(.*%S)' or ''  -- Trim whitespace.
 
     val = val:match'^%s*(.*%S)' or ''  -- Trim whitespace.
  
 +
    -- Cases are ordered by (probable) likelihood of use.
 
     if val == '' then
 
     if val == '' then
 
         return retvals['blank'] or retvals['no']
 
         return retvals['blank'] or retvals['no']
     elseif val == 'n' or val == 'no' or tonumber(val) == 0 then
+
     elseif val == 'yes' then
 +
        return retvals['yes']
 +
    elseif val == 'no' then
 
         return retvals['no']
 
         return retvals['no']
     elseif val == 'y' or val == 'yes' or tonumber(val) == 1 then
+
     elseif val == 'y' then
 
         return retvals['yes']
 
         return retvals['yes']
 +
    elseif val == 'n' then
 +
        return retvals['no']
 
     elseif val == '¬' then
 
     elseif val == '¬' then
 
         return retvals['¬']
 
         return retvals['¬']
 +
    elseif tonumber(val) == 1 then
 +
        return retvals['yes']
 +
    elseif tonumber(val) == 0 then
 +
        return retvals['no']
 
     else
 
     else
 
         return retvals['def'] or retvals['yes']
 
         return retvals['def'] or retvals['yes']

Revision as of 05:09, 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. Arguments are taken from
    -- the parent frame; other arguments are ignored.
    for k,v in pairs(frame:getParent().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.

    -- Cases are ordered by (probable) likelihood of use. 
    if val == '' then
        return retvals['blank'] or retvals['no']
    elseif val == 'yes' then
        return retvals['yes']
    elseif val == 'no' then
        return retvals['no']
    elseif val == 'y' then
        return retvals['yes']
    elseif val == 'n' then
        return retvals['no']
    elseif val == '¬' then
        return retvals['¬']
    elseif tonumber(val) == 1 then
        return retvals['yes']
    elseif tonumber(val) == 0 then
        return retvals['no']
    else
        return retvals['def'] or retvals['yes']
    end
end

return p