Module:Yesno

-- -- Function allowing for consistent treatment of boolean-like wikitext input. -- -- Based on  -- see page history there for contributors if not _G.mwLogFuncChanged then local oldLog = mw.log mw.log = function(...) local trace = debug.traceback('', 2) return oldLog((trace:gsub('\nstack traceback:\n', ):match('^\t([^\n<>]+):')..':'):gsub('\t%(tail call%): %?', ), ...) end mw.logObject = function(...) local trace = (debug.traceback(, 2):gsub('\nstack traceback:\n', ):match('^\t([^\n<>]+):')..':'):gsub('\t%(tail call%): %?', '') return oldLog(trace, mw.dumpObject(...)) end 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