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.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(getCodeLocation, allToString(...)) end function mw.logObject(...) return oldLog(getCodeLocation, 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