Jump to content

Help:ParserFunctions: Difference between revisions

From Meta, a Wikimedia project coordination wiki
Content deleted Content added
→‎Numbers: This applies even though e.g. <nowiki>{{NUMBEROFARTICLES}}</nowiki> uses comma delimiters every three digits, and in some localized versions of MediaWiki point delimiters.
Tim Starling (talk | contribs)
removed rand, added switch
Line 79: Line 79:
||<nowiki>{{#expr: (30 + 7) * 7 }}</nowiki> = {{#expr: (30 + 7) * 7 }}
||<nowiki>{{#expr: (30 + 7) * 7 }}</nowiki> = {{#expr: (30 + 7) * 7 }}
|}
|}

The boolean operators consider 0 to be false and 1 to be true.
The boolean operators consider 0 to be false and 1 to be true. Numbers are given in decimal with "." for the decimal point. FORTRAN-style scientific notation is not supported.


Example:
Example:
Line 122: Line 123:
If the expression evaluates to zero, then the ''else text'' is returned, otherwise the ''then text'' is returned. Expression syntax is the same as for <tt>expr</tt>.
If the expression evaluates to zero, then the ''else text'' is returned, otherwise the ''then text'' is returned. Expression syntax is the same as for <tt>expr</tt>.


== rand==
== switch ==

The <tt>rand</tt> function gives random numbers in a specified range.

<nowiki>{{</nowiki> #rand: ''&lt;minimum>'' | ''&lt;maximum>'' }}

The presence of this function does not affect the cache lifetime, so the number displayed will typically only change once per edit.


Will be documented some time.
==Numbers==
In the numbers in submitted expressions a decimal point is allowed, and a non-integer result has a decimal point in it. However, commas are neither accepted in input nor produced in output. This applies even though e.g. <nowiki>{{NUMBEROFARTICLES}}</nowiki> uses comma delimiters every three digits, and in some localized versions of MediaWiki point delimiters.


== Installation ==
== Installation ==

Revision as of 11:13, 18 April 2006

Template:ParserFunctions

This MediaWiki extension is a collection of parser functions. Parser functions typically have the syntax:

{{#functionname: argument 1 | argument 2 | argument 3...}}

This module defines five functions at present: expr, if, ifeq, ifexpr, and rand.

expr

The expr function computes mathematical expressions. The supported operators (roughly in order of precedence) are:

Operator Operation Example
* Multiplication {{#expr: 30 * 7}} = 210
/ or div Division {{#expr: 30 / 7}} = 4.2857142857143
+ Addition {{#expr: 30 + 7}} = 37
- Subtraction (or negation) {{#expr: 30 - 7}} = 23
mod Modulo, gives the remainder of a division {{#expr: 30 mod 7}} = 2
round Rounds off the number on the left to the specified number
of digits after the decimal place, given on the right
{{#expr: 30 / 7 round 7}} = 4.2857143
= Equality {{#expr: 30 = 7}} = 0
<> or != Inequality {{#expr: 30 <> 7}} = 1
< Less than {{#expr: 30 < 7}} = 0
> Greater than {{#expr: 30 > 7}} = 1
<= Less than or equal to {{#expr: 30 <= 7}} = 0
>= Greater than or equal to {{#expr: 30 >= 7}} = 1
and Logical AND {{#expr: 30 and 7}} = 1
or Logical OR {{#expr: 30 or 7}} = 1
not Logical NOT {{#expr: not 7}} = 0
( ) Grouping operators {{#expr: (30 + 7) * 7 }} = 259

The boolean operators consider 0 to be false and 1 to be true. Numbers are given in decimal with "." for the decimal point. FORTRAN-style scientific notation is not supported.

Example:

{{ #expr: (100 - 32) / 9 * 5 round 0 }}

gives:

38

which is 100°F in °C, rounded to the nearest whole number.

if

The if function is an if-then-else construct. The syntax is:

{{ #if: <condition> | <then text> | <else text> }}

If the condition is an empty string or consists only of whitespace, then it is considered false, and the else text is returned. Otherwise, the then text is returned. The else text may be omitted, in which case the result will be blank if the condition is false.

An example:

                      {{Template|parameter=something}}  {{Template}} {{Template|parameter=}}
                                     |                        |                |
                                     |                        |                |
                                     |                        |                |
{{ #if: {{{parameter|}}} | Parameter is defined. | Parameter is undefined, or empty }}

Note that the if function does not support "=" signs or mathematical expressions. {{#if: 1 = 2|yes|no}} will return "yes", because the string "1 = 2" is not blank. It is intended as an "if defined" structure. To compare strings, use ifeq. To compare numbers, use ifexpr.

ifeq

ifeq compares two strings, and returns another string depending on the result of that comparison. The syntax is:

{{ #ifeq: <comparison text 1> | <comparison text 2> | <equal text> | <not equal text> }}

ifexpr

ifexpr evaluates a mathematical expression and returns one of two strings depending on the result.

{{ #ifexpr: <expression> | <then text> | <else text> }}

If the expression evaluates to zero, then the else text is returned, otherwise the then text is returned. Expression syntax is the same as for expr.

switch

Will be documented some time.

Installation

Download both of these files and put them in a new directory called ParserFunctions in your extensions directory.

Then put the following at the end of your LocalSettings.php:

require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );

You can also browse the code tree here:

External Links