Difference between revisions of "Template:LSL Conditional"
Jump to navigation
Jump to search
Search JIRA for related Issues
m |
(Noted caveat in boolean evaluation of LSO-compiled lists: BUG-230728) |
||
(17 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{LSL Header}} __NOTOC__ <noinclude> | {{multi-lang|category=LSL}}{{LSL Header{{#var:lang}}}} __NOTOC__ <noinclude> | ||
<pre> | <pre> | ||
{{LSL_Conditional | {{LSL_Conditional | ||
Line 70: | Line 70: | ||
}} | }} | ||
</div> | </div> | ||
</noinclude><includeonly>{{#vardefine: | </noinclude><includeonly>{{#if: | ||
{{Footnote|handle=OpenSim|The OpenSim LSL compiler will not do this implicitly. You will need to use an explicit check.}} | |||
{{#if:{{#var:history}}{{{history|}}}| | |||
{{#vardefine:history|{{#var:history}}{{PBR}} | |||
{{{history|}}}{{PBR}}}} | |||
}} | |||
{{#if:{{#var:deepnotes}}{{{deepnotes|}}}| | |||
{{#vardefine:deepnotes|{{#var:deepnotes}}{{PBR}} | |||
{{{deepnotes|}}}{{PBR}}}} | |||
}} | |||
{{#if:{{#var:mono}}{{{mono|}}}| | |||
{{#vardefine:mono|{{#var:mono}}{{PBR}} | |||
{{{mono|}}}{{PBR}}}} | |||
}} | |||
{{#if:{{#var:lso}}{{{lso|}}}| | |||
{{#vardefine:lso|{{#var:lso}}{{PBR}} | |||
{{{lso|}}}{{PBR}}}} | |||
}} | |||
{{#vardefine:issues|{{#var:issues}} | |||
{{{issues|}}}}} | |||
{{#vardefine:also_tests|{{#var:also_tests}} | |||
{{{also_tests|}}}}} | |||
{{#if:{{#var:location}}{{{location|}}}| | |||
{{#vardefine:location|{{#var:location}}{{PBR}} | |||
{{{location|}}}{{PBR}}}} | |||
}} | |||
{{#if:{{#var:messaging}}{{{messaging|}}}| | |||
{{#vardefine:messaging|{{#var:messaging}}{{PBR}} | |||
{{{messaging|}}}{{PBR}}}} | |||
}} | |||
}}{{#vardefine:pe_name|{{{statement_end|}}}}}{{#vardefine:pe_desc|{{#var:p_{{#var:pe_name}}_desc}}{{{statement_end_desc|}}}}}{{#vardefine:p1_name|{{{p1_name|}}}}}{{#vardefine:p1_type|{{{p1_type|}}}}}{{#vardefine:p_{{#var:p1_name}}_desc|{{#var:p_{{#var:p1_name}}_desc}}{{{p1_desc|}}}}}{{#vardefine:p2_name|{{{p2_name|}}}}}{{#vardefine:p2_type|{{{p2_type|}}}}}{{#vardefine:p_{{#var:p2_name}}_desc|{{#var:p_{{#var:p2_name}}_desc}}{{{p2_desc|}}}}}{{#vardefine:p3_name|{{{p3_name|}}}}}{{#vardefine:p3_type|{{{p3_type|}}}}}{{#vardefine:p_{{#var:p3_name}}_desc|{{#var:p_{{#var:p3_name}}_desc}}{{{p3_desc|}}}}}{{#vardefine:p4_name|{{{p4_name|}}}}}{{#vardefine:p4_type|{{{p4_type|}}}}}{{#vardefine:p_{{#var:p4_name}}_desc|{{#var:p_{{#var:p4_name}}_desc}}{{{p4_desc|}}}}}{{#vardefine:p5_name|{{{p5_name|}}}}}{{#vardefine:p5_type|{{{p5_type|}}}}}{{#vardefine:p_{{#var:p5_name}}_desc|{{#var:p_{{#var:p5_name}}_desc}}{{{p5_desc|}}}}}{{#vardefine:p6_name|{{{p6_name|}}}}}{{#vardefine:p6_type|{{{p6_type|}}}}}{{#vardefine:p_{{#var:p6_name}}_desc|{{#var:p_{{#var:p6_name}}_desc}}{{{p6_desc|}}}}}{{#vardefine:p7_name|{{{p7_name|}}}}}{{#vardefine:p7_type|{{{p7_type|}}}}}{{#vardefine:p_{{#var:p7_name}}_desc|{{#var:p_{{#var:p7_name}}_desc}}{{{p7_desc|}}}}}{{#vardefine:p8_name|{{{p8_name|}}}}}{{#vardefine:p8_type|{{{p8_type|}}}}}{{#vardefine:p_{{#var:p8_name}}_desc|{{#var:p_{{#var:p8_name}}_desc}}{{{p8_desc|}}}}}{{#vardefine:p9_name|{{{p9_name|}}}}}{{#vardefine:p9_type|{{{p9_type|}}}}}{{#vardefine:p_{{#var:p9_name}}_desc|{{#var:p_{{#var:p9_name}}_desc}}{{{p9_desc|}}}}}{{#vardefine:p10_name|{{{p10_name|}}}}}{{#vardefine:p10_type|{{{p10_type|}}}}}{{#vardefine:p_{{#var:p10_name}}_desc|{{#var:p_{{#var:p10_name}}_desc}}{{{p10_desc|}}}}}{{#vardefine:p11_name|{{{p11_name|}}}}}{{#vardefine:p11_type|{{{p11_type|}}}}}{{#vardefine:p_{{#var:p11_name}}_desc|{{#var:p_{{#var:p11_name}}_desc}}{{{p11_desc|}}}}}{{#vardefine:p12_name|{{{p12_name|}}}}}{{#vardefine:p12_type|{{{p12_type|}}}}}{{#vardefine:p_{{#var:p12_name}}_desc|{{#var:p_{{#var:p12_name}}_desc}}{{{p12_desc|}}}}}{{#vardefine:return_end| {{#if:{{#var:pe_desc}}|{{HoverText|{{#var:pe_name}}|{{#var:pe_desc}}}}|{{#var:pe_name}}}}}}{{#vardefine:name|{{{statement}}}}}{{#vardefine:type|flow control}}{{#vardefine:template|none}}{{#ifeq:{{#var:mode}}|god|{{{{#ifeq:{{#var:mode}}|god|LSL_Generic/god|!}}|}} }}{{#ifeq:{{#var:mode}}|request|{{{{#ifeq:{{#var:mode}}|request|LSL_Generic/request|!}}|}} }}{{#if:{{{deprecated|}}}{{{depreciated|}}}|{{{{#if:{{{deprecated|}}}{{{depreciated|}}}|LSL_Generic/deprecated|!}}|{{{deprecated|}}}{{{depreciated|}}}|}}}}{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}{{#vardefine:self|{{#var:self}}{{{self|}}}}}{{#vardefine:sort|{{#if:{{#var:sort}}|{{#var:sort}}|{{#if:{{{sort|}}}|{{{sort}}}|{{ucfirst:{{#var:name}}}}}}}}}}{{#vardefine:header_footnote|{{{statement_desc|}}}}}{{#vardefine:header_desc|{{{statement_type|}}}}}{{#vardefine:separator|<nowiki>;</nowiki>}}{{#vardefine:header_text|{{LSL_Generic/Text}}}}{{#vardefine:header_title|{{#if:{{{statement_title|}}}|{{{statement_title|}}}|{{LSL_Generic/Title}}}}}}{{#ifeq:{{NAMESPACE}}|Template|<div></div>|<div id="RealTitleBanner" style="display:none;"><span id="RealTitle">{{#var:name}}</span></div>}} __NOTOC__ {{#if:{{#var:self}}|| __NOEDITSECTION__ }} {{#var:header}} | |||
<div id="box"> | <div id="box"> | ||
<h2>{{#var:header_title}}</h2> | <h2>{{#var:header_title}}</h2> | ||
Line 77: | Line 117: | ||
</div></div> | </div></div> | ||
{{#var:extras}}{{{extras|}}}<div id="box"> | {{#var:extras}}{{{extras|}}}<div id="box"> | ||
<h2> | <h2>Specification</h2> | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
{{ | <!--LSL_Constants_Conditional - BEGIN--> | ||
{{#var:spec}}{{{spec|}}}< | <div style="float:left;"> | ||
</div></div>{{#if:{{#if:{{#var:deprecated}}||t}}{{#var:examples}}{{{examples|}}}| | {{{!}} {{Prettytable}} | ||
{{!}}+ '''Conditional Types''' | |||
{{!}}-{{Hl2}} | |||
!Type | |||
!Condition | |||
{{!}}- | |||
{{!}}[[integer]] | |||
{{!}}True if it is not zero. | |||
{{!}}- | |||
{{!}}[[float]] | |||
{{!}}True if it is not zero.{{Footnote|handle=OpenSim}} | |||
{{!}}- | |||
{{!}}[[string]] | |||
{{!}}True if its [[llStringLength|length]] is not zero. | |||
{{!}}- | |||
{{!}}[[key]] | |||
{{!}}True only if it is a valid key and not [[NULL_KEY]]. | |||
{{!}}- | |||
{{!}}[[vector]] | |||
{{!}}True if the vector is not [[ZERO_VECTOR]]. | |||
{{!}}- | |||
{{!}}[[rotation]] | |||
{{!}}True if the rotation is not [[ZERO_ROTATION]]. | |||
{{!}}- | |||
{{!}}[[list]] | |||
{{!}}True if the [[llGetListLength|length]] is not zero. Note that correct behavior is only seen with Mono-compiled scripts; LSO-compiled scripts incorrectly resolve to [[false]] if the list is non-empty: BUG-230728 | |||
{{!}}} | |||
</div> | |||
<!--LSL_Constants_Conditional - END--> | |||
{{#var:spec}}{{PBR}} | |||
{{{spec|}}}{{PBR}} | |||
<div style="clear:left;"></div></div></div>{{#if:{{#if:{{#var:deprecated}}||t}}{{#var:examples}}{{{examples|}}}| | |||
<div id="box"><h2>{{#if:{{#var:T_Examples}}|{{#var:T_Examples}}|Examples}}</h2> | <div id="box"><h2>{{#if:{{#var:T_Examples}}|{{#var:T_Examples}}|Examples}}</h2> | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
{{#var:examples}}{{{examples|}}} | {{#var:examples}}{{{examples|}}} | ||
</div></div>}}{{#if:{{#var:notes}}{{{notes|}}}| | </div></div>}}{{#if:{{#var:notes}}{{{notes|}}}| | ||
<div id="box"><h2> | <div id="box"><h2>Notes</h2> | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
{{#var:notes}}{{{notes|}}} | {{#var:notes}}{{{notes|}}} | ||
<br style="clear:left;"></div></div>}}{{#if:{{#var:helpers}}{{{helpers|}}}| | <br style="clear:left;"></div></div>}}{{#if:{{#var:helpers}}{{{helpers|}}}| | ||
<div id="box"><h2> | <div id="box"><h2>Useful Snippets</h2> | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
{{#var:helpers}}{{{helpers|}}} | {{#var:helpers}}{{{helpers|}}} | ||
</div></div>}}{{#if:{{#var:also_footer}}{{{also_footer|}}}{{#var:also_functions}}{{{also_functions|}}}{{#var:also_events}}{{{also_events|}}}{{#var:also_articles}}{{{also_articles|}}}{{#var:also_tests}}{{{also_tests|}}}{{#var:also_header}}{{{also_header|}}}| | </div></div>}}{{#if:{{#var:also_footer}}{{{also_footer|}}}{{#var:also_functions}}{{{also_functions|}}}{{#var:also_events}}{{{also_events|}}}{{#var:also_articles}}{{{also_articles|}}}{{#var:also_tests}}{{{also_tests|}}}{{#var:also_header}}{{{also_header|}}}| | ||
<div id="box"><h2> | <div id="box"><h2>See Also</h2> | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
{{#if:{{#var:also_header}}{{{also_header|}}}| | {{#if:{{#var:also_header}}{{{also_header|}}}| | ||
{{#var:also_header}}{{{also_header|}}}}}{{#if:{{#var:also_events}}{{{also_events|}}}| | {{#var:also_header}}{{{also_header|}}}}}{{#if:{{#var:also_events}}{{{also_events|}}}| | ||
<h3> | <h3>Events</h3> | ||
{{{!}} | {{{!}} | ||
{{#var:also_events}} | {{#var:also_events}} | ||
{{{also_events|}}} | {{{also_events|}}} | ||
{{!}}} }}{{#if:{{#var:also_functions}}{{{also_functions|}}}| | {{!}}} }}{{#if:{{#var:also_functions}}{{{also_functions|}}}| | ||
<h3> | <h3>Functions</h3> | ||
{{{!}} | {{{!}} | ||
{{#var:also_functions}} | {{#var:also_functions}} | ||
{{{also_functions|}}} | {{{also_functions|}}} | ||
{{!}}} }}{{#if:{{#var:also_tests}}{{{also_tests|}}}| | {{!}}} }}{{#if:{{#var:also_tests}}{{{also_tests|}}}| | ||
<h3> | <h3>Tests</h3> | ||
{{{!}} | {{{!}} | ||
{{#var:also_tests}} | {{#var:also_tests}} | ||
{{{also_tests|}}} | {{{also_tests|}}} | ||
{{!}}} }}{{#if:{{#var:also_articles}}{{{also_articles|}}}| | {{!}}} }}{{#if:{{#var:also_articles}}{{{also_articles|}}}| | ||
<h3> | <h3>Articles</h3> | ||
{{{!}} | {{{!}} | ||
{{#var:also_articles}} | {{#var:also_articles}} | ||
Line 119: | Line 190: | ||
{{!}}} }} | {{!}}} }} | ||
{{#if:{{#var:also_footer}}{{{also_footer|}}}|<br/>{{#var:also_footer}}{{{also_footer|}}}}} | {{#if:{{#var:also_footer}}{{{also_footer|}}}|<br/>{{#var:also_footer}}{{{also_footer|}}}}} | ||
</div></div>}}{{#if:{{#var:location}}{{{ | </div></div>}}{{#if:{{#var:deepnotes}}{{#var:mono}}{{#var:lso}}{{#var:history}}{{#var:also_tests}}{{#var:issues{{#var:direction}}}}{{#var:location}}{{#var:messaging}}{{#var:footnotes}}{{#if:{{#pos:{{#var:moded}}|u}}||1}}{{{signature|}}}{{{haiku|}}}{{{poetry|}}}|<div id="box"> | ||
<div id="box"> | == Deep Notes == | ||
< | <div style="padding: 0.5em"><div> | ||
<div style=" | {{#var:deepnotes}} | ||
{{#var: | </div>{{#if:{{#var:mono}}| | ||
</div></div>}}{{#var:footer}}<span id="sort" style="display:none;">{{#var:sort}}</span>{{#if:{{{self|}}}|| {{#ifeq:{{#var:mode}}|request||{{LSLC|Flow Control|{{#var:sort}}}}}} {{#if:{{#var:examples}}{{{examples|}}}||{{LSLC|Needs Example|{{#var:sort}}}}}} {{#if:{{{cat1|}}}|{{LSLC|{{{cat1}}}|{{#var:sort}}}}}} {{#if:{{{cat2|}}}|{{LSLC|{{{cat2}}}|{{#var:sort}}}}}} {{#if:{{{cat3|}}}|{{LSLC|{{{cat3}}}|{{#var:sort}}}}}} {{#if:{{{cat4|}}}|{{LSLC|{{{cat4}}}|{{#var:sort}}}}}} {{#if:{{{cat5|}}}|{{LSLC|{{{cat5}}}|{{#var:sort}}}}}} {{#if:{{{cat6|}}}|{{LSLC|{{{cat6}}}|{{#var:sort}}}}}} }}</includeonly> | <h4> Mono VM Notes </h4><div> | ||
{{#var:mono}} | |||
</div>}}{{#if:{{#var:lso}}| | |||
<h4> LSO VM Notes </h4><div> | |||
{{#var:lso}} | |||
</div>}}{{#if:{{#var:history}}| | |||
<h4> History </h4><div> | |||
{{#var:history}} | |||
</div>}} | |||
{{Anchor|Issues}}{{LSL_Generic/Issues}}{{#if:{{#var:also_tests}}| | |||
<h3>Tests</h3> | |||
{{{!}} | |||
{{#var:also_tests}} | |||
{{!}}} | |||
}}{{#if:{{#var:location}}| | |||
<h4> Source </h4><div> | |||
{{#var:location}} | |||
</div>}}{{#if:{{#var:messaging}}| | |||
<h4> Messaging </h4><div> | |||
{{#var:messaging}} | |||
</div>}}{{#if:{{#var:footnotes}}| | |||
<h4 style="margin-bottom:0;"> Footnotes </h4> | |||
{{{{#if:{{#var:footnotes}}|Footnotes|!}}|}} | |||
}} | |||
{{#if:{{{haiku|}}}{{{poetry|}}}|{{Collapsible_Table|table-class=haiku|table-style=width:100%;|title-style=text-align:left;|title=<h4 style="margin-top:0;">Haiku</h4>|content={{!}} | |||
{{{haiku|}}} | |||
{{{poetry|}}} | |||
}}}} | |||
</div></div>}}{{#if:{{{comments|}}}|<div id="box"> | |||
<h2>Comments</h2> | |||
<div style="padding: 0.5em;"> | |||
{{{comments|}}} | |||
</div></div>}} | |||
<div style="display:none" class="hidden-text" id="hidden-text">{{#var:hidden-text}}</div> | |||
{{#var:footer}}<span id="sort" style="display:none;">{{#var:sort}}</span>{{#if:{{{self|}}}|| {{#ifeq:{{#var:mode}}|request||{{LSLC|Flow Control{{#var:lang}}|{{#var:sort}}}}}} {{#if:{{#var:examples}}{{{examples|}}}||{{LSLC|Needs Example|{{#var:sort}}|{{#var:lang}}}}}} {{#if:{{{cat1|}}}|{{LSLC|{{{cat1}}}|{{#var:sort}}}}}} {{#if:{{{cat2|}}}|{{LSLC|{{{cat2}}}|{{#var:sort}}}}}} {{#if:{{{cat3|}}}|{{LSLC|{{{cat3}}}|{{#var:sort}}}}}} {{#if:{{{cat4|}}}|{{LSLC|{{{cat4}}}|{{#var:sort}}}}}} {{#if:{{{cat5|}}}|{{LSLC|{{{cat5}}}|{{#var:sort}}}}}} {{#if:{{{cat6|}}}|{{LSLC|{{{cat6}}}|{{#var:sort}}}}}} }}</includeonly> |
Latest revision as of 09:36, 11 May 2021
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
{{LSL_Conditional |statement |statement_header |statement_desc |statement_end |statement_end_desc |p1_name|p1_desc |p2_name|p2_desc |p3_name|p3_desc |p4_name|p4_desc |p5_name|p5_desc |p6_name|p6_desc |p7_name|p7_desc |p8_name|p8_desc |p9_name|p9_desc |p10_name|p10_desc |p11_name|p11_desc |p12_name|p12_desc |constants |examples |helpers |also_header |also_functions |also_tests |also_articles |also_footer |notes |mode |deprecated |cat1 |cat2 |cat3 |cat4 }}
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
funckyloop( i; f; s; k; l; v; r ) statement_end
statement_type
• | i | – | i | |
• | f | – | f | |
• | s | – | s | |
• | k | – | k | |
• | l | – | l | |
• | v | – | v | |
• | r | – | r | |
• | statement_end | – | statement_end_desc |
A fictitious statement type
Specification
Type | Condition |
---|---|
integer | True if it is not zero. |
float | True if it is not zero.[1] |
string | True if its length is not zero. |
key | True only if it is a valid key and not NULL_KEY. |
vector | True if the vector is not ZERO_VECTOR. |
rotation | True if the rotation is not ZERO_ROTATION. |
list | True if the length is not zero. Note that correct behavior is only seen with Mono-compiled scripts; LSO-compiled scripts incorrectly resolve to false if the list is non-empty: BUG-230728 |
spec
Examples
examples
Notes
notes
Useful Snippets
helpers
See Also
also_header
Events
- also_events
Functions
- also_functions
Tests
- also_tests
- also_tests
Articles
- also_articles
also_footer
Deep Notes
Tests
- also_tests
Footnotes
- ^ The OpenSim LSL compiler will not do this implicitly. You will need to use an explicit check.