Module:Yesno

-- --- Yesno module for processing of boolean-like wikitext input. -- --  It works similarly to the Yesno Wikipedia --  template. This module is a consistent Lua interface for wikitext -- input from templates. -- --  Wikitext markup used by MediaWiki templates only permit -- string parameters like `"0"`, `"yes"`, `"no"` etc. As Lua -- has a boolean primitive type, Yesno converts this -- wikitext into boolean output for Lua to process. -- --  @script             yesno -- @release            stable -- @author             Dessamator -- @attribution        ATDT -- @attribution        Mr. Stradivarius -- @attribution        Other Wikipedia contributors -- @see                Original module on --                      Wikipedia -- @see                Test cases for this --                      module -- @param              {?boolean|string} value Wikitext boolean-style --                     or Lua boolean input. --                      * Truthy wikitext input (`'yes'`, `'y'`, `'1'`, --                      `'t'` or `'on'`) produces `true` as output. --                      * The string representations of Lua's true --                     boolean value (`'true'`) also produces `true`. --                      * Falsy wikitext input (`'no'`, `'n'`, `'0'`, --                      `'f'` or `'off'`) produces `false` as output. --                      * The string representation of Lua's false --                     boolean value (`'false'`) also produces `false`. --                      * Localised text meaning `'yes'` or `'no'` also --                     evaluate to `true` or `false` respectively. -- @param[opt]         {?boolean|string} default Output to return if --                      the Yesno `value` input is unrecognised. -- @return             {?boolean} Boolean output corresponding to --                      `val`: --                      * The strings documented above produce a --                      boolean value. --                      * A `nil` value produces an output of `nil`. --                     As this is falsy, additional logic may be needed --                     to treat missing template parameters as truthy. --                      * Unrecognised values return the `default` --                     parameter. Blank strings are a key example --                     of Yesno's unrecognised values and can evaluate --                     to `true` if there is a default value. local lower = mw.ustring.lower local msg = mw.message.new

return function(value, default) value = type(value) == 'string' and lower(value) or value

local yes = lower(msg('htmlform-yes'):plain) local no = lower(msg('htmlform-no'):plain) local en_yes = lower(msg('htmlform-yes'):inLanguage('en'):plain) local en_no = lower(msg('htmlform-no'):inLanguage('en'):plain)

if value == nil then return nil

elseif value == true or value == yes or value == en_yes or value == 'y'       or value == 'true' or value == 't'       or value == 'on' or tonumber(value) == 1 then return true

elseif value == false or value == no       or value == en_no or value == 'n'       or value == 'false' or value == 'f'       or value == 'off' or tonumber(value) == 0 then return false

else return default end end --