Content deleted Content added
No edit summary Tags: Reverted Mobile edit Mobile web edit |
transclude |
||
(31 intermediate revisions by 21 users not shown) | |||
Line 1:
<noinclude>{{pp|small=yes}}
</noinclude>{{used in system}}
{{Module rating|protected}}
{{cascade-protected template|page=module}}
This module provides a consistent interface for processing boolean or boolean-style string input. While Lua allows the <code>true</code> and <code>false</code> boolean values, wikicode templates can only express boolean values through strings such as "yes", "no", etc. This module processes these kinds of
== Syntax ==
Line 25 ⟶ 27:
yesno('true')
yesno('t')
yesno('on')
yesno('1')
yesno(1)
Line 34 ⟶ 37:
yesno('false')
yesno('f')
yesno('off')
yesno('0')
yesno(0)
Line 40 ⟶ 44:
-- A nil value always returns nil:
yesno(nil)
yesno()
</syntaxhighlight>
Line 65 ⟶ 70:
<syntaxhighlight lang="lua">
-- These return nil:
yesno(nil)
yesno('foo')
yesno({})
yesno(5)
yesno('')
yesno(function() return 'This is a function.' end)
yesno(nil, true)
Line 76 ⟶ 83:
yesno({}, true)
yesno(5, true)
yesno(function() return 'This is a function.' end, true)
Line 82 ⟶ 90:
yesno({}, 'bar')
yesno(5, 'bar')
yesno(function() return 'This is a function.' end, 'bar')
</syntaxhighlight>▼
<syntaxhighlight lang="lua">▼
▲yesno('', true) -- Returns true.
▲yesno('', 'bar') -- Returns "bar".
</syntaxhighlight>
Line 95 ⟶ 97:
===Handling nil results===
By definition:
yesno(nil) -- Returns nil.
yesno('foo') -- Returns nil.
Line 106 ⟶ 108:
To get the binary <syntaxhighlight lang="lua" inline>true/false</syntaxhighlight>-only values, use code like:
<syntaxhighlight lang="lua">
myvariable = yesno(value
myvariable = yesno(value
myvariable = yesno('foo') or false -- Unknown string returns nil, result is false.
myvariable = yesno('foo', true) or false -- Default value (here: true) applies, result is true.
▲</syntaxhighlight>
Better suggestions:
▲<syntaxhighlight lang="lua">
local myvariable = yesno(value)
if myvariable == nil then -- value is nil or an unrecognized string
myvariable = true
end
-- more efficient when value is nil, but more verbose
-- (note the default result has to be written twice)
local myvariable
if value == nil then
myvariable = true
else
myvariable = yesno(value, true)
end
</syntaxhighlight><!--
Line 115 ⟶ 134:
[[Category:Lua metamodules]]
}}</includeonly>
<noinclude>
[[Category:Module documentation pages]]
</noinclude>
|