Module:Yesno: Difference between revisions

From Path of Exile Wiki
Jump to navigation Jump to search
en>Mr. Stradivarius
(edit inaccurate comment)
en>Mr. Stradivarius
(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 12:23, 20 September 2013

Module documentation[view] [edit] [history] [purge]


This is a meta module.

This module is meant to be used only by other modules. It should not be invoked in wikitext.

This module was adapted from Module:Yesno on Wikipedia.
Adaptation is noted for reference and attribution only. This module may differ from the original in function or in usage. The documentation on Wikipedia may be helpful in understanding this module.


-- 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