Module:Yesno/doc: Difference between revisions

From DynamicPageList3 Manual
Content added Content deleted
(Removed page from translation)
m (Undo revision 4681965 by Shirayuki (talk))
Line 1: Line 1:
<noinclude><!--
<noinclude><!--
-->{{#ifeq:{{SUBPAGENAME}}|doc||{{Documentation subpage}}}}<!--
-->{{#ifeq:{{SUBPAGENAME}}|doc||{{Documentation subpage}}}}<!--
--><!--
--><languages /><!--
--></noinclude>{{#switch:
--></noinclude>{{#switch:<translate></translate>
| =
| =
<includeonly>{{Languages|Module:Yesno/doc}}</includeonly>
<includeonly>{{Languages|Module:Yesno/doc}}</includeonly>
Line 11: Line 11:
{{Module rating|release}}
{{Module rating|release}}
{{Module rating|protected}}
{{Module rating|protected}}
This module provides a consistent interface for processing boolean or boolean-style string input.
<translate><!--T:1--> This module provides a consistent interface for processing boolean or boolean-style string input.</translate>
While Lua allows the <code>true</code> and <code>false</code> boolean values, wikicode templates can only express boolean values through strings such as "1", "0", "yes", "no", etc.
<translate><!--T:2--> While Lua allows the <tvar name=1><code>true</code></tvar> and <tvar name=2><code>false</code></tvar> boolean values, wikicode templates can only express boolean values through strings such as <tvar name=3>"1"</tvar>, <tvar name=4>"0"</tvar>, <tvar name=5>"yes"</tvar>, <tvar name=6>"no"</tvar>, etc.</translate>
This module processes these kinds of strings and turns them into boolean input for Lua to process.
<translate><!--T:3--> This module processes these kinds of strings and turns them into boolean input for Lua to process.</translate>
It also returns <code>nil</code> values as <code>nil</code>, to allow for distinctions between <code>nil</code> and <code>false</code>.
<translate><!--T:4--> It also returns <tvar name=1><code>nil</code></tvar> values as <tvar name=1><code>nil</code></tvar>, to allow for distinctions between <tvar name=1><code>nil</code></tvar> and <tvar name=2><code>false</code></tvar>.</translate>
The module also accepts other Lua structures as input, i.e. booleans, numbers, tables, and functions.
<translate><!--T:5--> The module also accepts other Lua structures as input, i.e. booleans, numbers, tables, and functions.</translate>
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.
<translate><!--T:6--> If it is passed input that it does not recognise as boolean or <tvar name=1><code>nil</code></tvar>, it is possible to specify a default value to return.</translate>
<translate>
== Syntax ==
== Syntax == <!--T:33-->
</translate>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
yesno(value, default)
yesno(value, default)
</syntaxhighlight>
</syntaxhighlight>


<code>value</code> is the value to be tested.
<translate><!--T:7--> <tvar name=1><code>value</code></tvar> is the value to be tested.</translate>
Boolean input or boolean-style input (see below) always evaluates to either <code>true</code> or <code>false</code>, and <code>nil</code> always evaluates to <code>nil</code>.
<translate><!--T:8--> Boolean input or boolean-style input (see below) always evaluates to either <tvar name=1><code>true</code></tvar> or <tvar name=2><code>false</code></tvar>, and <tvar name=3><code>nil</code></tvar> always evaluates to <tvar name=3><code>nil</code></tvar>.</translate>
Other values evaluate to <code>default</code>.
<translate><!--T:9--> Other values evaluate to <tvar name=1><code>default</code></tvar>.</translate>
<translate>
== Usage ==
== Usage == <!--T:10-->
First, load the module. Note that it can only be loaded from other Lua modules, not from normal wiki pages.
</translate>
For normal wiki pages you can use {{tlx|yesno}} instead.
<translate><!--T:11--> First, load the module. Note that it can only be loaded from other Lua modules, not from normal wiki pages.</translate>
<translate><!--T:12--> For normal wiki pages you can use <tvar name=1>{{tlx|yesno}}</tvar> instead.</translate>


<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
Line 33: Line 37:
</syntaxhighlight>
</syntaxhighlight>


Some input values always return <code>true</code>, and some always return <code>false</code>.
<translate><!--T:13--> Some input values always return <tvar name=1><code>true</code></tvar>, and some always return <tvar name=2><code>false</code></tvar>.</translate>
<code>nil</code> values always return <code>nil</code>.
<translate><!--T:14--> <tvar name=1><code>nil</code></tvar> values always return <tvar name=1><code>nil</code></tvar>.</translate>


<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
-- These always return true:
-- <translate nowrap><!--T:15--> These always return <tvar name=1>true</tvar>:</translate>
yesno('yes')
yesno('yes')
yesno('y')
yesno('y')
Line 46: Line 50:
yesno(true)
yesno(true)


-- These always return false:
-- <translate nowrap><!--T:16--> These always return <tvar name=1>false</tvar>:</translate>
yesno('no')
yesno('no')
yesno('n')
yesno('n')
Line 55: Line 59:
yesno(false)
yesno(false)


-- A nil value always returns nil:
-- <translate nowrap><!--T:17--> A <tvar name=1>nil</tvar> value always returns <tvar name=1>nil</tvar>:</translate>
yesno(nil)
yesno(nil)
</syntaxhighlight>
</syntaxhighlight>
<translate>
<!--T:18-->
String values are converted to lower case before they are matched:
String values are converted to lower case before they are matched:
</translate>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
-- These always return true:
-- <translate nowrap><!--T:19--> These always return <tvar name=1>true</tvar>:</translate>
yesno('Yes')
yesno('Yes')
yesno('YES')
yesno('YES')
Line 67: Line 74:
yesno('tRuE')
yesno('tRuE')


-- These always return false:
-- <translate nowrap><!--T:20--> These always return <tvar name=1>false</tvar>:</translate>
yesno('No')
yesno('No')
yesno('NO')
yesno('NO')
Line 75: Line 82:
</syntaxhighlight>
</syntaxhighlight>


You can specify a default value if <code>yesno</code> receives input other than that listed above.
<translate><!--T:21--> You can specify a default value if <tvar name=1><code>yesno</code></tvar> receives input other than that listed above.</translate>
If you don't supply a default, the module will return <code>nil</code> for these inputs.
<translate><!--T:22--> If you don't supply a default, the module will return <tvar name=1><code>nil</code></tvar> for these inputs.</translate>


<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
-- These return nil:
-- <translate nowrap><!--T:23--> These return <tvar name=1>nil</tvar>:</translate>
yesno('foo')
yesno('foo')
yesno({})
yesno({})
Line 85: Line 92:
yesno(function() return 'This is a function.' end)
yesno(function() return 'This is a function.' end)


-- These return true:
-- <translate nowrap><!--T:24--> These return <tvar name=1>true</tvar>:</translate>
yesno('foo', true)
yesno('foo', true)
yesno({}, true)
yesno({}, true)
Line 91: Line 98:
yesno(function() return 'This is a function.' end, true)
yesno(function() return 'This is a function.' end, true)


-- These return "bar":
-- <translate nowrap><!--T:25--> These return <tvar name=1>"bar"</tvar>:</translate>
yesno('foo', 'bar')
yesno('foo', 'bar')
yesno({}, 'bar')
yesno({}, 'bar')
Line 97: Line 104:
yesno(function() return 'This is a function.' end, 'bar')
yesno(function() return 'This is a function.' end, 'bar')
</syntaxhighlight>
</syntaxhighlight>
<translate>
<!--T:26-->
Note that the blank string also functions this way:
Note that the blank string also functions this way:
</translate>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
yesno('') -- Returns nil.
yesno('') -- <translate nowrap><!--T:27--> Returns <tvar name=1>nil</tvar>.</translate>
yesno('', true) -- Returns true.
yesno('', true) -- <translate nowrap><!--T:28--> Returns <tvar name=1>true</tvar>.</translate>
yesno('', 'bar') -- Returns "bar".
yesno('', 'bar') -- <translate nowrap><!--T:29--> Returns <tvar name=1>"bar"</tvar>.</translate>
</syntaxhighlight>
</syntaxhighlight>


Although the blank string usually evaluates to <code>false</code> in wikitext, it evaluates to <code>true</code> in Lua.
<translate><!--T:30--> Although the blank string usually evaluates to <tvar name=1><code>false</code></tvar> in wikitext, it evaluates to <tvar name=2><code>true</code></tvar> in Lua.</translate>
This module prefers the Lua behaviour over the wikitext behaviour.
<translate><!--T:31--> This module prefers the Lua behaviour over the wikitext behaviour.</translate>
If treating the blank string as <code>false</code> is important for your module, you will need to remove blank arguments at an earlier stage of processing.
<translate><!--T:32--> If treating the blank string as <tvar name=1><code>false</code></tvar> is important for your module, you will need to remove blank arguments at an earlier stage of processing.</translate>
<includeonly>{{Sandbox other||
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
<!-- Categories below this line; interwikis at Wikidata -->

Revision as of 13:12, 2 July 2021

<languages />Script error: No such module "Template translation".