Module:Yesno

-- -- Function allowing for consistent treatment of boolean-like wikitext input. -- -- Based on  -- see page history there for contributors mw.oldLog = mw.log mw.oldLogObject = mw.logObject

local logLevel = 2 mw.log = function(...) local function newLog(...) return mw.oldLog(getCodeLocation(logLevel), mw.allToString(...)) end mw.log = newLog newLog(...) logLevel = 1 end local logObjectLevel = 2 mw.logObject = function(...) local function newLog(...) return mw.oldLog(getCodeLocation(logObjectLevel), mw.dumpObject(...)) end mw.logObject = newLog newLog(...) logObjectLevel = 1 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