Jump to content

Module:Yesno/sandbox

From Wikipedia, the free encyclopedia
--- Allows for consistent treatment of boolean-like wikitext input. --- Uses lookup table, instead of if-elseif-else statement, for efficiency. -- -- If your wiki uses non-ASCII characters for any of "yes", "no", etc., you -- should replace "string.lower" with "mw.ustring.lower" in the -- following line. NOTE: It is _much_ slower. local LOWER = string.lower local TO_NUMBER = tonumber local TYPE = type local BOOLEAN_MAP = {  yes = true, y = true, ['true'] = true, t = true, on = true, ['1'] = true,  no = false, n = false, ['false'] = false, f = false, off = false, ['0'] = false } return function (value, defaultResponse)  if value == nil then  return nil  end   local valueType = TYPE(value)   if valueType == 'boolean' then  return value  elseif valueType == 'string' then  local lookupResult = BOOLEAN_MAP[LOWER(value)]  if lookupResult ~= nil then  return lookupResult  end  end   -- Numeric check works for both numbers and numeric strings.  local number = TO_NUMBER(value)  if number == 1 then  return true  elseif number == 0 then  return false  end   return defaultResponse end