Module:Yesno
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