Module:Yesno
Documentation for this module may be created at Module:Yesno/doc
--<pre>
-- Function allowing for consistent treatment of boolean-like wikitext input.
--
-- Based on <https://en.wikipedia.org/wiki/Module:Yesno>
-- see page history there for contributors
if not _G.mwLogFuncChanged then
local oldLog = mw.log
mw.oldLog = oldLog
local function allToString(...)
local t = { ... }
for i = 1, select('#', ...) do
t[i] = tostring(t[i])
end
return table.concat(t, ' ')
end
function mw.log(...)
return oldLog(allToString(...))
end
function mw.logObject(...)
return oldLog(mw.dumpObject(...))
end
_G.mwLogFuncChanged = true
end
local list_t = {
true, 'true', 't', 'tru',
'yes', 'y',
'on',
'valid',
'1', 1
}
local list_f = {
false, 'false', 'f',
'no', 'n',
'not',
'off',
'0', 0
}
return function (val, default, nil_default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
if not nil_default and default then nil_default = default end
val = type(val) == 'string' and val:lower() or val
local function contains(array, value)
for i=1,#array do
if array[i] == value then return true end
end
return false
end
if val == nil then
if nil_default then return nil_default else return nil end
elseif contains(list_t, val) then return true
elseif contains(list_f, val) then return false
else return default
end
end