User Tools

Site Tools


wiki:syntax

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:syntax [2019/03/07 10:57] Karsten75wiki:syntax [2022/10/31 13:45] (current) – Added link to Wrap syntax demo page karsten75
Line 1: Line 1:
 +====== Formatting Syntax ======
  
-----+[[doku>DokuWiki]] supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing "Edit this page". If you want to try something, just use the [[playground:playground|playground]] page. The simpler markup is easily accessible via [[doku>toolbar|quickbuttons]], too.
  
-====== abs ======+===== Basic Text Formatting =====
  
-abs(%%<-%%var) %%->%%absvar+DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. Of course you can **__//''combine''//__** all these.
  
-===== Description =====+  DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. 
 +  Of course you can **__//''combine''//__** all these.
  
-Calculates the absolute value of the item and pushes the result on the stack.+You can use <sub>subscript</sub> and <sup>superscript</sup>, too.
  
-===== Examples =====+  You can use <sub>subscript</sub> and <sup>superscript</sup>, too.
  
-<code> +You can mark something as <del>deleted</delas well.
-trace(abs(-1)) #prints '1'  +
-</code>+
  
-----+  You can mark something as <del>deleted</del> as well.
  
 +**Paragraphs** are created from blank lines. If you want to **force a newline** without a paragraph, you can use two backslashes followed by a whitespace or the end of line.
  
-----+This is some text with some linebreaks\\ Note that the 
 +two backslashes are only recognized at the end of a line\\ 
 +or followed by\\ a whitespace \\this happens without it.
  
-====== acos ======+  This is some text with some linebreaks\\ Note that the 
 +  two backslashes are only recognized at the end of a line\\ 
 +  or followed by\\ a whitespace \\this happens without it.
  
-acos(-1) %%->%%PiValue+You should use forced newlines only if really needed.
  
-===== Description =====+===== Links =====
  
-Calculates the arccosine of the input, returns the result in radians.+DokuWiki supports multiple ways of creating links.
  
-===== Examples =====+==== External ====
  
-<code> +External links are recognized automagically: http://www.google.com or simply www.google.com You can set the link text as well: [[http://www.google.com|This Link points to google]]. Email addresses like this one: <andi@splitbrain.orgare recognized, too.
-trace(acos(-1)) #prints PI  +
-</code>+
  
