Toggle menu
45
232
3
1.3K
EmrysSMP Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Yesno: Difference between revisions

From EmrysSMP Wiki
Undid revision 948472533 by [[Special:Contributions/w>Vogone|w>Vogone]] ([[User talk:w>Vogone|talk]])
 
m top: use string instead of mw.ustring, replaced: mw.ustring → string
Line 1: Line 1:
-- Imported from: https://en.wikipedia.org/wiki/Module:Yesno
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
-- It works similarly to the template {{yesno}}.


return function (val, default)
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
    -- 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
    -- should replace "val:lower()" with "string.lower(val)" in the
-- following line.
    -- following line.
val = type(val) == 'string' and val:lower() or val
    val = type(val) == 'string' and val:lower() or val
if val == nil then
    if val == nil then
return nil
        return nil
elseif val == true  
    elseif val == true
or val == 'yes'
            or val == 'yes'
or val == 'y'
            or val == 'y'
or val == 'true'
            or val == 'true'
or val == 't'
            or val == 't'
or val == 'on'
            or val == 'on'
or tonumber(val) == 1
            or val == 'ja'
then
            or tonumber(val) == 1
return true
    then
elseif val == false
        return true
or val == 'no'
    elseif val == false
or val == 'n'
            or val == 'no'
or val == 'false'
            or val == 'n'
or val == 'f'
            or val == 'false'
or val == 'off'
            or val == 'f'
or tonumber(val) == 0
            or val == 'off'
then
            or val == 'nein'
return false
            or tonumber(val) == 0
else
    then
return default
        return false
end
    else
        return default
    end
end
end

Revision as of 06:52, 24 October 2024

Module:Yesno provides a consistent interface for processing boolean or boolean-style string input. While Lua allows the true and false boolean values, wikicode templates can only express boolean values through strings such as "yes", "no", etc. This module processes these kinds of strings and turns them into boolean input for Lua to process. It also returns nil values as nil, to allow for distinctions between nil and false. The module also accepts other Lua structures as input, i.e. booleans, numbers, tables, and functions. If it is passed input that it does not recognise as boolean or nil, it is possible to specify a default value to return.


-- Imported from: https://en.wikipedia.org/wiki/Module:Yesno

-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.

return function (val, default)
    -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
    -- should replace "val:lower()" with "string.lower(val)" in the
    -- following line.
    val = type(val) == 'string' and val:lower() or val
    if val == nil then
        return nil
    elseif val == true
            or val == 'yes'
            or val == 'y'
            or val == 'true'
            or val == 't'
            or val == 'on'
            or val == 'ja'
            or tonumber(val) == 1
    then
        return true
    elseif val == false
            or val == 'no'
            or val == 'n'
            or val == 'false'
            or val == 'f'
            or val == 'off'
            or val == 'nein'
            or tonumber(val) == 0
    then
        return false
    else
        return default
    end
end