Jump to content
Search

The new Ubuntu Wiki is live. Legacy content may be unavailable and page links may have changed. Read the announcement on Discourse.

Module:Yesno

From Ubuntu Wiki

Module:Yesno normalizes boolean-like inputs from MediaWiki frame arguments into explicit Lua booleans (true or false) or a fallback value.

Usage

Syntax

local yesno = require('Module:Yesno')
local bool = yesno(value, default)

Behavior Matrix

Input Type Recognized Values Return Value
Boolean true / false Pass-through boolean
Truthy Strings "yes", "y", "true", "t", "1", "on"
(Case-insensitive, leading/trailing spaces ignored)
true
Falsy Strings "no", "n", "false", "f", "0", "off"
(Case-insensitive, leading/trailing spaces ignored)
false
Numbers 1 / 0 true / false
Unrecognized / Nil Any other string, number, table, or nil default parameter value (or nil if omitted)

Examples

local yesno = require('Module:Yesno')

yesno('yes')           -- returns true
yesno('  OFF  ')       -- returns false
yesno('unknown')       -- returns nil
yesno('unknown', true) -- returns true
yesno(nil, false)      -- returns false

-- Helper function to standardize treatment of boolean-like wikitext input.

return function (val, default)
    if type(val) == 'boolean' then return val end
    if type(val) == 'number' then
        if val == 1 then return true end
        if val == 0 then return false end
    end
    if type(val) ~= 'string' then return default end
    
    val = val:lower():match('^%s*(.-)%s*$')
    if val == '' then return default end
    
    if val == '1' or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' then
        return true
    elseif val == '0' or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' then
        return false
    end
    return default
end