-----+  DokuWiki supports multiple ways of creating links. External links are recognized 
 +  automagically: http://www.google.com or simply www.google.com You can set 
 +  link text as well: [[http://www.google.com|This Link points to google]]. Email 
 +  addresses like this one: <andi@splitbrain.org> are recognized, too.
  
 +==== Internal ====
  
-----+Internal links are created by using square brackets. You can either just give a [[pagename]] or use an additional [[pagename|link text]].
  
-====== add ======+  Internal links are created by using square brackets. You can either just give 
 +  a [[pagename]] or use an additional [[pagename|link text]].
  
-2 add (3) %%->%%five+[[doku>pagename|Wiki pagenames]] are converted to lowercase automatically, special characters are not allowed.
  
-===== Description =====+You can use [[some:namespaces]] by using a colon in the pagename.
  
-Adds two arguments together and pushes the result on the stack.+  You can use [[some:namespaces]] by using a colon in the pagename.
  
-===== Examples =====+For details about namespaces see [[doku>namespaces]].
  
-<code> +Linking to a specific section is possible, too. Just add the section name behind a hash character as known from HTML. This links to [[syntax#internal|this Section]].
-trace(add(21 21)) #prints 42  +
-</code>+
  
-----+  This links to [[syntax#internal|this Section]].
  
 +Notes:
  
-----+  * Links to [[syntax|existing pages]] are shown in a different style from [[nonexisting]] ones. 
 +  * DokuWiki does not use [[wp>CamelCase]] to automatically create links by default, but this behavior can be enabled in the [[doku>config]] file. Hint: If DokuWiki is a link, then it's enabled. 
 +  * When a section's heading is changed, its bookmark changes, too. So don't rely on section linking too much.
  
-====== and ======+==== Interwiki ====
  
-<-bool1 and (<-bool2) %%->%%boolResult+DokuWiki supports [[doku>Interwiki]] links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]].
  
-===== Description =====+  DokuWiki supports [[doku>Interwiki]] links. These are quick links to other Wikis. 
 +  For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]].
  
-Pops two items from the stack and treats them as TRUE/FALSE (0/1 or Boolean) values. If they are both TRUE, 1 is pushed to the stack. Otherwise, 0 is pushed to the stack.+==== Windows Shares ====
  
-===== Examples =====+Windows shares like [[\\server\share|this]] are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate [[wp>Intranet]].
  
-<code> +  Windows Shares like [[\\server\share|this]] are recognized, too.
-if (1 and (true))  +
-    trace("1 and true are both true")  +
-endif  +
-</code>+
  
-----+Notes:
  
- +  * For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the "local zone")
----- +  * For Mozilla and Firefox it can be enabled through different workaround mentioned in the [[http://kb.mozillazine.org/Links_to_local_pages_do_not_work|Mozilla Knowledge Base]]. However, there will still be a JavaScript warning about trying to open a Windows Share. To remove this warning (for all users)put the following line in ''conf/lang/en/lang.php'' (more details at [[doku>localization#changing_some_localized_texts_and_strings_in_your_installation|localization]]): <code - conf/lang/en/lang.php
- +<?php 
-====== AppendStackToList ====== +/** 
- + * Customization of the english language file 
-AppendStackToList + * Copy only the strings that needs to be modified 
- + */ 
-===== Description ===== +$lang['js']['nosmblinks'] = '';
- +
-Adds all values on the stack to the end of a list. The order of the values will be reversed+
- +
-Note that the stack will be empty after this callso think before using it in functions. +
- +
-===== Examples ===== +
- +
-<code+
-Split("1,2,3,4,5,6" ","->list  +
-Split("1,2,3,4,5,6" ","<-list AppendStackToList  +
-Trace(<-list) +
 </code> </code>
  
-----+==== Image Links ====
  
 +You can also use an image to link to another internal or external page by combining the syntax for links and [[#images_and_other_files|images]] (see below) like this:
  
-----+  [[http://php.net|{{wiki:dokuwiki-128.png}}]]
  
-====== AppendToList ======+[[http://php.net|{{wiki:dokuwiki-128.png}}]]
  
-AppendToList( <-list <-var)+Please note: The image formatting is the only formatting syntax accepted in link names.
  
-===== Description =====+The whole [[#images_and_other_files|image]] and [[#links|link]] syntax is supported (including image resizing, internal and external images and URLs and interwiki links).
  
-Adds a value to the end of a list.+===== Footnotes =====
  
-===== Examples =====+You can add footnotes ((This is a footnote)) by using double parentheses.
  
-<code> +  You can add footnotes ((This is a footnote)) by using double parentheses.
-Split("1,2,3,4,5,6" ",") ->list  +
-Split("1,2,3,4,5,6" ","<-list AppendStackToList  +
-do (GetListCount(<-list) 0) +
- Trace (<-list I GetListElement +
-loop +
-</code>+
  
-----+===== Sectioning =====
  
 +You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically -- this can be disabled by including the string ''<nowiki>~~NOTOC~~</nowiki>'' in the document.
  
-----+==== Headline Level 3 ==== 
 +=== Headline Level 4 === 
 +== Headline Level 5 ==
  
-====== approximately ======+  ==== Headline Level 3 ==== 
 +  === Headline Level 4 === 
 +  == Headline Level 5 ==
  
-approximately(%%<-%%angle1 %%<-%%angle2) +By using four or more dashesyou can make horizontal line:
- +
-===== Description ===== +
- +
-Compares two floating point values and returns true if they are similar. +
- +
-Floating point imprecision makes comparing floats using the equals operator inaccurate. For example(1.0 == 10.0 / 10.0) might not return true every time. Approximately() compares two floats and returns true if they are within small value (Epsilon*) of each other. +
- +
-See [[http:%%//%%docs.unity3d.com/Documentation/ScriptReference/Mathf.Approximately.html | Mathf.Approximately in Unity3D documentation]] +
- +
-*Epsilon is defined as: The smallest value that a float can have different from zero. +
- +
-===== Examples ===== +
- +
-<code> +
-if (approximately(1.000001 1))  +
-    trace("1.000001 is approximately equal to 1")  +
-endif  +
-</code>+
  
 ---- ----
  
 +===== Media Files =====
  
-----+You can include external and internal [[doku>images|images, videos and audio files]] with curly brackets. Optionally you can specify the size of them.
  
-====== asfloat ======+Real size:                        {{wiki:dokuwiki-128.png}}
  
-asfloat (%%<-%%integer1) %%->%%float1+Resize to given width:            {{wiki:dokuwiki-128.png?50}}
  
-===== Description =====+Resize to given width and height((when the aspect ratio of the given width and height doesn't match that of the image, it will be cropped to the new ratio before resizing)): {{wiki:dokuwiki-128.png?200x50}}
  
-Converts an item on the stack to a floating point number and pushes it back onto the stack.+Resized external image:           {{https://secure.php.net/images/php.gif?200x50}}
  
-===== Examples =====+  Real size:                        {{wiki:dokuwiki-128.png}} 
 +  Resize to given width:            {{wiki:dokuwiki-128.png?50}} 
 +  Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}} 
 +  Resized external image:           {{https://secure.php.net/images/php.gif?200x50}}
  
-<code> 
-"1.23" asfloat ->val  
-</code> 
  
-----+By using left or right whitespaces you can choose the alignment.
  
 +{{ wiki:dokuwiki-128.png}}
  
-----+{{wiki:dokuwiki-128.png }}
  
-====== asin ======+{{ wiki:dokuwiki-128.png }}
  
-asin(%%<-%%one) %%->%%halfPie+  {{ wiki:dokuwiki-128.png}} 
 +  {{wiki:dokuwiki-128.png }} 
 +  {{ wiki:dokuwiki-128.png }}
  
-===== Description =====+Of course, you can add a title (displayed as a tooltip by most browsers), too.
  
-Calculates the arcsine of the input, returns result angle in radiants.+{{ wiki:dokuwiki-128.png |This is the caption}}
  
-===== Examples =====+  {{ wiki:dokuwiki-128.png |This is the caption}}
  
-<code> +For linking an image to another page see [[#Image Links]] above.
-trace(asin(1)) #prints PI/2  +
-</code>+
  
-----+==== Supported Media Formats ====
  
 +DokuWiki can embed the following media formats directly.
  
-----+| Image | ''gif'', ''jpg'', ''png'' 
 +| Video | ''webm'', ''ogv'', ''mp4''
 +| Audio | ''ogg'', ''mp3'', ''wav'' 
 +| Flash | ''swf''                    |
  
-====== asint ======+If you specify a filename that is not a supported media format, then it will be displayed as a link instead.
  
-asint (%%<-%%floatval) %%->%%intval+By adding ''?linkonly'' you provide a link to the media without displaying it inline
  
-===== Description =====+  {{wiki:dokuwiki-128.png?linkonly}}
  
-Converts an item on the stack to an integer, and pushes it back to the stack.+{{wiki:dokuwiki-128.png?linkonly}} This is just a link to the image.
  
-===== Examples =====+==== Fallback Formats ====
  
-<code> +Unfortunately not all browsers understand all video and audio formats. To mitigate the problem, you can upload your file in different formats for maximum browser compatibility.
-"42" asint ->val  +
-</code>+
  
-----+For example consider this embedded mp4 video:
  
 +  {{video.mp4|A funny video}}
  
-----+When you upload a ''video.webm'' and ''video.ogv'' next to the referenced ''video.mp4'', DokuWiki will automatically add them as alternatives so that one of the three files is understood by your browser.
  
-====== aslist ======+Additionally DokuWiki supports a "poster" image which will be shown before the video has started. That image needs to have the same filename as the video and be either a jpg or png file. In the example above a ''video.jpg'' file would work.
  
-To be supplied+===== Lists =====
  
 +Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a ''*'' for unordered lists or a ''-'' for ordered ones.
  
-----+  * This is a list 
 +  * The second item 
 +    * You may have different levels 
 +  * Another item
  
- +  The same list but ordered 
----+  Another item 
- +    Just use indention for deeper levels 
-====== asstring ====== +  That's it
- +
-To be supplied +
- +
- +
----+
- +
- +
----+
- +
-====== astable ====== +
- +
-To be supplied +
- +
- +
----- +
- +
- +
----- +
- +
-====== atan ====== +
- +
-atan(%%<-%%toTarget)) %%->%%targetRadians +
- +
-===== Description ===== +
- +
-Calculates the arctangent of the input, returns the angle in radians. +
- +
-===== Examples =====+
  
 <code> <code>
-trace(atan(1)) #prints PI/4  +  * This is a list 
-</code>+  * The second item 
 +    * You may have different levels 
 +  * Another item
  
----- +  The same list but ordered 
- +  Another item 
- +    Just use indention for deeper levels 
----- +  That's it
- +
-====== atan2 ====== +
- +
-atan2(%%<-%%targetZ %%<-%%targetX) %%->%%angleToTarget +
- +
-===== Description ===== +
- +
-Computes and returns the angle of the point y/x in radians. The return value is between positive pi and negative pi. Note that the first parameter to atan2 is always the z coordinate. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(atan2(1 2)) #prints '0.463647609+
 </code> </code>
  
-----+Also take a look at the [[doku>faq:lists|FAQ on list items]].
  
 +===== Text Conversions =====
  
-----+DokuWiki can convert certain pre-defined characters or strings into images or other text or HTML.
  
-====== avg2 ======+The text to image conversion is mainly done for smileys. And the text to HTML conversion is used for typography replacements, but can be configured to use other HTML as well.
  
-avg2(%%<-%%high %%<-%%low) %%->%%average+==== Text to Image Conversions ====
  
-===== Description =====+DokuWiki converts commonly used [[wp>emoticon]]s to their graphical equivalents. Those [[doku>Smileys]] and other images can be configured and extended. Here is an overview of Smileys included in DokuWiki:
  
-Computes the average of two numbers.+  * 8-) %%  8-)  %% 
 +  * 8-O %%  8-O  %% 
 +  * :-( %%  :-(  %% 
 +  * :-) %%  :-)  %% 
 +  * =)  %%  =)   %% 
 +  * :-/ %%  :-/  %% 
 +  * :-\ %%  :-\  %% 
 +  * :-? %%  :-?  %% 
 +  * :-D %%  :-D  %% 
 +  * :-P %%  :-P  %% 
 +  * :-O %%  :-O  %% 
 +  * :-X %%  :-X  %% 
 +  * :-| %%  :-|  %% 
 +  * ;-) %%  ;-)  %% 
 +  * ^_^ %%  ^_^  %% 
 +  * m(  %%  m(   %% 
 +  * :?: %%  :?:  %% 
 +  * :!: %%  :!:  %% 
 +  * LOL %%  LOL  %% 
 +  * FIXME %%  FIXME %% 
 +  * DELETEME %% DELETEME %%
  
-===== Examples =====+==== Text to HTML Conversions ====
  
-<code> +Typography: [[DokuWiki]] can convert simple text characters to their typographically correct entities. Here is an example of recognized characters.
-40 ->low +
-44 ->high +
-avg2(<-high <-low) ->avg2 +
-trace(<-avg2)  #outputs 42 +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== break ====== +
- +
-break +
- +
-===== Description ===== +
- +
-Immediately exits the body of a ‘while/repeat/endwhile’ block or a ‘do/loop’ block.+
  
-===== Examples =====+-> <- <-> => <<=> >> << -- --- 640x480 (c) (tm) (r) 
 +"He thought 'It's a man's world'..."
  
 <code> <code>
-do(5 0 +-> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r
-    if (I mod(2eq0) #divide inner loop with modulo 2 and test if zero  +"He thought 'It's a man's world'..."
-        break  +
-    endif  +
-    trace(I)  +
-loop +
 </code> </code>
  
-----+The same can be done to produce any kind of HTML, it just needs to be added to the [[doku>entities|pattern file]].
  
 +There are three exceptions which do not come from that pattern file: multiplication entity (640x480), 'single' and "double quotes". They can be turned off through a [[doku>config:typography|config option]].
  
-----+===== Quoting =====
  
-====== ceil ====== +Some times you want to mark some text to show it's a reply or comment. You can use the following syntax:
- +
-ceil(%%<-%%number) %%->%%number +
- +
-===== Description ===== +
- +
-Takes one number from the stack, rounds it up, and pushes that number back on the stack. +
- +
-===== Examples =====+
  
 <code> <code>
-trace(ceil(4.2)) #prints '5'  +I think we should do it
-</code>+
  
-----+> No we shouldn't
  
 +>> Well, I say we should
  
-----+> Really?
  
-====== ClearStack ======+>> Yes!
  
-ClearStack +>>> Then lets do it!
- +
-===== Description ===== +
- +
-Remove all items from the stack leaving it empty. +
- +
-===== Examples ===== +
- +
-<code> +
-1 2 3 ClearStack #Stack is now empty +
 </code> </code>
  
-----+I think we should do it
  
 +> No we shouldn't
  
-----+>> Well, I say we should
  
-====== ClearTraceLog ======+> Really?
  
-ClearTraceLog+>> Yes!
  
-===== Description =====+>>> Then lets do it!
  
-Removes all messages from the debug window.+===== Tables =====
  
-===== Examples =====+DokuWiki supports a simple syntax to create tables.
  
-<code>+^ Heading 1      ^ Heading 2       ^ Heading 3          ^ 
 +| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        | 
 +| Row 2 Col 1    | some colspan (note the double pipe) || 
 +| Row 3 Col 1    | Row 3 Col 2     | Row 3 Col 3        |
  
-ClearTraceLog   +Table rows have to start and end with a ''|'' for normal rows or a ''^'' for headers.
-"Fresh Message" Trace +
-</code>+
  
-----+  ^ Heading 1      ^ Heading 2       ^ Heading 3          ^ 
 +  | Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        | 
 +  | Row 2 Col 1    | some colspan (note the double pipe) || 
 +  | Row 3 Col 1    | Row 3 Col 2     | Row 3 Col 3        |
  
 +To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators!
  
-----+Vertical tableheaders are possible, too.
  
-====== Concat ======+|              ^ Heading 1            ^ Heading 2          ^ 
 +^ Heading 3    | Row 1 Col 2          | Row 1 Col 3        | 
 +^ Heading 4    | no colspan this time |                    | 
 +^ Heading 5    | Row 2 Col 2          | Row 2 Col 3        |
  
-Concat(“abc” “def”) %%->%%sixLetters+As you can see, it's the cell separator before a cell which decides about the formatting:
  
-===== Description =====+  |              ^ Heading 1            ^ Heading 2          ^ 
 +  ^ Heading 3    | Row 1 Col 2          | Row 1 Col 3        | 
 +  ^ Heading 4    | no colspan this time |                    | 
 +  ^ Heading 5    | Row 2 Col 2          | Row 2 Col 3        |
  
-Takes the first two items from the stack and concatenates them.+You can have rowspans (vertically connected cells) by adding ''%%:::%%'' into the cells below the one to which they should connect.
  
-===== Examples =====+^ Heading 1      ^ Heading 2                  ^ Heading 3          ^ 
 +| Row 1 Col 1    | this cell spans vertically | Row 1 Col 3        | 
 +| Row 2 Col 1    | :::                        | Row 2 Col 3        | 
 +| Row 3 Col 1    | :::                        | Row 2 Col 3        |
  
-<code> +Apart from the rowspan syntax those cells should not contain anything else.
-Trace(Concat("abc" "def")) # Prints "abcdef"  +
-</code>+
  
-----+  ^ Heading 1      ^ Heading 2                  ^ Heading 3          ^ 
 +  | Row 1 Col 1    | this cell spans vertically | Row 1 Col 3        | 
 +  | Row 2 Col 1    | :::                        | Row 2 Col 3        | 
 +  | Row 3 Col 1    | :::                        | Row 2 Col 3        |
  
 +You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text.
  
-----+^           Table with alignment           ^^^ 
 +|         right|    center    |left          | 
 +|left          |         right|    center    | 
 +| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |
  
-====== CopyList ======+This is how it looks in the source:
  
-CopyList (%%<-%%list1)%%->%%list2+  ^           Table with alignment           ^^^ 
 +  |         right|    center    |left          | 
 +  |left          |         right|    center    | 
 +  | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |
  
-===== Description =====+Note: Vertical alignment is not supported.
  
-Creates a copy of a list with the same contents. Note that if the list contains other lists, they will not be copied - for that you need [[DeepCopyList | DeepCopyList]]. See [[Copy vs Deep Copy | Copy vs Deep Copy]] for more info.+===== No Formatting =====
  
-===== Examples =====+If you need to display text exactly like it is typed (without any formatting), enclose the area either with ''%%<nowiki>%%'' tags or even simpler, with double percent signs ''<nowiki>%%</nowiki>''.
  
-<code+<nowiki
-Split("1,2,3,4,5,6" ",") ->list  +This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**but nothing is done with it. 
-<-list CopyList ->list2  +</nowiki
-SetListElement(<-list2 0 "banana" +The same is true for %%//__this__ text// with a smiley ;-)%%.
-Trace(<-list)  +
-Trace(<-lis2)  +
-</code>+
  
-----+  <nowiki> 
 +  This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it. 
 +  </nowiki> 
 +  The same is true for %%//__this__ text// with a smiley ;-)%%.
  
 +===== Code Blocks =====
  
-----+You can include code blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags ''%%<code>%%'' or ''%%<file>%%''.
  
-====== cos ====== +  This is text is indented by two spaces.
- +
-cos(%%<-%%angle) %%->%%cosAngleRadians +
- +
-===== Description ===== +
- +
-Calculates the cosine of the input angle in radians +
- +
-===== Examples =====+
  
 <code> <code>
-trace(cos(PI)) #prints '-1' +This is preformatted code all spaces are preserved: like              <-this
 </code> </code>
  
-----+<file> 
 +This is pretty much the same, but you could use it to show that you quoted a file. 
 +</file>
  
 +Those blocks were created by this source:
  
-----+    This is text is indented by two spaces.
  
-====== CR ======+  <code> 
 +  This is preformatted code all spaces are preserved: like              <-this 
 +  </code>
  
-CR+  <file> 
 +  This is pretty much the same, but you could use it to show that you quoted a file. 
 +  </file>
  
-===== Description =====+==== Syntax Highlighting ====
  
-Pushes a carriage return to the stack.+[[wiki:DokuWiki]] can highlight sourcecode, which makes it easier to read. It uses the [[http://qbnz.com/highlighter/|GeSHi]] Generic Syntax Highlighter -- so any language supported by GeSHi is supported. The syntax uses the same code and file blocks described in the previous section, but this time the name of the language syntax to be highlighted is included inside the tag, e.g. ''<nowiki><code java></nowiki>'' or ''<nowiki><file java></nowiki>''.
  
-===== Examples ===== +<code java
- +/** 
-<code> + * The HelloWorldApp class implements an application that 
-Trace( Concat (Concat("ABCCR) "DEF")+ * simply displays "Hello World!to the standard output. 
 + */ 
 +class HelloWorldApp { 
 +    public static void main(String[] args
 +        System.out.println("Hello World!"); //Display the string. 
 +    } 
 +}
 </code> </code>
  
-----+The following language strings are currently recognized: //4cs 6502acme 6502kickass 6502tasm 68000devpac abap actionscript3 actionscript ada aimms algol68 apache applescript apt_sources arm asm asp asymptote autoconf autohotkey autoit avisynth awk bascomavr bash basic4gl batch bf biblatex bibtex blitzbasic bnf boo caddcl cadlisp ceylon cfdg cfm chaiscript chapel cil c_loadrunner clojure c_mac cmake cobol coffeescript c cpp cpp-qt cpp-winapi csharp css cuesheet c_winapi dart dcl dcpu16 dcs delphi diff div dos dot d ecmascript eiffel email epc e erlang euphoria ezt f1 falcon fo fortran freebasic freeswitch fsharp gambas gdb genero genie gettext glsl gml gnuplot go groovy gwbasic haskell haxe hicest hq9plus html html4strict html5 icon idl ini inno intercal io ispfpanel java5 java javascript jcl j jquery julia kixtart klonec klonecpp kotlin latex lb ldif lisp llvm locobasic logtalk lolcode lotusformulas lotusscript lscript lsl2 lua m68k magiksf make mapbasic mathematica matlab mercury metapost mirc mk-61 mmix modula2 modula3 mpasm mxml mysql nagios netrexx newlisp nginx nimrod nsis oberon2 objc objeck ocaml-brief ocaml octave oobas oorexx oracle11 oracle8 oxygene oz parasail parigp pascal pcre perl6 perl per pf phix php-brief php pic16 pike pixelbender pli plsql postgresql postscript povray powerbuilder powershell proftpd progress prolog properties providex purebasic pycon pys60 python qbasic qml q racket rails rbs rebol reg rexx robots roff rpmspec rsplus ruby rust sas sass scala scheme scilab scl sdlbasic smalltalk smarty spark sparql sql sshconfig standardml stonescript swift systemverilog tclegg tcl teraterm texgraph text thinbasic tsql twig typoscript unicon upc urbi uscript vala vbnet vb vbscript vedit verilog vhdl vim visualfoxpro visualprolog whitespace whois winbatch wolfram xbasic xml xojo xorg_conf xpp yaml z80 zxbasic//
  
 +There are additional [[doku>syntax_highlighting|advanced options]] available for syntax highlighting, such as highlighting lines or adding line numbers.
  
-----+==== Downloadable Code Blocks ====
  
-====== CreateList ====== +When you use the ''%%<code>%%'' or ''%%<file>%%'' syntax as above, you might want to make the shown code available for download as wellYou can do this by specifying a file name after language code like this:
- +
-CreateList %%->%%list +
- +
-===== Description ===== +
- +
-Creates an empty list. +
- +
-===== Examples =====+
  
 <code> <code>
-if (CreateList GetListCount eq0)  +<file php myexample.php> 
-    Trace("And lo, the list was empty.")  +<?php echo "hello world!"; ?
-endif  +</file>
- +
-createlist ->list +
-1 ->list[0] +
-4 ->list[1] +
-9 ->list[2] +
-trace(<-list)+
 </code> </code>
  
-----+<file php myexample.php> 
 +<?php echo "hello world!"; ?> 
 +</file>
  
 +If you don't want any highlighting but want a downloadable file, specify a dash (''-'') as the language code: ''%%<code - myfile.foo>%%''.
  
----- 
  
-====== CreateListStartingSize ======+===== Embedding HTML and PHP =====
  
-createliststartingsize (%%<-%%size) %%->%%list+You can embed raw HTML or PHP code into your documents by using the ''%%<html>%%'' or ''%%<php>%%'' tags. (Use uppercase tags if you need to enclose block level elements.)
  
-===== Description ===== +HTML example:
- +
-Creates a list containing a specified number of null elements. +
- +
-===== Examples =====+
  
 <code> <code>
- +<html> 
-->nullSize +This is some <span style="color:red;font-size:150%;">inline HTML</span
-createliststartingsize (<-nullSize) ->nullist +</html
-trace ( <-nullist)+<HTML> 
 +<p style="border:2px dashed red;">And this is some block HTML</p> 
 +</HTML>
 </code> </code>
  
----- +<html> 
- +This is some <span style="color:red;font-size:150%;">inline HTML</span> 
-====== CreateTable ====== +</html> 
- +<HTML
-createTable %%->%%table +<p style="border:2px dashed red;">And this is some block HTML</p> 
- +</HTML>
-===== Description ===== +
- +
-Creates an empty table and pushes it to the stack.+
  
-===== Examples =====+PHP example:
  
 <code> <code>
-createTable ->table +<php
-1 ->table{"Larry"} +echo 'The PHP version: '; 
-4 ->table{"Moe"} +echo phpversion(); 
-9 ->table{"Curly"} +echo ' (generated inline HTML)'; 
-trace(<-table)+</php
 +<PHP> 
 +echo '<table class="inline"><tr><td>The same, but inside a block level element:</td>'; 
 +echo '<td>'.phpversion().'</td>'; 
 +echo '</tr></table>'; 
 +</PHP>
 </code> </code>
  
-----+<php> 
 +echo 'The PHP version: '; 
 +echo phpversion(); 
 +echo ' (inline HTML)'; 
 +</php> 
 +<PHP> 
 +echo '<table class="inline"><tr><td>The same, but inside a block level element:</td>'; 
 +echo '<td>'.phpversion().'</td>'; 
 +echo '</tr></table>'; 
 +</PHP>
  
 +**Please Note**: HTML and PHP embedding is disabled by default in the configuration. If disabled, the code is displayed instead of executed.
  
-----+===== RSS/ATOM Feed Aggregation ===== 
 +[[DokuWiki]] can integrate data from external XML feeds. For parsing the XML feeds, [[http://simplepie.org/|SimplePie]] is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters:
  
-====== Debug ======+^ Parameter  ^ Description ^ 
 +| any number | will be used as maximum number items to show, defaults to 8 | 
 +| reverse    | display the last items in the feed first | 
 +| author     | show item authors names | 
 +| date       | show item dates | 
 +| description| show the item description. If [[doku>config:htmlok|HTML]] is disabled all tags will be stripped | 
 +| nosort     | do not sort the items in the feed | 
 +| //n//[dhm] | refresh period, where d=days, h=hours, m=minutes. (e.g. 12h 12 hours). |
  
-debug+The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. [[wiki:DokuWiki]] will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells [[wiki:DokuWiki]] to re-render the page if it is more than //refresh period// since the page was last rendered.
  
-===== Description =====+By default the feed will be sorted by date, newest items first. You can sort it by oldest first using the ''reverse'' parameter, or display the feed as is with ''nosort''.
  
-Debug peeks at the stack and then prints out the datatype of the top item on the stack followed by the value coerced into an int, float, and string.+**Example:**
  
-===== Examples =====+  {{rss>http://slashdot.org/index.rss 5 author date 1h }}
  
-<code> +{{rss>http://slashdot.org/index.rss 5 author date 1h }}
-12 +
-debug  +
-trace (mul (4)) #yields  48 +
-# output_log.txt will contain  +
-#  INT 12 12 12 +
-#  +
-</code>+
  
----- 
  
 +===== Control Macros =====
  
-----+Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble:
  
-====== DeepCopyList ======+^ Macro           ^ Description | 
 +| %%~~NOTOC~~%%   | If this macro is found on the page, no table of contents will be created | 
 +| %%~~NOCACHE~~%% | DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the %%<php>%% syntax above is used), adding this macro will force DokuWiki to rerender a page on every call |
  
-DeepCopyList ( %%<-%%list) %%->%%listDeepCopy+===== Wrap Syntax Demo page ===== 
 +https://demo.selfthinker.org/plugin:wrap 
 +===== Syntax Plugins =====
  
-===== Description =====+DokuWiki's syntax can be extended by [[doku>plugins|Plugins]]. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation:
  
-Creates a copy of a list with the same contents. Unlike [[CopyList | CopyList]], if the copied list contains other lists, those lists will be copied as well (and if those lists contain other lists, even those will be copied, etc, etc). See [[Copy vs Deep Copy | Copy vs Deep Copy]] for more info. +~~INFO:syntaxplugins~~
- +
-===== Examples ===== +
- +
-<code> +
-Split("A,B,C" ",") ->listInner +
-Split("1,2,3,4,5,6" ",") ->list +
-<-list <-listInner AppendToList +
-  +
-<-list CopyList ->listCopy +
-<-list DeepCopyList ->listDeepCopy +
-SetListElement(<-listInner 0 "banana")  +
-SetListElement(<-list 0 "orange")  +
- +
-Trace(<-list)  +
-Trace(<-listCopy)  +
-Trace(<-listDeepCopy)  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Deg2Rad ====== +
- +
-mul(Deg2Rad %%<-%%angle) +
- +
-===== Description ===== +
- +
-Pushes the constant to use in converting from degrees to radians to the stack. Multiply this value with a value expressed as degrees to obtain radians. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(180 mul(Deg2Rad)) #prints PI  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== DISTANCE ====== +
- +
-distance(%%<-%%x %%<-%%z %%<-%%centerX %%<-%%centerZ) %%->%%dist +
- +
-===== Description ===== +
- +
-Returns the distance between two given pairs of coordinates. (Or two sets of number pairs on the coordinate plane) +
- +
-===== Examples ===== +
- +
-<code> +
-CurrentCoords 0 0 Distance ->Distance #Find the distance between itself and 0,0 +
-<-Distance Trace +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== div ====== +
- +
-%%<-%%num1 div( %%<-%%num2) %%->%%result +
- +
-===== Description ===== +
- +
-Divides the two arguments together and pushes the result on the stack. the output type (integer or float) depends on the input, except is the result is explicitly cast. See examples. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(5 div(4)) #prints '1'. Both arguments are integers so division is integer division  +
-trace(5 div(4.0)) #prints '1.2'. Handled as floating point division  +
-trace(5 div(4 asfloat)) #prints '1.2'. Handled as floating point division  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== do ====== +
- +
-do(5 0) +
- +
-===== Description ===== +
- +
-The statements following the do, up to the loop statement, are executed repeatedly. Each iteration (loop), the initial value (Index) is incremented by one at the bottom of the loop and compared to Limit. When Index=Limit, execution will proceed at the first statement following Loop. Loops can be nested, but no more than 3 deep. See also[[I | I]], [[J | J ]] and [[K | K]]. +
- +
-NOTE: Limit comes first, then the initial value (index). This means that the first number should usually be bigger than the second number. +
- +
-===== Examples ===== +
- +
-<code> +
- +
-# single loop  +
-do(5 0)  +
-   trace(I)  +
-loop  +
-#  Prints: +
-#  0 +
-#  1 +
-#  2 +
-#  3 +
-#  4 +
- +
-Nested loops +
- +
-do(2 0)  +
-    trace(I)  +
-    Do (4 2) +
-        Trace2 (J I) +
-        Do (6 4) +
-            Trace3 (K J I ) +
-        loop +
-    loop +
-loop  +
- +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== DQ ====== +
- +
-DQ +
- +
-===== Description ===== +
- +
-Pushes a double-quote (") to the stack. This is the only way to create a string containing this character as they are normally used to delineate strings. +
- +
-===== Examples ===== +
- +
-<code> +
- DQ "Hello!" DQ concat concat trace +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== dup ====== +
- +
-dup +
- +
-===== Description ===== +
- +
-Duplicates the item currently on the stack without removing the original item. +
- +
-===== Examples ===== +
- +
-<code> +
-trace2(42 dup) #prints '42 42'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== dup2 ====== +
- +
-dup2 +
- +
-===== Description ===== +
- +
-Duplicates the top two items currently on the stack without removing the original pair. +
- +
-===== Examples ===== +
- +
-<code> +
-trace4(42 1 dup2) #prints '42 1 42 1'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== E ====== +
- +
-+
- +
-===== Description ===== +
- +
-Pushes the value of Euler’s number (e) to the stack (2.71828…) +
- +
-===== Examples ===== +
- +
-<code> +
-trace(e) #prints 2.71828182845  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== else ====== +
- +
-else +
- +
-===== Description ===== +
- +
-When an if statement evaluates to false, then the statements following the else, up to the endif, are executed instead. See [[if | if]] +
- +
-===== Examples ===== +
- +
-<code> +
-if (<-var eq (1))  +
-   #Do something  +
-else  +
-   #Do something else  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== endif ====== +
- +
-endif +
- +
-===== Description ===== +
- +
-Deimits the scope of an if-else-statement. Instructions between the if and endif statement are conditionally executed, depending on the results of the if evaluation. See [[if | if]] +
- +
-===== Examples ===== +
- +
-<code> +
-if (<-var eq (1))  +
-   #Do something  +
-else  +
-   #Do something else  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== endonce ====== +
- +
-endonce +
- +
-===== Description ===== +
- +
-Ends a block defined by once. See [[once | once]] +
- +
-===== Examples ===== +
- +
-<code> +
-once  +
-    trace("42") #Only prints once  +
-endonce  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== EndsWith ====== +
- +
-===== Description ===== +
- +
-Takes two strings from the stack and returns whether the first string ends with the second (case sensitive) +
- +
-===== Examples ===== +
- +
-<code> +
-if (EndsWith("Hello there" "there"))  +
-    Trace("I went there")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== endwhile ====== +
- +
-===== Description ===== +
- +
-Returns execution to the ‘while’ statement. Note that endwhile is only executed, if ‘repeat’ evaluated to true. See [[while | While]] and [[repeat | repeat ]] +
- +
-===== Examples ===== +
- +
-<code> +
-5 ->y  +
-while  +
-    <-y gt(0)       #is y greater than zero?  +
-repeat              #repeat this section of code  +
-    trace(<-y)  +
-    <-y sub(1) -> #subtract 1 from y so we don't end in infinite loop  +
-endwhile  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== eq ====== +
- +
-eq +
- +
-===== Description ===== +
- +
-Top two items are popped from the stack and compared for equality. 0 or 1 is pushed back to the stack where 1 indicates equal and 0 (zero) ndicates not equal +
- +
-the equal/not equal evaluation can also be performed with “true” (1) and false(0), respectively. +
- +
-===== Examples ===== +
- +
-<code> +
-if (1 eq (1))  +
-    trace("1 is equal to 1")  +
-endif  +
- +
-#  alternate example  +
- +
-1 dup eq  +
-if true  +
-  trace ("one is always one"+
-endif +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== eq0 ====== +
- +
-eq0 +
- +
-===== Description ===== +
- +
-Top item is popped from the stack and Compared to 0. 0 (false) or 1 (true) is pushed back to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (0 eq0)  +
-    trace("0 is equal to 0")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== false ====== +
- +
-false +
- +
-===== Description ===== +
- +
-Pushes a 0 (false) nto the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (false)  +
-    trace("false")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== floor ====== +
- +
-floor (%%<-%%num) %%->%%num +
- +
-===== Description ===== +
- +
-Takes one number from the stack, rounds it down, and pushes that number back on the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(floor(4.2)) #prints '4'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== GetListCount ====== +
- +
-GetListCount(%%<-%%list) %%->%%listSize +
- +
-===== Description ===== +
- +
-Returns the number of entries in a list. +
- +
-===== Examples ===== +
- +
-<code> +
-Split("There are four words" " ") ->list  +
-Trace(GetListCount(<-list))  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== GetListElement ====== +
- +
-GetListElement (I) %%->%%element +
- +
-===== Description ===== +
- +
-Returns the value at the specified index of a list. Lists are indexed from zero. +
- +
-Note: If a list is stored in a variable, this can be abbreviated to %%<-%%list[%%<-%%index]. +
- +
-===== Examples ===== +
- +
-<code> +
-Split("1,2,3,4,5,6" ",") ->list  +
-6 0 do  +
-    Trace (<-list I GetListElement)  #functionally equivalent +
-    Trace (<-list[I])                #functionally equivalent +
-loop  +
-</code> +
- +
----- +
- +
-====== Gettableelement ====== +
- +
-To be supplied +
- +
- +
----- +
- +
- +
----- +
- +
-====== GetType ====== +
- +
-GetType (%%<-%%something) %%->%%typeOfSomething +
- +
-===== Description ===== +
- +
-Takes a value and returns a string of what type of value it is. Types: STRING INT FLOAT LIST NULL +
- +
-===== Examples ===== +
- +
-<code> +
-"Value" GetType ->Type +
-<-Type trace #Would return STRING as the result  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== gt ====== +
- +
-5 gt (4) +
- +
-===== Description ===== +
- +
-The first item on the stack is compared to the second item on the stack. Both items are removed from the stack. If the first item is greater than the second, True (1) is pushed to the stack. If not, False (o) is pushed to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-# Warp notation +
-if (42 gt (1))  +
-    trace("42 is greater than 1")  +
-endif +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== gte ====== +
- +
-5 gte (5) +
- +
-===== Description ===== +
- +
-The first item on the stack is compared to the second item on the stack. Both items are removed from the stack. If the first item is greater than or equal to the second, True (1) is pushed to the stack. If not, False (o) is pushed to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (2 gte (2))  +
-    trace("2 is greater than or equal to 2")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== HALFPI ====== +
- +
-HALFPI +
- +
-===== Description ===== +
- +
-Pushes the value of PI/2 to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(HALFPI) #prints '1.570796325'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== I ====== +
- +
-+
- +
-===== Description ===== +
- +
-Current loop index. Pushes the value of the current “do” loop onto the stack. Only use within loops. +
- +
-Note that I refers to the innermost loop. As loops are nested, I will continue to reference the innermost of the nested loops. See [[J | J]] [[k | K]] for other loop indexes. See [[do | Do]] and [[loop | Loop]] +
- +
-===== Examples ===== +
- +
-<code> +
-do(2 0)  +
-    trace(I)  +
-    Do (4 2) +
-        Trace2 (J I) +
-        Do (6 4) +
-            Trace3 (K J I ) +
-        loop +
-    loop +
-loop  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== if ====== +
- +
-if (%%<-%%var1 eq (%%<-%%var2)) +
- +
-===== Description ===== +
- +
-Evaluate the first element on the stack. If True, then execute statements that follow, up to the endif or else statement. If False, execution skips to the first statement following the endif or else statement. Any nonzero value is considered True, a value of zero is False. +
- +
-===== Examples ===== +
- +
-<code> +
-if (<-var eq (1))  +
-   #Do Something  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== InsertListElement ====== +
- +
-InsertListElement(%%<-%%list 3 %%<-%%value) +
- +
-===== Description ===== +
- +
-Stores a value at the specified index of a list. The previously stored value, and all subsequent values have their indices shifted up by one. +
- +
-===== Examples ===== +
- +
-<code> +
-Split("1,2,3,4,5,6" ",") ->list  +
-InsertListElement(<-list 3 "Spoon")  +
-Trace(<-list)  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== J ====== +
- +
-+
- +
-===== Description ===== +
- +
-First outer loop index. When loops are nested, this pushes the value of the first (or only) outer “do” loop onto the stack. Do not use outside nested loops. +
- +
-Note: after the inner loop finishes, this value is accessed with I, it being now the innermost loop. See also: [[do | do]], [[I | I]], [[K | K]], and [[loop | Loop]] +
- +
-===== Examples ===== +
- +
-<code> +
-do(6 5)  +
-    do(4 3)  +
-        trace4 ("Inner loop J=" J ", I=" I) +
-    loop  +
-     trace2 (" I =" I) #note: The value og I here will be the value of J when the loop above has terminated. +
-loop  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== K ====== +
- +
-+
- +
-===== Description ===== +
- +
-Outer loop index. When “do” loops are nested, this pushes the value of the third-innermost loop onto the stack. Do not use outside of triply-nested loops. +
- +
-Note that before the inner loops begin, after they end, or between inner loops, this value may need to be referred to with J or even I. See also: [[do | Do]], [[I | I]], [[J | J]], and [[loop | Loop]] +
- +
-===== Examples ===== +
- +
-<code> +
-do(2 1)  +
-    do(4 3)  +
-        do(6 5)  +
-            I J K Trace3 +
-        loop  +
-    loop  +
-loop  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== LF ====== +
- +
-LF +
- +
-===== Description ===== +
- +
-Pushes a line feed to the stack. Useful for printing +
- +
-===== Examples ===== +
- +
-<code> +
-Trace( Concat (Concat("ABC" LF) "DEF"))  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== ln ====== +
- +
-LN +
- +
-===== Description ===== +
- +
-The natural logarithm. Gives the magnitude of the number. On zero, returns -inf. Below zero, returns NaN, a special value that always causes failure when compared to other numbers. Eg. (NaN<0) %%->%% false, (Nan>=0) %%->%% false +
- +
-other logarithms \  ln(x) = log(x, e) \\\ +
-ln(x)/ln(10) = log10(x) \\\ +
-ln(2)=0.6931… \\\ +
-ln(e)=.999999 \\\ +
-ln(10)=2.3026… \  +
- +
-===== Examples ===== +
- +
-<code> +
-trace(ln(-1)) #prints 'NaN'  +
-trace(ln(0))  #prints '-inf'  +
-trace(ln(1))  #prints '0'  +
-trace(ln(e))  #prints '1'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== log ====== +
- +
-log +
- +
-===== Description ===== +
- +
-Allows the performance of arbitrary based logarithms. See examples. On zero, returns -inf. Below zero, returns NaN, a special value that always causes failure when compared to other numbers. Eg. (NaN<0) %%->%% false, (Nan>=0) %%->%% false +
- +
-other logarithms \\\ +
-log(x,10) = log10(x) \\\ +
-log(x,e) = ln(x) +
- +
-===== Examples ===== +
- +
-<code> +
-trace(log(2 .5))   #prints '-1'  +
-trace(log(.25 .5)) #prints '2'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== log10 ====== +
- +
-LOG10 +
- +
-===== Description ===== +
- +
-The base ten logarithm. Gives the number of digits in the number before the decimal point. On zero, returns -inf. Below zero, returns NaN, a special value that always causes failure when compared to other numbers. Eg. (NaN<0) %%->%% false, (Nan>=0) %%->%% false +
- +
-other logarithms %%//%% log10(x) = log(x, 10) %%//%% log10(x)/log10(e) = ln(x) %%//%% log10(2)=0.3010-ish %%//%% log10(e)=0.4343-ish \\\ +
-log10(10)=1 \\\ +
- +
- +
-===== Examples ===== +
- +
-<code> +
-trace(log10(1))  # prints '0'  +
-trace(log10(10)) # prints '1'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== loop ====== +
- +
-LOOP +
- +
-===== Description ===== +
- +
-Terminates the ‘do’ instruction loop . Control flow will return to the ‘do’ instruction until the Index is equal to the Limit. +
- +
-===== Examples ===== +
- +
-<code> +
-do(5 0)  +
-   trace(I)  +
-loop  +
-  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== lt ====== +
- +
-LT +
- +
-===== Description ===== +
- +
-First item on the stack is compared to the second item on the stack.\\ +
-0 (fasle) or 1 (true) is pushed to the stack depending on whether the first value was less than the second or not. +
- +
-===== Examples ===== +
- +
-<code> +
-if (1 lt (42))  +
-    trace("1 is less than 42")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== lte ====== +
- +
-LTE +
- +
-===== Description ===== +
- +
-First item on the stack is compared to the second item on the stack.\\ +
-0 (fasle) or 1 (true) is pushed to the stack depending on whether the first value was less or equal to the second or not. ## Examples +
- +
-<code> +
-if (1 lte (1))  +
-    trace("1 is less than or equal to 1")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== max ====== +
- +
-MAX +
- +
-===== Description ===== +
- +
-Push the greater of two arguments to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(max(4 5)) #prints '5'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== min ====== +
- +
-MIN +
- +
-===== Description ===== +
- +
-Push the smaller of two arguments to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(max(4 5)) #prints '4'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== mod ====== +
- +
-MOD +
- +
-===== Description ===== +
- +
-Perform integer division and returns the value (modulo) of the difference. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(5 mod (3)) #prints '2'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== mul ====== +
- +
-MUL +
- +
-===== Description ===== +
- +
-Multiplies the two arguments together and pushes the result on the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(2 mul(3)) #prints '6'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== neg ====== +
- +
-NEG +
- +
-===== Description ===== +
- +
-Calculates the negative value of the item and pushes the result on the stack. The result is effectively the same as multiplying the original number by -1. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(neg(42)) #prints '-42'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== neq ====== +
- +
-NEQ +
- +
-===== Description ===== +
- +
-Top two items are popped from the stack and compared for equality. 0 or 1 is pushed back to the stack where 0 indicates false and 1 indicates true. +
- +
-===== Examples ===== +
- +
-<code> +
-if (1 neq (2))  +
-    trace("1 is not equal to 2")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== neq0 ====== +
- +
-NEQ0 +
- +
-===== Description ===== +
- +
-first item on the stack is compared to zero. If zero, true (1) is pushed on the stack, otherwise falsse (0) is pushed back to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (1 neq0)  +
-    trace("1 is not equal to 0")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== not ====== +
- +
-NOT +
- +
-===== Description ===== +
- +
-Treats first item on the stack as a boolean value (true/false (1/0) , ‘nots’ it, and pushes 0 or 1 back to the stack. If the item is TRUE, 0 is pushed to the stack. If the item is FALSE, 1 is pushed to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (not(false))  +
-    trace("not false is true")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== NotPersist ====== +
- +
-NotPersist(“var_name”) +
- +
-===== Description ===== +
- +
-By default, variables persist across saves. Using this command makes them not persist across saves. +
- +
-===== Examples ===== +
- +
-<code> +
-NotPersist("variableName"+
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== once ====== +
- +
-ONCE +
- +
-===== Description ===== +
- +
-Start a block of instructions that are executed once only for the lifetime of the entity the script is associated with. +
- +
-===== Examples ===== +
- +
-<code> +
-once  +
-    trace("42") #Only prints once  +
-endonce  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== or ====== +
- +
-OR +
- +
-===== Description ===== +
- +
-Pops two items from the stack, treats them as boolean values, ‘ors’ them, and pushes 0 or 1 back to the stack. If one or both items evaluate to True, it returns TRUE (1) to the stack. If both items evaluate to FALSE, FALSE (0) is returned to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (1 or (false))  +
-    trace("1 or false is true")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== PI ====== +
- +
-PI +
- +
-===== Description ===== +
- +
-Pushes the value of PI (3.14159265…) to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(PI) #prints '3.14159265'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== pop ====== +
- +
-POP +
- +
-===== Description ===== +
- +
-Removes the item at the top of the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-42 pop #stack is now empty  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== pow ====== +
- +
-POW +
- +
-===== Description ===== +
- +
-Pops two arguments from the stack and raises the first to the second and pushes the result to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-Trace (8 pow (3)) ) #prints '512'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== PrependStackToList ====== +
- +
-PrependStackToList (“Hello” “Creeper” “World” %%<-%%list) +
- +
-===== Description ===== +
- +
-Inserts the contents of the stack at the beginning of L1 (at index 0) and shifts the index of all other elements in the list up by the number of elements on the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-createlist ->list +
-AppendStacktoList ("foo" "bar" <-list) +
-PrependStackToList ("Hello" "Creeper" "World" <-list) +
-print (<-list) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== PrependToList ====== +
- +
-PrependToList ( <-list item) +
- +
-===== Description ===== +
- +
-Adds a value to the beginning of a list. Any values previously stored in the list are shifted up by one. +
- +
-===== Examples ===== +
- +
-<code> +
-Split("1,2,3,4,5,6" ",") ->list  +
-PrependToList( <-list 0)  +
-Trace(<-list)  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Print ====== +
- +
-PRINT (“Hello World”) +
- +
-===== Description ===== +
- +
-Takes one item from the stack and writes it on a new line in a file called PRPL.txt in the game’s root content folder, preceded by the identifying information that indicates which unit or component called the PRINT function. Note that this file is truncated (cleared) each time a map is loaded. +
- +
-To avoid having to constantly re-open the RPL.txt file to refresh it, a Windows Powershell commad (or Linus shell command) can be written to monitor the file and show new output. +
- +
-Eg. Create a file in the game’s root directory named ShowRPL.PS1. Put this single line in the file +
- +
-<code> +
-Get-Content RPL.txt -wait +
-</code> +
-Now, in the context menu for the file, click on “Run with PowerShell”. +
- +
-===== Examples ===== +
- +
-<code> +
-#  Assume this core is at map coordinates (100, 50). Assume this script is named "Hello.prpl" +
-"Hello World!" print +
-#  Each time this line is invoked, a new line appears in PRPL.txt: +
-#  [100,50] Hello.prpl: Hello World! +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Print2 ====== +
- +
-PRINT2 (“Hello” “World”) +
- +
-===== Description ===== +
- +
-Prints 2 values from the stack into the rpl.txt output file. See [[PRINT | PRINT]] or more details +
- +
-===== Examples ===== +
- +
-<code> +
-Print2 ("X" <-x) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Print3 ====== +
- +
-PRINT3 (“Hello” “World” " Again"+
- +
-===== Description ===== +
- +
-Prints 3 values from the stack into the rpl.txt output file. See [[PRINT | PRINT]] for more details +
- +
-===== Examples ===== +
- +
-<code> +
-Print3 ("Coords:" <-x <-y ) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Print4 ====== +
- +
-PRINT4 (“Oh” “Hello” “World” " Again"+
- +
-===== Description ===== +
- +
-Prints 4 values from the stack into the rpl.txt output file. See [[PRINT | PRINT]] for more details +
- +
-===== Examples ===== +
- +
-<code> +
- +
-Print4  ("Coords and angle:" <-x <-y <-angle ) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Print5 ====== +
- +
-PRINT4 (“not” “another” “Hello” “world” “example”) +
- +
-===== Description ===== +
- +
-Prints 5 values from the stack into the rpl.txt output file. See [[PRINT | PRINT]] for more details +
- +
-===== Examples ===== +
- +
-<code> +
- +
-Print5 (<-x "plus" <-y "is" <-x  add (<-y))   +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== PrintAll ====== +
- +
-PrintAll +
- +
-===== Description ===== +
- +
-Removes all values from the stack and prints them in the RPL.txt file The values will be on a single line and **not** separated by a space when printed. See [[PRINT | PRINT]] for more details +
- +
-===== Examples ===== +
- +
-<code> +
-PRINTALL ("cat" "dog" "rat" "mouse" "flea" "tick" "worm" "caterpillar"+
-  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== PrintAllSp ====== +
- +
-PrintAllSp +
- +
-===== Description ===== +
- +
-Removes all values from the stack and prints them into the RPL.txt file The values will be on a single line and **will** be separated by a space when printed. See [[PRINT | PRINT]]] for more details +
- +
-===== Examples ===== +
- +
-<code> +
-PRINTALLSP ("cat" "dog" "rat" "mouse" "flea" "tick" "worm" "caterpillar"+
-  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== PrintStack ====== +
- +
-PrintStack +
- +
-===== Description ===== +
- +
-Prints all the values from the stack to the RPL.txt file without removing them. The top and bottom of the stack will be identidfied, and the data type of each item will be provided. See [[PRINT | PRINT]] for more details +
- +
-Note ## Examples +
- +
-<code> +
-PrintStack ("cat" "dog" "rat" "mouse" "flea" "tick" "worm" "caterpillar"+
- +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== QUARTERPI ====== +
- +
-QuarterPI +
- +
-===== Description ===== +
- +
-Pushes the value of PI/4 to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(HALFPI) #prints '0.7853981625'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Rad2Deg ====== +
- +
-Rad2Deg +
- +
-===== Description ===== +
- +
-Pushes the constant to use in converting radians to degrees onto the stack. Multiply this value with a value expressed in radians to obtain degrees. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(PI mul(Rad2Deg)) #prints '180'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== RANDFLOAT ====== +
- +
-randfloat (%%H%%rando ) +
- +
-===== Description ===== +
- +
-Gives a random floating-point number between 0 and 1 +
- +
-===== Examples ===== +
- +
-<code> +
-Trace ( RandFloat mul ( 2 mul (PI))) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== RANDINT ====== +
- +
-randInt((0 10)) %%->%%randi +
- +
-===== Description ===== +
- +
-Returns a random integer from a range of two numbers Inclusive of the lower number, but exclusive of the higher number. A workaround for between 0 and 10 both inclusive is in the example below. is to do 0 11 RandInt, so 11 will exclude but 10 will include [basically, 0 10 1 add RandInt] +
- +
-===== Examples ===== +
- +
-<code> +
-# get a random integer between 1 and 10 (both numbers inclusive)  +
-RandInt(0 11) +
-#  +
-# or  +
-#    +
-RandInt( 0 10 add (1)) # functionally equivalent.  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== RemoveListElement ====== +
- +
-===== Description ===== +
- +
-Removes an element from a list at a given position. Position are indexed from 0. +
- +
-Elements after the removed one will be shifted towards the start of the list. +
- +
-===== Examples ===== +
- +
-<code> +
-createlist ->list +
-"a" ->list[0] +
-"b" ->list[1] +
-"c" ->list[2] +
-RemoveListElement(<-list 1)  #["a", "c"+
-</code> +
- +
----- +
- +
-====== removetableelement ====== +
- +
-To be supplied +
- +
- +
----- +
- +
- +
----- +
- +
- +
----- +
- +
-====== repeat ====== +
- +
-Repeat +
- +
-===== Description ===== +
- +
-Part of the "while: loop construct. Pops an item from the stack. If true, execute the following statements. If false, jump to the statement following ‘endwhile’. +
- +
-===== Examples ===== +
- +
-<code> +
-5 ->y  +
-while  +
-    <-y gt(0)       #is y greater than zero?  +
-repeat              #repeat this section of code  +
-    trace(<-y)  +
-    <-y sub(1) -> #subtract 1 from y so we don't end in infinite loop  +
-endwhile  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== return ====== +
- +
-Return +
- +
-===== Description ===== +
- +
-Stops execution of a function call and returns immediately. If called from some place other than a function, it will stop the script execution and ‘return’ immediately. Useful for aborting function execution or script execution when necessary. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(42)  +
-@MyFunc  +
-trace (43) +
-  +
-:MyFunc  +
-    trace("1")  +
-    return  +
-    trace("2")  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== round ====== +
- +
-Round (%%<-%%value 2) +
- +
-===== Description ===== +
- +
-Rounds off a number to the specified number of decimal places. This always returns a float, even when you are rounding to a whole number. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(PI round(2)) #print '3.14'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== SetListElement ====== +
- +
-SetListElement(%%<-%%list %%<-%%index %%<-%%value) +
- +
-===== Description ===== +
- +
-Stores a value at the specified index of a list. The previously stored value is overwritten. +
- +
-If a list is stored in a variable, this can be abbreviated to %%<-%%value %%->%%list[%%<-%%index]. +
- +
-===== Examples ===== +
- +
-<code> +
-Split("1,2,3,4,5,6" ",") ->list  +
-SetListElement(<-list 2 "G")  +
-"R" ->list[4]  +
-Trace(<-list)  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== settableelement ====== +
- +
-To be supplied +
- +
- +
----- +
- +
- +
----- +
- +
- +
----- +
- +
-====== ShortestAngle ====== +
- +
-ShortestAngle(%%<-%%cur %%<-%%new) %%->%%rotAngle +
- +
-===== Description ===== +
- +
-Given two angles, calculates the shortest angle between the two. Useful for determining which direction a unit should rotate in order to turn to a given direction. A positive or negative value will be returned in the range of PI to -PI. Negative values indicate clockwise rotation. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(ShortestAngle(1.1 2.5))  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== SignalGenerator ====== +
- +
-SignalGenerator(%%<-%%interval %%<-%%sigFrequency %%<-%%phaseShift false -<signalType) %%->%%sigValue +
- +
-===== Description ===== +
- +
-Computes the value for a given signal waveform and pushes it to the stack. +
- +
-A function to derive the y-coordinate for a given x-co-ordiante on a graph line following one of the indicated wave patterns. Uselful to animate an object or to a given pattern over time. Could be used for instance to vary output from an emitter. Oscillating rightness of light source or beacon; Oscillating strength of an emitter over time - both of these can be thought of as a a use case for this function. +
- +
-Arguments and type in order: 1: Integer. the X coordinate in the waveform (Eg. time) \\\ +
-2: Float. Frequency of the waveform \\\ +
-3: Float. PhaseShift of the waveform \\\ +
-4: Bool. invert the waveform \  5: Integer. Signal type (0 to 6 in types, below) \  +
- +
-Signal types. 0 = NONE <html><br/></html> 1 = SINE <html><br/></html> 2 = SQUARE <html><br/></html> 3 = TRIANGLE <html><br/></html> 4 = SAWTOOTH <html><br/></html> 5 = RANDOM <html><br/></html> 6 = CONSTANT <html><br/></html> +
- +
-===== Examples ===== +
- +
-<code> +
-#  On a map with terrain of 200 in X direction and at least 150 in Z direction (3D coordinates)  +
-# generate a sine wave of creeper across the map. +
-200    ->numFrames +
-      ->frequency (1 div (AsFloat (<-numFrames)))  +
-0     ->phaseShift +
-false ->invert +
-1     ->signalType #sine +
- +
-do  (<-numFrames 0) +
-    SignalGenerator(I <-frequency <-phaseShift <-invert <-signalType )  ->sigValue +
-    round (<-sigValue) 2) ->sigValue +
-    print3 (I " : " <-sigValue ) +
-    SetCreeper(I 75 add (<-sigValue mul (50)) 15 true) +
-loop +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== sin ====== +
- +
-sin (PI) +
- +
-===== Description ===== +
- +
-Calculates the sine of the input angle +
- +
-===== Examples ===== +
- +
-<code> +
-trace(sin(PI)) #prints 0  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Split ====== +
- +
-Split (%%<-%%string %%<-%%delimiter) %%->%%list +
- +
-===== Description ===== +
- +
-Takes two strings from the stack and splits the first wherever the second occurs. Returns a list of strings. +
- +
-===== Examples ===== +
- +
-<code> +
-Split("Here is a sentence with some words in." " ") ->wordsList  +
-<-wordsList GetListCount 0 do  +
-    Trace(<-wordsList[I])  +
-loop  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== sqrt ====== +
- +
-SQRT (%%<-%%value) +
- +
-===== Description ===== +
- +
-Pops an item from the stack and pushes the square root of that number to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(sqrt(9)) #prints '3'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== StackSize ====== +
- +
-StackSize <stackDepth +
- +
-===== Description ===== +
- +
-Returns the number of items currently on the stack +
- +
-===== Examples ===== +
- +
-<code> +
-1 2 3 trace(StackSize) #prints '3'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== StartsWith ====== +
- +
-StartsWith (%%<-%%thisString %%<-%%preamble) +
- +
-===== Description ===== +
- +
-Takes two strings from the stack and returns whether the first string starts with the second (case sensitive) +
- +
-===== Examples ===== +
- +
-<code> +
-if (StartsWith("Hello there" "Hello"))  +
-    Trace("I opened with hello")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== StringLength ====== +
- +
-Stringlength (%%<-%%thisString) %%->%%numchar +
- +
-===== Description ===== +
- +
-Returns the number of characters in a string. +
- +
-===== Examples ===== +
- +
-<code> +
-Trace( StringLength ("PRPL")) #Prints 4  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== StringReplace ====== +
- +
-StringReplace (%%<-%%inputString %%<-%%match %%<-%%replace) +
- +
-===== Description ===== +
- +
-string ARG1: The string to be searched string ARG2: The string to search for in ARG1 string ARG3: The string to replace ARG2 with +
- +
-Searches a string for all instances for another string, and replaces them with a different string. +
- +
-===== Examples ===== +
- +
-<code> +
-Trace(StringReplace ("Where there's a will, there's a way." "will" "way"))  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== StringToList ====== +
- +
-StringToList (%%<-%%inputstring) %%->%%charList +
- +
-===== Description ===== +
- +
-Takes a string from the stack and returns the list of characters in the string. +
- +
-===== Examples ===== +
- +
-<code> +
-StringToList("Hello human") ->charactersList  +
-<-charactersList GetListCount 0 do  +
-    Trace(<-wordsList[I])  +
-loop  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== sub ====== +
- +
-44 sub (2) %%->%%result +
- +
-===== Description ===== +
- +
-Subtracts the two arguments together and pushes the result on the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(44 sub(2)) #prints '42'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Substring ====== +
- +
-Substring (%%<-%%aString %%<-%%startAt %%<-%%lenth) %%->%%aPiece +
- +
-===== Description ===== +
- +
-Extracts a portion of a string into a new item on the stack. +
- +
-The command has 3 arguments. First the string to be examined, second the starting position of the substring within the original string, starting from offset 0 (zero) and thirdly the length of the extrated string. +
- +
-===== Examples ===== +
- +
-<code> +
-Trace( Substring("Particle" 1 3)) # Prints "art"  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== swap ====== +
- +
-swap +
- +
-===== Description ===== +
- +
-Swaps the order of the top two items on the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-trace2(swap(1 2)) #prints '2 1'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== tan ====== +
- +
-tan (PI) %%->%%tangent +
- +
-===== Description ===== +
- +
-Calculates the tangent of the input angle. +
- +
-===== Examples ===== +
- +
-<code> +
-trace(tan(PI)) #prints 0  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== TAU ====== +
- +
-TAU +
- +
-===== Description ===== +
- +
-Pushes the value of TAU (2PI) to the stack (6.2831853…) +
- +
-===== Examples ===== +
- +
-<code> +
-trace(TAU) #prints '6.2831853'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== ToLower ====== +
- +
-ToLower(%%<-%%string) %%->%%string +
- +
-===== Description ===== +
- +
-Converts a string to lowercase. +
- +
-===== Examples ===== +
- +
-<code> +
-Trace( ToLower("CRACKER"))  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== ToUpper ====== +
- +
-ToUpper (%%<-%%string) %%->%%string ## Description Converts a string to uppercase. +
- +
-===== Examples ===== +
- +
-<code> +
-Trace( ToUpper("knuckle"))  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Trace ====== +
- +
-Trace (“ABC”) +
- +
-===== Description ===== +
- +
-Prints a value from the stack into the debug window. +
- +
-===== Examples ===== +
- +
-<code> +
- +
-Trace ("ABC")  +
- +
- if (<-value lt (0)) +
-     Trace ("Warning: value is less than zero"+
-endif +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Trace2 ====== +
- +
-Trace2 (%%<-%%thing1 %%<-%%thing2) +
- +
-===== Description ===== +
- +
-Prints 2 values from the stack into the debug window. +
- +
-===== Examples ===== +
- +
-<code> +
- +
-Trace2 ("X:" <-x ) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Trace3 ====== +
- +
-Trace3 (%%<-%%thing1 %%<-%%thing2 %%<-%%thing3) +
- +
-===== Description ===== +
- +
-Prints 3 values from the stack into the debug window. +
- +
-===== Examples ===== +
- +
-<code> +
- +
-Trace3 ("Coords:" <-x <-z ) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Trace4 ====== +
- +
-Trace4 (%%<-%%thing1 %%<-%%thing2 %%<-%%thing3 %%<-%%thing4) +
- +
-===== Description ===== +
- +
-Prints 4 values from the stack into the debug window. +
- +
-===== Examples ===== +
- +
-<code> +
- +
-Trace3 ("3 Coords:" <-x <-z <-y ) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== Trace5 ====== +
- +
-Trace5 (%%<-%%thing1 %%<-%%thing2 %%<-%%thing3 %%<-%%thing4 %%<-%%thing5) +
- +
-===== Description ===== +
- +
-Prints 5 values from the stack to the debug window. +
- +
-===== Examples ===== +
- +
-<code> +
- +
-Trace5 (<-x " plus " <-y " is " <-x  add  (<-y)) +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== TraceAll ====== +
- +
-TraceAll +
- +
-===== Description ===== +
- +
-Removes all the values from the stack and prints them into the debug console. The values will be on a single line and **not** separated by a space when printed. Compare to [[TraceAllSp | TraceAllSP]] +
- +
-===== Examples ===== +
- +
-<code> +
-"Where" +
-"is"   +
-"Waldo?" +
- +
-traceAll   +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== TraceAllSp ====== +
- +
-TraceAllSp +
- +
-===== Description ===== +
- +
-Removes all the values from the stack and prints them into the debug console. The values will be on a single line and **will** be separated by a space when printed. Comparae to [[traceAll | TraceAll]] +
- +
-===== Examples ===== +
- +
-<code> +
-"Where" +
-"is"   +
-"Waldo?" +
- +
-traceAllSp  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== TraceStack ====== +
- +
-TraceStack +
- +
-===== Description ===== +
- +
-Prints all the items from the stack to the debug window without removing them. Items are printed one per line and the type of each is also provided. +
- +
-===== Examples ===== +
- +
-<code> +
- +
-# inspect what a function does to the stack +
-TraceStack # see stack before the call +
-@MyFunction +
-TraceStack # see stack after the call +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== true ====== +
- +
-true +
- +
-===== Description ===== +
- +
-Pushes a 1 onto the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (true)  +
-    trace("True")  +
-endif  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== TWOPI ====== +
- +
-TwoPI +
- +
-===== Description ===== +
- +
-Pushes the value of TAU (2PI) to the stack (6.2831853…) +
- +
-===== Examples ===== +
- +
-<code> +
-trace(TWOPI) #prints '6.2831853'  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== while ====== +
- +
-While +
- +
-===== Description ===== +
- +
-Beginning of a while loop. The statements between a ‘while’ and a ‘repeat’ should ultimately push a value to the stack that will determine if the loop executes the body of the ‘repeat’ block. +
- +
-A while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The while loop can be thought of as a repeating if statement. +
- +
-===== Examples ===== +
- +
-<code> +
-5 ->y  +
-while   <-y gt(0)   #is y greater than zero?  +
-repeat              #repeat this section of code  +
-    trace(<-y)  +
-    <-y sub(1) -> #subtract 1 from y so we don't end in infinite loop  +
-endwhile  +
-</code> +
- +
----- +
- +
- +
----- +
- +
-====== xor ====== +
- +
-XOR +
- +
-===== Description ===== +
- +
-Pops two items from the stack, treats them as boolean values, ‘xors’ them, and pushes 0 or 1 back to the stack. If both items are TRUE, 0 is pushed to the stack. If both items are FALSE, 0 is pushed to the stack. If one item is TRUE and the other is FALSE, 1 is pushed to the stack. +
- +
-===== Examples ===== +
- +
-<code> +
-if (1 xor (false))  +
-    trace("1 xor false is true")  +
-endif  +
-</code> +
- +
-----+
  
wiki/syntax.1551974262.txt.gz · Last modified: 2019/03/07 10:57 by Karsten75