Content deleted Content added
m Reverted edits by 154.177.239.58 (talk): unexplained content removal (HG) (3.4.10) |
transclude |
||
(32 intermediate revisions by 22 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 strings and turns them into boolean input for Lua to process. It also returns <code>nil</code> values as <code>nil</code>, to allow for distinctions between <code>nil</code> and <code>false</code>. 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 <code>nil</code>, it is possible to specify a default value to return.
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>
|