Help:ParserFunctions

From Homestar Runner Wiki

Revision as of 01:06, 28 October 2007 by The Goblin (Talk | contribs)
Jump to: navigation, search
This page is created as a future help page, before it goes into the Help namespace. If you have any ideas for this page, please tell me on the talk page.

This wiki has an extension installed, called ParserFunctions. Here's how to use them:

Contents

#expr:

expr solves mathematical expressions. It does not work with strings, if you want to use those, see ifeq. It also only works with numerical entries.

Operator Operation Example
() Grouping operators {{#expr: (10+20) / 30 }} = 0
+ 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. It measures if the condition string is empty, it does the else text. If it is not empty, it does the than 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 shows this text. If the user does not specify it, it shows 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 it "Parameter is not defined".

This 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 does an 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 does the <ifequal> text. Otherwise, it does the <ifnotequal> text.

Some examples:

  • {{#ifeq: {{NAMESPACE}} | Help | This page is in the Help Namespace | This page is not in the Help Namespace }} shows up as This page is in the Help Namespace.
  • {{#ifeq: 7 | +000007 | Seven = Seven | Seven is not equal to Seven }} shows up as Seven = Seven

ifeq is case-sensitive.

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

#ifexist:

ifexist does an if-then-else process depending on if 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]] }} gives Strong Bad Email because "sbemail" exists.

#ifexpr:

ifexpr is a combination of if-then-else and expr. It can only be done with numbers, just like expr. Syntax:

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

Some examples:

  • {{#ifexpr: 30 / 40 = 120 | yes | no }} shows up as no.
  • {{#ifexpr: {{PAGENAME}} = ParserFunctions | This is a help page | No}} shows up as Expression error: Unrecognised word "parserfunctions" because PAGENAME is not a number.

#switch:

switch compares a string against many items, and shows a result if one is true. 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>
}}

"| <result n> = <text if n is true>" can be repeated as many times as neccesary. 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 instead will use <result 3>'s text.

#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 2026
y 2 digit year 00-99 26
n Month number 1-12 2
m Month number, with leading 0 01-12 02
M Month name, abbreviated Jan-Dec Feb
F Full month name January-December February
W Current week of the year 1-52 or 53, depending on year 06
j Day of the month 1-31 4
d Day of the month, with leading 0 01-31 04
z Day of the year 1-364, 365 on a leap year 34
D Day of the week, abbreviated Mon-Sun Wed
l Full day of the week Monday-Sunday Wednesday
N ISO 8601 day of the week 1 (Monday) - 7 (Sunday) 3
w American day of the week 0 (Monday - 6 (Sunday) 3
a am-pm am
A Capital AM-PM AM
g 12 hour format of the hour 1-12 9
h 12 hour format of the hour, with leading 0 01-12 09
G 24 hour format of the hour 0-23 9
H 24 hour format of the hour, with leading 0 00-23 09
i The minute 00-59 36
s The second 00-59 34
U Seconds since Midnight on January 1, 1970 0-∞ 1770197794
L Whether it's a leap year 0 if not, 1 if yes 0
t Days in the month 28-31 28

Any text not shown above will come out unmodified, so links and punctuation are possible. Examples:

  • {{#time: l j F Y }} generates Wednesday 4 February 2026.
  • {{#time: m/Y }} generates 02/2026.
  • {{#time: H:i | - 6 hours}} generates 03:36, 6 hours before the current time
  • {{#time: l Y-m-d }} generates Wednesday 2026-02-04.
  • {{#time: l }} generates Wednesday.
  • {{#time: z | 20071031}} generates 303, Halloween day in "z" format

#rand:

rand generates a random number. It has been depreciated in current versions of ParserFunctions, but the HRWiki uses an older version that still has rand. Syntax:

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

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

Examples:

  • {{#rand: 1 | 50 }} generates 5.
  • {{#rand: 1 | 500000 }} generates 371835.
  • {{#rand: .1 | .9 }} generates 0, because it cannot do decimals.

See Also

Meta's page on ParserFunctions

Personal tools