# Help:ParserFunctions

(Difference between revisions)
 Revision as of 21:15, 20 January 2009 (edit) (blanked the page)← Older edit Revision as of 21:16, 20 January 2009 (edit) (undo)Newer edit → Line 1: Line 1: + This wiki has an extension installed called [[meta:Help:ParserFunctions|ParserFunctions]]. ParserFunctions are operators that take strings of text or numbers and perform logical or mathematical operators on them. They are often used in templates, to display current times and dates, and to generate random information. Here's how to use them: + ==#expr:== + {{#expr:}} solves mathematical expressions. It only works with numerical entries; if you want to use strings, see [[#.23ifeq:|#ifeq]]. + {| width="100%" border="5" cellspacing="2" cellpadding="2" style="font-size:15px;text-align:center;" + |- bgcolor="#FFFF00" + ! width="33%" | Operator !! width="33%" | Operation !! width="33%" | Example + |- + | () || Grouping operators || {{#expr: (10+20) / 30 }} = 1 + |- + | + || Positive || {{#expr: +30 - +30 }} = 0 + |- + | - || Negative || {{#expr: -30 + 30 }} = 0 + |- + | not || Unary NOT, logical NOT || {{#expr: not 30 + 0}} = 0 + |- + | * || Multiplication || {{#expr: 30 * 0 }} = 0 + |- + | / OR '''div'''|| Division || {{#expr: -30 / 30 }} = -1
{{#expr: -30 div 30 }} = -1 + |- + | + || Addition || {{#expr: -30 + 30 }} = 0 + |- + | - || Subtraction || {{#expr: 30 - 30 }} = 0 + |- + | round || Rounds off the number on the left to the power of 1/10 given on the right  || {{#expr: 24 / 49 round 4}} = 0.4898
{{#expr: 24 / 49 round 2}} = 0.49
{{#expr: 24 / 49 round 0}} = 0
+ |- + | = || Equality (will be 1 or 0) || {{#expr: 30 = 0 }} = 0
{{#expr: 30 = 30 }} = 1 + |- + | <> OR  != || Inequality  (will be 1 or 0)|| {{#expr: 30 <> 0 }} = 1
{{#expr: 30 <> 30 }} = 0
{{#expr: 30 != 0 }} = 1
{{#expr: 30 != 30 }} = 0 + |- + | < || Less Than (will be 1 or 0) || {{#expr: 30 < 0 }} = 0 + |- + | > || Greater Than (will be 1 or 0) || {{#expr: 30 > 0 }} = 1 + |- + | >= || Greater Than or Equal To (will be 1 or 0) || {{#expr: 30 >= 0 }} = 1 + |- + | <= || Less Than or Equal To (will be 1 or 0) || {{#expr: 30 <= 0 }} = 0 + |}
+ + ==#if:== + The {{#if:}} function is an if-then-else system. If the condition string is empty, it returns the "else text". If it is not empty, it returns the "then text". The syntax is: +
{{#if:  |  |  }}
+ + Its most common usage is in templates, where if the user defines a parameter, then it returns some prescribed text. If the user does not specify the parameter, it returns a default. Example: +
{{#if: {{{parameter|}}} | Parameter is defined | Parameter is not defined }}
+ If the user types {{templatename|parameter=true}} or something similar, the result is "Parameter is defined". However, if they type {{templatename}}, the result is "Parameter is not defined". Note in the above example that the expression {{{parameter|}}} is a special function that returns the value of the parameter if it has been defined and returns the text to the right of the vertical bar (|) if the parameter has not been defined. + + {{#if:}} does not solve expressions. For example, if you type {{#if: 30 - 30 = 50 | 1 | 0 }}, the result will be 1, since 30 - 30 = 50 is not empty. If you want to do if-then-else using expressions, see [[#.23ifexpr:|#ifexpr]]. + + ==#ifeq:== + + {{#ifeq:}} compares two strings and then performs an if-then-else process. To use: +
{{#ifeq:  |  |  |  }}
+ + If text 1 and text 2 are equal, then it returns the text. Otherwise, it returns the text. + + Some examples: + + *'''{{#ifeq: {{NAMESPACE}} | Help | This page is in the Help Namespace | This page is not in the Help Namespace }}''' shows up as '''{{#ifeq: {{NAMESPACE}} | Help | This page is in the Help Namespace | This page is not in the Help Namespace }}'''. + *'''{{#ifeq: 7 | +000007.0 | Seven = Seven | Seven is not equal to Seven }}''' shows up as '''{{#ifeq: 7 | +000007.0 | Seven = Seven | Seven is not equal to Seven }}''' + + In this above example, notice that #ifeq can treat numbers as well as strings. + + {{#ifeq:}} is case-sensitive: + + '''{{#ifeq: capital | Capital | Equal | Not Equal }}''' shows up as '''{{#ifeq: capital | Capital | Equal | Not Equal }}'''. + + ==#ifexist:== + {{#ifexist:}} performs an if-then-else process depending on whether a page exists. Syntax: +
{{#ifexist:  |  |  }}
+ + {{#ifexist:}} does not work with interwiki links. + + Example: + + '''{{#ifexist: sbemail | [[Strong Bad Email]] | [[Main Page]] }}''' returns '''{{#ifexist: sbemail | [[Strong Bad Email]] | [[Main Page]] }}''' because a page named "sbemail" {{#ifexist: sbemail | does exist | does not exist }}. + + ==#ifexpr:== + + {{#ifexpr:}} is an if-then-else routine that, like {{#expr:}}, can only be used with numbers. Syntax: +
{{#ifexpr:  |  |  }}
+ + Some examples: + + *'''{{#ifexpr: 30 / 40 = 120 | yes | no }}''' returns '''{{#ifexpr: 30 / 40 = 120 | yes | no }}'''. + *'''{{#ifexpr: {{PAGENAME}} = ParserFunctions |  This is a help page | No}}''' returns '''{{#ifexpr: {{PAGENAME}} = ParserFunctions |  This is a help page | No}}''' because "ParserFunctions" (the text returned by {{PAGENAME}}) is a string, not a number. + + ==#switch:== + + {{#switch:}} compares a number ''or'' a string against many items, and returns a result corresponding to the item it matches. Syntax: +
+                                                                {{#switch:
+                                                                |  =
+                                                                |  =
+                                                                |  =
+                                                                |  =
+                                                                | #default =
+                                                                }}
+ + If matches , for example, will be returned by the function. If does not match any of the first four items, will be returned. + + "| = "  can be repeated as many times as necessary. However, "#default" can only be used once. + + It is also possible to have "fall-through": +
+                                                                {{#switch:
+                                                                |
+                                                                |
+                                                                |  =
+                                                                |  =
+                                                                | #default =
+                                                                }}
+ and do not have equal signs, and if matches either of them, the text corresponding to will be returned. + + ==#time:== + + {{#time:}} is used for time and date formatting. It can be used to show the current time or day, or a set time or day in a certain format. Either way, here are the codes (following UTC): + + {| width="100%" border="5" cellspacing="2" cellpadding="2" style="font-size:15px;text-align:center;" + |- bgcolor="#FFFF00" + ! width="25%" | Code !! width="25%" | What it is !! width="25%" | Possible results !! width="25%" | Currently + |- + | Y || 4 digit year || 1970-2038 || {{#time: Y }} + |- + | y || 2 digit year || 00-99 || {{#time: y }} + |- + | n ||  Month number || 1-12 || {{#time: n }} + |- + | m || Month number, with leading 0 || 01-12 || {{#time: m }} + |- + | M || Month name, abbreviated || Jan-Dec || {{#time: M }} + |- + | F || Full month name || January-December || {{#time: F }} + |- + | W || Current week of the year || 1-52 or 53, depending on year || {{#time: W }} + |- + | j || Day of the month || 1-31 || {{#time: j }} + |- + | d || Day of the month, with leading 0 || 01-31 || {{#time: d }} + |- + | z || Day of the year || 1-364, 365 on a leap year || {{#time: z }} + |- + | D || Day of the week, abbreviated || Mon-Sun || {{#time: D }} + |- + | l || Full day of the week || Monday-Sunday || {{#time: l }} + |- + | N || ISO 8601 day of the week || 1 (Monday) - 7 (Sunday) || {{#time: N }} + |- + | w || American day of the week || 0 (Monday - 6 (Sunday) || {{#time: w }} + |- + | a || am or pm (lowercase) || am-pm || {{#time: a }} + |- + | A || AM or PM (capital) || AM-PM || {{#time: A }} + |- + | g || 12 hour format of the hour || 1-12 || {{#time: g }} + |- + | h || 12 hour format of the hour, with leading 0 || 01-12 || {{#time: h }} + |- + | G || 24 hour format of the hour || 0-23 || {{#time: G }} + |- + | H || 24 hour format of the hour, with leading 0 || 00-23 || {{#time: H }} + |- + | i || The minute || 00-59 || {{#time: i }} + |- + | s || The second || 00-59 || {{#time: s }} + |- + | U || Seconds since Midnight on  January 1, 1970|| 0-∞ || {{#time: U }} + |- + | L || Whether it's a leap year || 0 if not, 1 if yes || {{#time: L }} + |- + | t || Days in the month || 28-31 || {{#time: t }} + |} + If any input other than those discussed above is provided, it will pass through the function unmodified. So, links and punctuation can be easily used with this function. + Examples: + *'''{{#time: l j F Y }}''' generates '''{{#time: l j F Y }}'''. + *'''{{#time: m/Y }}''' generates '''{{#time: m/Y }}'''. + *'''{{#time: H:i | - 6 hours}}''' generates '''{{#time: H:i | - 6 hours}}''', 6 hours before the current time + *'''{{#time: l Y-m-d }}''' generates '''{{#time: l Y-m-d }}'''. + *'''{{#time: l }}''' generates '''{{#time: l }}'''. + *'''{{#time: z | 20071031}}''' generates '''{{#time: z | 20071031 }}''', Halloween day in "z" format + + ==#rand:== + + {{#rand:}} generates a random integer. (It has been discontinued in standard versions of ParserFunctions, but the Homestar Runner Wiki uses a custom version that includes {{#rand:}}.) Syntax: + +
{{#rand:  |  }}
+ + The minimum is the smallest ineteger it can generate, the maximum is the largest. + + Examples: + + *'''{{#rand: 1 | 50 }}''' generates '''{{#rand: 1 | 50 }}'''. + *'''{{#rand: 1 | 500000 }}''' generates '''{{#rand: 1 | 500000 }}'''. + *'''{{#rand: -10 | -1 }}''' generates '''{{#rand: -10 | -1 }}'''. + *'''{{#rand: .1 | .9 }}''' generates '''{{#rand: .1 | .9 }}''', because it rounds the magnitude of the input down to the nearest integer (in this example, both the minimum and maximum values are '''0'''). + + ==See Also== + *[[meta:Help:ParserFunctions|Meta's page on ParserFunctions]] + + [[Category:Help|{{PAGENAME}}]]

## Revision as of 21:16, 20 January 2009

This wiki has an extension installed called ParserFunctions. ParserFunctions are operators that take strings of text or numbers and perform logical or mathematical operators on them. They are often used in templates, to display current times and dates, and to generate random information. Here's how to use them:

## #expr:

{{#expr:}} solves mathematical expressions. It only works with numerical entries; if you want to use strings, see #ifeq.

Operator Operation Example
() Grouping operators {{#expr: (10+20) / 30 }} = 1
+ Positive {{#expr: +30 - +30 }} = 0
- Negative {{#expr: -30 + 30 }} = 0
not Unary NOT, logical NOT {{#expr: not 30 + 0}} = 0
* Multiplication {{#expr: 30 * 0 }} = 0
/ OR div Division {{#expr: -30 / 30 }} = -1
{{#expr: -30 div 30 }} = -1
+ Addition {{#expr: -30 + 30 }} = 0
- Subtraction {{#expr: 30 - 30 }} = 0
round Rounds off the number on the left to the power of 1/10 given on the right {{#expr: 24 / 49 round 4}} = 0.4898
{{#expr: 24 / 49 round 2}} = 0.49
{{#expr: 24 / 49 round 0}} = 0
= Equality (will be 1 or 0) {{#expr: 30 = 0 }} = 0
{{#expr: 30 = 30 }} = 1
<> OR  != Inequality (will be 1 or 0) {{#expr: 30 <> 0 }} = 1
{{#expr: 30 <> 30 }} = 0
{{#expr: 30 != 0 }} = 1
{{#expr: 30 != 30 }} = 0
< Less Than (will be 1 or 0) {{#expr: 30 < 0 }} = 0
> Greater Than (will be 1 or 0) {{#expr: 30 > 0 }} = 1
>= Greater Than or Equal To (will be 1 or 0) {{#expr: 30 >= 0 }} = 1
<= Less Than or Equal To (will be 1 or 0) {{#expr: 30 <= 0 }} = 0

## #if:

The {{#if:}} function is an if-then-else system. If the condition string is empty, it returns the "else text". If it is not empty, it returns the "then text". The syntax is:

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

Its most common usage is in templates, where if the user defines a parameter, then it returns some prescribed text. If the user does not specify the parameter, it returns a default. Example:

`{{#if: {{{parameter|}}} | Parameter is defined | Parameter is not defined }}`

If the user types {{templatename|parameter=true}} or something similar, the result is "Parameter is defined". However, if they type {{templatename}}, the result is "Parameter is not defined". Note in the above example that the expression is a special function that returns the value of the parameter if it has been defined and returns the text to the right of the vertical bar (|) if the parameter has not been defined.

{{#if:}} does not solve expressions. For example, if you type {{#if: 30 - 30 = 50 | 1 | 0 }}, the result will be 1, since 30 - 30 = 50 is not empty. If you want to do if-then-else using expressions, see #ifexpr.

## #ifeq:

{{#ifeq:}} compares two strings and then performs an if-then-else process. To use:

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

If text 1 and text 2 are equal, then it returns the <ifequal> text. Otherwise, it returns the <ifnotequal> text.

Some examples:

• {{#ifeq: 7 | +000007.0 | Seven = Seven | Seven is not equal to Seven }} shows up as Seven = Seven

In this above example, notice that #ifeq can treat numbers as well as strings.

{{#ifeq:}} is case-sensitive:

{{#ifeq: capital | Capital | Equal | Not Equal }} shows up as Not Equal.

## #ifexist:

{{#ifexist:}} performs an if-then-else process depending on whether a page exists. Syntax:

`{{#ifexist: <page name> | <if exists> | <if does not exist> }}`

{{#ifexist:}} does not work with interwiki links.

Example:

{{#ifexist: sbemail | [[Strong Bad Email]] | [[Main Page]] }} returns Strong Bad Email because a page named "sbemail" does exist.

## #ifexpr:

{{#ifexpr:}} is an if-then-else routine that, like {{#expr:}}, can only be used with numbers. Syntax:

`{{#ifexpr: <expression> | <if true> | <if false> }}`

Some examples:

• {{#ifexpr: 30 / 40 = 120 | yes | no }} returns no.
• {{#ifexpr: {{PAGENAME}} = ParserFunctions | This is a help page | No}} returns Expression error: Unrecognised word "parserfunctions" because "ParserFunctions" (the text returned by {{PAGENAME}}) is a string, not a number.

## #switch:

{{#switch:}} compares a number or a string against many items, and returns a result corresponding to the item it matches. Syntax:

```{{#switch: <value>
| <result 1> = <text if 1 is true>
| <result 2> = <text if 2 is true>
| <result 3> = <text if 3 is true>
| <result 4> = <text if 4 is true>
| #default = <default value if none are true>
}}```

If <value> matches <result 2>, for example, <text if 2 is true> will be returned by the function. If <value> does not match any of the first four items, <default value if none are true> will be returned.

"| <result n> = <text if n is true>" can be repeated as many times as necessary. However, "#default" can only be used once.

It is also possible to have "fall-through":

```{{#switch: <value>
| <result 1>
| <result 2>
| <result 3> = <text if 1, 2, or 3 is true>
| <result 4> = <text if 4 is true>
| #default = <default value if none are true>
}}```

<result 1> and <result 2> do not have equal signs, and if <value> matches either of them, the text corresponding to <result 3> will be returned.

## #time:

{{#time:}} is used for time and date formatting. It can be used to show the current time or day, or a set time or day in a certain format. Either way, here are the codes (following UTC):

Code What it is Possible results Currently
Y 4 digit year 1970-2038 2020
y 2 digit year 00-99 20
n Month number 1-12 11
m Month number, with leading 0 01-12 11
M Month name, abbreviated Jan-Dec Nov
F Full month name January-December November
W Current week of the year 1-52 or 53, depending on year 48
j Day of the month 1-31 27
d Day of the month, with leading 0 01-31 27
z Day of the year 1-364, 365 on a leap year 331
D Day of the week, abbreviated Mon-Sun Fri
l Full day of the week Monday-Sunday Friday
N ISO 8601 day of the week 1 (Monday) - 7 (Sunday) 5
w American day of the week 0 (Monday - 6 (Sunday) 5
a am or pm (lowercase) am-pm pm
A AM or PM (capital) AM-PM PM
g 12 hour format of the hour 1-12 6
h 12 hour format of the hour, with leading 0 01-12 06
G 24 hour format of the hour 0-23 18
H 24 hour format of the hour, with leading 0 00-23 18
i The minute 00-59 30
s The second 00-59 53
U Seconds since Midnight on January 1, 1970 0-∞ 1606501853
L Whether it's a leap year 0 if not, 1 if yes 1
t Days in the month 28-31 30

If any input other than those discussed above is provided, it will pass through the function unmodified. So, links and punctuation can be easily used with this function. Examples:

• {{#time: l j F Y }} generates Friday 27 November 2020.
• {{#time: m/Y }} generates 11/2020.
• {{#time: H:i | - 6 hours}} generates 12:30, 6 hours before the current time
• {{#time: l Y-m-d }} generates Friday 2020-11-27.
• {{#time: l }} generates Friday.
• {{#time: z | 20071031}} generates 303, Halloween day in "z" format

## #rand:

{{#rand:}} generates a random integer. (It has been discontinued in standard versions of ParserFunctions, but the Homestar Runner Wiki uses a custom version that includes {{#rand:}}.) Syntax:

`{{#rand: <minimum> | <maximum> }}`

The minimum is the smallest ineteger it can generate, the maximum is the largest.

Examples:

• {{#rand: 1 | 50 }} generates 4.
• {{#rand: 1 | 500000 }} generates 291162.
• {{#rand: -10 | -1 }} generates -6.
• {{#rand: .1 | .9 }} generates 0, because it rounds the magnitude of the input down to the nearest integer (in this example, both the minimum and maximum values are 0).