Ardapedia:Vorlagenprogrammierung: Unterschied zwischen den Versionen

Aus Ardapedia
(neu aus wikipedia)
 
(überarbeitet)
Zeile 1: Zeile 1:
{{Navigationsleiste Ardapedia Bausteine}}
< [[Ardapedia:Hilfe|Hilfe]] < [[Ardapedia:Bausteine|Bausteine]] < '''Vorlagenprogrammierung'''
< [[Ardapedia:Hilfe|Hilfe]] < [[Ardapedia:Bausteine|Bausteine]] < '''Vorlagenprogrammierung'''




{{Navigationsleiste Ardapedia Bausteine}}
Die Erweiterung „ParserFunctions“ für die von der Ardapedia verwendete MediaWiki-Software erlaubt bestimmte Konstrukte einer Programmiersprache, die ausschließlich in [[Ardapedia:Vorlagen|Vorlagen]] verwendet werden sollten.
Die Erweiterung „ParserFunctions“ für die von der Ardapedia verwendete MediaWiki-Software erlaubt bestimmte Konstrukte einer Programmiersprache, die ausschließlich in [[Ardapedia:Vorlagen|Vorlagen]] verwendet werden sollten.


Zeile 12: Zeile 11:
=== if ===
=== if ===


Die <span style="background-color:#336633;"><tt>if</tt></span>-Funktion ist ein Wenn-Dann-Sonst-Konstrukt. Die Syntax ist
Die {{Code|if}}-Funktion ist ein Wenn-Dann-Sonst-Konstrukt. Die Syntax ist


<span style="background-color:#336633;"><tt>{&#123; #if: <bedingung> | <dann-text> | <sonst-text> }}</tt></span>
{{Code|<nowiki>{&#123; #if: <bedingung> | <dann-text> | <sonst-text> }}</nowiki>}}


Enthält die <span style="background-color:#336633;"><tt><bedingung></tt></span> Text, gilt sie als erfüllt und es wird <span style="background-color:#336633;"><tt><dann-text></tt></span> zurückgegeben. Ist <span style="background-color:#336633;"><tt><bedingung></tt></span> hingegen leer oder besteht ausschließlich aus Leerzeichen (whitespace), gilt sie als nicht erfüllt und es wird <span style="background-color:#336633;"><tt><sonst-text></tt></span> zurückgegeben.
Enthält die {{Code|<bedingung>}} Text, gilt sie als erfüllt und es wird {{Code|<dann-text>}} zurückgegeben. Ist {{Code|<bedingung>}} hingegen leer oder besteht ausschließlich aus Leerzeichen (whitespace), gilt sie als nicht erfüllt und es wird {{Code|<sonst-text>}} zurückgegeben.


<span style="background-color:#336633;"><tt><sonst-text></tt></span> kann auch weggelassen werden, dann wird in diesem Fall nichts zurückgegeben.
{{Code|<sonst-text>}} kann auch weggelassen werden, dann wird in diesem Fall nichts zurückgegeben.


'''Beachte:''' <span style="background-color:#336633;"><tt>if</tt></span> unterstützt keine Gleichungen oder Ähnliches. Siehe dafür <span style="background-color:#336633;"><tt>ifeq</tt></span> und <span style="background-color:#336633;"><tt>ifexpr</tt></span>.
'''Beachte:''' {{Code|if}} unterstützt keine Gleichungen oder Ähnliches. Siehe dafür {{Code|ifeq}} und {{Code|ifexpr}}.


=== ifeq ===
=== ifeq ===


<span style="background-color:#336633;"><tt>ifeq</tt></span> vergleicht zwei Zeichenketten und gibt je nach Ergebnis verschiedene Texte zurück.
{{Code|ifeq}} vergleicht zwei Zeichenketten und gibt je nach Ergebnis verschiedene Texte zurück.


<span style="background-color:#336633;"><tt>{&#123; #ifeq: <text 1> | <text 2> | <text wenn gleich> | <text wenn ungleich> }}</tt></span>
{{Code|<nowiki>{&#123; #ifeq: <text 1> | <text 2> | <text wenn gleich> | <text wenn ungleich> }}</nowiki>}}


=== ifexist ===
=== ifexist ===


<span style="background-color:#336633;"><tt>ifexist</tt></span> prüft, ob unter einem angegebenen Stichwort ein Artikel existiert, und gibt je nachdem verschiedene Texte zurück.
{{Code|ifexist}} prüft, ob unter einem angegebenen Stichwort ein Artikel existiert, und gibt je nachdem verschiedene Texte zurück.


<span style="background-color:#336633;"><tt>{&#123; #ifexist: <Artikel> | <Text wenn Artikel existiert> | <Text wenn Artikel nicht existiert> }}</tt></span>
{{Code|<nowiki>{&#123; #ifexist: <Artikel> | <Text wenn Artikel existiert> | <Text wenn Artikel nicht existiert> }}</nowiki>}}


=== expr ===
=== expr ===


<span style="background-color:#336633;"><tt>expr</tt></span> berechnet mathematische Ausdrücke.
{{Code|expr}} berechnet mathematische Ausdrücke.


<span style="background-color:#336633;"><tt>{&#123; #expr: <ausdruck> }}</tt></span>
{{Code|<nowiki>{&#123; #expr: <ausdruck> }}</nowiki>}}


{| {{Tabellendesign}}
{| {{Tabellendesign}}
|+ Mögliche Operationen
|+ Mögliche Operationen
|-
|- {{Highlight}}
! {{Highlight}} | Operator
! Operator
! {{Highlight}} | Operation
! Operation
! {{Highlight}} | Beispiel
! Beispiel
|-
|-
| '''*'''
| '''*'''
| Multiplikation
| Multiplikation
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 * 7 }}</tt></span> = {{#expr: 30 * 7}}
| {{Code|<nowiki>{&#123; #expr: 30 * 7 }}</nowiki>}} = {{#expr: 30 * 7}}
|-
|-
| '''/''' oder '''div'''
| '''/''' oder '''div'''
| Division
| Division
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 / 7 }}</tt></span> = {{#expr: 30 / 7}}
| {{Code|<nowiki>{&#123; #expr: 30 / 7 }}</nowiki>}} = {{#expr: 30 / 7}}
|-
|-
| '''+'''
| '''+'''
| Addition
| Addition
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 + 7 }}</tt></span> = {{#expr: 30 + 7}}
| {{Code|<nowiki>{&#123; #expr: 30 + 7 }}</nowiki>}} = {{#expr: 30 + 7}}
|-
|-
| '''-'''
| '''-'''
| Subtraktion
| Subtraktion
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 - 7}}</tt></span> = {{#expr: 30 - 7}}
| {{Code|<nowiki>{&#123; #expr: 30 - 7}}</nowiki>}} = {{#expr: 30 - 7}}
|-
|-
| '''mod'''
| '''mod'''
| Modulo, der Rest einer Division
| Modulo, der Rest einer Division
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 mod 7 }}</tt></span> = {{#expr: 30 mod 7}}
| {{Code|<nowiki>{&#123; #expr: 30 mod 7 }}</nowiki>}} = {{#expr: 30 mod 7}}
|-
|-
| '''round'''
| '''round'''
| rundet die Zahl auf der linken Seite auf die Anzahl Nachkommastellen,
| rundet die Zahl auf der linken Seite auf die Anzahl Nachkommastellen,
die von der Zahl auf der rechten Seite angegeben wird
die von der Zahl auf der rechten Seite angegeben wird
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 / 7 round 7 }}</tt></span> = {{#expr: 30 / 7 round 7}}
| {{Code|<nowiki>{&#123; #expr: 30 / 7 round 7 }}</nowiki>}} = {{#expr: 30 / 7 round 7}}
|-
|-
| '''='''
| '''='''
| Gleichheit
| Gleichheit
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 = 7 }}</tt></span> = {{#expr: 30 = 7}}
| {{Code|<nowiki>{&#123; #expr: 30 = 7 }}</nowiki>}} = {{#expr: 30 = 7}}
|-
|-
| '''<>''' oder '''!='''
| '''<>''' oder '''!='''
| Ungleichheit
| Ungleichheit
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 <> 7 }}</tt></span> = {{#expr: 30 <> 7}}
| {{Code|<nowiki<{&#123; #expr: 30 <> 7 }}</nowiki>}} = {{#expr: 30 <> 7}}
|-
|-
| '''<'''
| '''<'''
| kleiner als
| kleiner als
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 < 7 }}</tt></span> = {{#expr: 30 < 7}}
| {{Code|<nowiki>{&#123; #expr: 30 < 7 }}</nowiki>}} = {{#expr: 30 < 7}}
|-
|-
| '''>'''
| '''>'''
| größer als
| größer als
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 > 7 }}</tt></span> = {{#expr: 30 > 7}}
| {{Code|<nowiki>{&#123; #expr: 30 > 7 }}</nowiki>}} = {{#expr: 30 > 7}}
|-
|-
| '''<='''
| '''<='''
| kleiner oder gleich
| kleiner oder gleich
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 <= 7 }}</tt></span> = {{#expr: 30 <= 7}}
| {{Code|<nowiki>{&#123; #expr: 30 <= 7 }}</nowiki>}} = {{#expr: 30 <= 7}}
|-
|-
| '''>='''
| '''>='''
| größer oder gleich
| größer oder gleich
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 >= 7 }}</tt></span> = {{#expr: 30 >= 7}}
| {{Code|<nowiki>{&#123; #expr: 30 >= 7 }}</nowiki>}} = {{#expr: 30 >= 7}}
|-
|-
| '''and'''
| '''and'''
| logisches UND
| logisches UND
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 and 7 }}</tt></span> = {{#expr: 30 and 7}}
| {{Code|<nowiki>{&#123; #expr: 30 and 7 }}</nowiki>}} = {{#expr: 30 and 7}}
|-
|-
| '''or'''
| '''or'''
| logisches ODER
| logisches ODER
| <span style="background-color:#336633;"><tt>{&#123; #expr: 30 or 7 }}</tt></span> = {{#expr: 30 or 7}}
| {{Code|<nowiki>{&#123; #expr: 30 or 7 }}</nowiki>}} = {{#expr: 30 or 7}}
|-
|-
| '''not'''
| '''not'''
| logisches NICHT
| logisches NICHT
| <span style="background-color:#336633;"><tt>{&#123; #expr: not 7 }}</tt></span> = {{#expr: not 7}}
| {{Code|<nowiki>{&#123; #expr: not 7 }}</nowiki>}} = {{#expr: not 7}}
|-
|-
| '''( )'''
| '''( )'''
| Gruppierung/Klammerung
| Gruppierung/Klammerung
| <span style="background-color:#336633;"><tt>{&#123; #expr: (30 + 7) * 7 }}</tt></span> = {{#expr: (30 + 7) * 7 }}
| {{Code|<nowiki>{&#123; #expr: (30 + 7) * 7 }}</nowiki>}} = {{#expr: (30 + 7) * 7 }}
|}
|}


Zeile 118: Zeile 117:
'''Beispiel:'''
'''Beispiel:'''


<span style="background-color:#336633;"><tt>{&#123; #expr: (100 - 32) / 9 * 5 round 0 }}</tt></span>
{{Code|<nowiki>{&#123; #expr: (100 - 32) / 9 * 5 round 0 }}</nowiki>}}


ergibt: {{ #expr: (100 - 32) / 9 * 5 round 0 }}
ergibt: {{ #expr: (100 - 32) / 9 * 5 round 0 }}
Zeile 124: Zeile 123:
Damit werden 100 Fahrenheit auf die Celsius-Skala umgerechnet (auf die nächste ganze Zahl gerundet).
Damit werden 100 Fahrenheit auf die Celsius-Skala umgerechnet (auf die nächste ganze Zahl gerundet).


Da diese Berechnungen aus Kompatibilitätsgründen mit dem englischen Zahlenformat durchgeführt werden (Beispiel: <span style="background-color:#336633;"><tt>{&#123; #expr: 13000 / 3.1 round 2}}</tt></span> ergibt {{ #expr: 13000 / 3.1 round 2 }}) müssen solche Zahlen zusätzlich in das im deutschen Sprachraum übliche Format umgewandelt werden (Beispiel: <span style="background-color:#336633;"><tt>{&#123;[[Ardapedia:Variablen|formatnum:]] {&#123; #expr: 13000 / 3.1 round 2 }} }}</tt></span> ergibt {{ formatnum: {{ #expr: 13000 / 3.1 round 2 }} }}).
Da diese Berechnungen aus Kompatibilitätsgründen mit dem englischen Zahlenformat durchgeführt werden (Beispiel: {{Code|<nowiki>{&#123; #expr: 13000 / 3.1 round 2}}</nowiki>}} ergibt {{ #expr: 13000 / 3.1 round 2 }}) müssen solche Zahlen zusätzlich in das im deutschen Sprachraum übliche Format umgewandelt werden (Beispiel: {{Code|<nowiki>{&#123;</nowiki>[[Ardapedia:Variablen|formatnum:]] <nowiki>{&#123; #expr: 13000 / 3.1 round 2 }} }}</nowiki>}} ergibt {{ formatnum: {{ #expr: 13000 / 3.1 round 2 }} }}).


=== ifexpr ===
=== ifexpr ===


<span style="background-color:#336633;"><tt>ifexpr</tt></span> wertet einen mathematischen Ausdruck aus. <span style="background-color:#336633;"><tt>{&#123; #ifexpr: <ausdruck> | <dann-text> | <sonst-text> }}</tt></span>
{{Code|ifexpr}} wertet einen mathematischen Ausdruck aus. {{Code|<nowiki>{&#123; #ifexpr: <ausdruck> | <dann-text> | <sonst-text> }}</nowiki>}}


Ist das Ergebnis von <span style="background-color:#336633;"><tt><ausdruck></tt></span> 0 (Null), wird <span style="background-color:#336633;"><tt><sonst-text></tt></span> zurückgegeben. Sonst wird <span style="background-color:#336633;"><tt><dann-text></tt></span> zurückgegeben.
Ist das Ergebnis von {{Code|<ausdruck>}} 0 (Null), wird {{Code|<sonst-text>}} zurückgegeben. Sonst wird {{Code|<dann-text>}} zurückgegeben.


<span style="background-color:#336633;"><tt><sonst-text></tt></span> kann auch weggelassen werden, dann wird in diesem Fall nichts zurückgegeben.
{{Code|<sonst-text>}} kann auch weggelassen werden, dann wird in diesem Fall nichts zurückgegeben.


Die Syntax für Ausdrücke wird in der Beschreibung von <span style="background-color:#336633;"><tt>expr</tt></span> erklärt.
Die Syntax für Ausdrücke wird in der Beschreibung von {{Code|expr}} erklärt.


=== switch ===
=== switch ===


<span style="background-color:#336633;"><tt>switch</tt></span> vergleicht einen Wert mit mehreren anderen. Die Grundsyntax ist:
{{Code|switch}} vergleicht einen Wert mit mehreren anderen. Die Grundsyntax ist:


<div style="background-color:#336633;"><tt>{&#123; #switch: &lt;vergleichswert&gt;<br/>
<div style="background-color:#336633;"><tt>{&#123; #switch: &lt;vergleichswert&gt;<br/>
Zeile 147: Zeile 146:
| #default = &lt;standardergebnis&gt; }}</tt></div>
| #default = &lt;standardergebnis&gt; }}</tt></div>


<span style="background-color:#336633;"><tt>switch</tt></span> geht alle Werte durch, bis der Vergleichswert gefunden wird. Dann wird das entsprechende Ergebnis (hinter dem Gleichheitszeichen) zurückgegeben. Wenn kein Wert übereinstimmt, wird der Eintrag unter <span style="background-color:#336633;"><tt>#default</tt></span> verwendet, sofern es diesen gibt. (Falls das Standardergebnis kein Gleichheitszeichen enthält, kann <span style="background-color:#336633;"><tt>#default</tt></span> auch weggelassen werden.)
{{Code|switch}} geht alle Werte durch, bis der Vergleichswert gefunden wird. Dann wird das entsprechende Ergebnis (hinter dem Gleichheitszeichen) zurückgegeben. Wenn kein Wert übereinstimmt, wird der Eintrag unter {{Code|#default}} verwendet, sofern es diesen gibt. (Falls das Standardergebnis kein Gleichheitszeichen enthält, kann {{Code|#default}} auch weggelassen werden.)


„Durchfall“-Werte sind ebenfalls möglich: <div style="background-color:#336633;"><tt>{&#123; #switch: &lt;vergleichswert&gt;<br/>
„Durchfall“-Werte sind ebenfalls möglich: <div style="background-color:#336633;"><tt>{&#123; #switch: &lt;vergleichswert&gt;<br/>
Zeile 157: Zeile 156:
| #default = &lt;standardergebnis&gt; }}</tt></div>
| #default = &lt;standardergebnis&gt; }}</tt></div>


Hier wird für <span style="background-color:#336633;"><tt>&lt;wert<sub>1</sub>&gt;</tt></span>, <span style="background-color:#336633;"><tt>&lt;wert<sub>2</sub>&gt;</tt></span> und <span style="background-color:#336633;"><tt>&lt;wert<sub>3</sub>&gt;</tt></span> derselbe Wert <span style="background-color:#336633;"><tt>&lt;ergebnis<sub>1,2,3</sub>&gt;</tt></span> zurückgegeben.
Hier wird für {{Code|&lt;wert<sub>1</sub>&gt;}}, {{Code|&lt;wert<sub>2</sub>&gt;}} und {{Code|&lt;wert<sub>3</sub>&gt;}} derselbe Wert {{Code|&lt;ergebnis<sub>1,2,3</sub>&gt;}} zurückgegeben.


=== time ===
=== time ===


<span style="background-color:#336633;"><tt>#time</tt></span> ist eine Zeit- und Datums-Formatierungsfunktion. Die Syntax ist <span style="background-color:#336633;"><tt>{&#123; #time: <format> }}</tt></span>
{{Code|#time}} ist eine Zeit- und Datums-Formatierungsfunktion. Die Syntax ist {{Code|<nowiki>{&#123; #time: <format> }}</nowiki>}}
oder <span style="background-color:#336633;"><tt>{&#123; #time: <format> | <zeit> }}</tt></span>
oder {{Code|<nowiki>{&#123; #time: <format> | <zeit> }}</nowiki>}}


Wenn <zeit> nicht angegeben wird, wird die Zeit zum Zeitpunkt der Umwandung in HTML benutzt. Durch das Servercaching kann es dabei zu Abweichungen bei der Artikelanzeige kommen. Eine manuelle Aktualisierung kann durch einen „null edit“ (Seite bearbeiten und Speichern ohne Änderung) erfolgen.
Wenn <zeit> nicht angegeben wird, wird die Zeit zum Zeitpunkt der Umwandung in HTML benutzt. Durch das Servercaching kann es dabei zu Abweichungen bei der Artikelanzeige kommen. Eine manuelle Aktualisierung kann durch einen „null edit“ (Seite bearbeiten und Speichern ohne Änderung) erfolgen.
Zeile 172: Zeile 171:


{| {{Tabellendesign}}
{| {{Tabellendesign}}
! {{Highlight}} | Code
|- {{Highlight}}
! {{Highlight}} | Beschreibung
! Code
! {{Highlight}} | Ausgabe
! Beschreibung
! Ausgabe
|-
|-
| d
| d
Zeile 232: Zeile 232:


{| {{Tabellendesign}}
{| {{Tabellendesign}}
! {{Highlight}} | Code
|- {{Highlight}}
! {{Highlight}} | Beschreibung
! Code
! Beschreibung
|-
|-
| xn
| xn
Zeile 257: Zeile 258:


{| {{Tabellendesign}}  
{| {{Tabellendesign}}  
! {{Highlight}} | Code  
|- {{Highlight}}
! {{Highlight}} | Beschreibung
! Code  
! {{Highlight}} | Ausgabe
! Beschreibung
! Ausgabe
|-
|-
| <nowiki>{{ #time:j"."n"."Y H":"i":"s|2 days 10 hours 40 minutes ago}}</nowiki>
| <nowiki>{{ #time:j"."n"."Y H":"i":"s|2 days 10 hours 40 minutes ago}}</nowiki>
Zeile 290: Zeile 292:
=== Verwendung mit subst ===
=== Verwendung mit subst ===


Die ParserFunctions können auch mit subst verwendet werden, solange kein Leerzeichen zwischen <span style="background-color:#336633;"><tt>subst:</tt></span> und <span style="background-color:#336633;"><tt>#</tt></span> steht.
Die ParserFunctions können auch mit subst verwendet werden, solange kein Leerzeichen zwischen {{Code|subst:}} und {{Code|#}} steht.


== Probleme ==
== Probleme ==

Version vom 12. August 2007, 20:20 Uhr

< Hilfe < Bausteine < Vorlagenprogrammierung


Hilfe

Die Erweiterung „ParserFunctions“ für die von der Ardapedia verwendete MediaWiki-Software erlaubt bestimmte Konstrukte einer Programmiersprache, die ausschließlich in Vorlagen verwendet werden sollten.

Der Einsatz dieser Funktionen sollte stets wohl überlegt erfolgen. Nicht jede Spielerei, die möglich ist, ist auch sinnvoll. Entsprechende Vorlagen sind besonders sorgfältig zu dokumentieren.

Beschreibung der Funktionen

if

Die if-Funktion ist ein Wenn-Dann-Sonst-Konstrukt. Die Syntax ist

{{ #if: <bedingung> | <dann-text> | <sonst-text> }}

Enthält die <bedingung> Text, gilt sie als erfüllt und es wird <dann-text> zurückgegeben. Ist <bedingung> hingegen leer oder besteht ausschließlich aus Leerzeichen (whitespace), gilt sie als nicht erfüllt und es wird <sonst-text> zurückgegeben.

<sonst-text> kann auch weggelassen werden, dann wird in diesem Fall nichts zurückgegeben.

Beachte: if unterstützt keine Gleichungen oder Ähnliches. Siehe dafür ifeq und ifexpr.

ifeq

ifeq vergleicht zwei Zeichenketten und gibt je nach Ergebnis verschiedene Texte zurück.

{{ #ifeq: <text 1> | <text 2> | <text wenn gleich> | <text wenn ungleich> }}

ifexist

ifexist prüft, ob unter einem angegebenen Stichwort ein Artikel existiert, und gibt je nachdem verschiedene Texte zurück.

{{ #ifexist: <Artikel> | <Text wenn Artikel existiert> | <Text wenn Artikel nicht existiert> }}

expr

expr berechnet mathematische Ausdrücke.

{{ #expr: <ausdruck> }}

Mögliche Operationen
Operator Operation Beispiel
* Multiplikation {{ #expr: 30 * 7 }} = 210
/ oder div Division {{ #expr: 30 / 7 }} = 4.2857142857143
+ Addition {{ #expr: 30 + 7 }} = 37
- Subtraktion {{ #expr: 30 - 7}} = 23
mod Modulo, der Rest einer Division {{ #expr: 30 mod 7 }} = 2
round rundet die Zahl auf der linken Seite auf die Anzahl Nachkommastellen,

die von der Zahl auf der rechten Seite angegeben wird

{{ #expr: 30 / 7 round 7 }} = 4.2857143
= Gleichheit {{ #expr: 30 = 7 }} = 0
<> oder != Ungleichheit <nowiki<{{ #expr: 30 <> 7 </nowiki>}} = 1
< kleiner als {{ #expr: 30 < 7 }} = 0
> größer als {{ #expr: 30 > 7 }} = 1
<= kleiner oder gleich {{ #expr: 30 <= 7 }} = 0
>= größer oder gleich {{ #expr: 30 >= 7 }} = 1
and logisches UND {{ #expr: 30 and 7 }} = 1
or logisches ODER {{ #expr: 30 or 7 }} = 1
not logisches NICHT {{ #expr: not 7 }} = 0
( ) Gruppierung/Klammerung {{ #expr: (30 + 7) * 7 }} = 259

Die boolschen Operatoren behandeln 0 (Null) als falsch und 1 als wahr. Zahlen werden mit dem Punkt als Dezimaltrenner angegeben.

Beispiel:

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

ergibt: 38

Damit werden 100 Fahrenheit auf die Celsius-Skala umgerechnet (auf die nächste ganze Zahl gerundet).

Da diese Berechnungen aus Kompatibilitätsgründen mit dem englischen Zahlenformat durchgeführt werden (Beispiel: {{ #expr: 13000 / 3.1 round 2}} ergibt 4193.55) müssen solche Zahlen zusätzlich in das im deutschen Sprachraum übliche Format umgewandelt werden (Beispiel: {{formatnum: {{ #expr: 13000 / 3.1 round 2 }} }} ergibt 4.193,55).

ifexpr

ifexpr wertet einen mathematischen Ausdruck aus. {{ #ifexpr: <ausdruck> | <dann-text> | <sonst-text> }}

Ist das Ergebnis von <ausdruck> 0 (Null), wird <sonst-text> zurückgegeben. Sonst wird <dann-text> zurückgegeben.

<sonst-text> kann auch weggelassen werden, dann wird in diesem Fall nichts zurückgegeben.

Die Syntax für Ausdrücke wird in der Beschreibung von expr erklärt.

switch

switch vergleicht einen Wert mit mehreren anderen. Die Grundsyntax ist:

{{ #switch: <vergleichswert>

| <wert1> = <ergebnis1>
| <wert2> = <ergebnis2>
| ...
| <wertn> = <ergebnisn>

| #default = <standardergebnis> }}

switch geht alle Werte durch, bis der Vergleichswert gefunden wird. Dann wird das entsprechende Ergebnis (hinter dem Gleichheitszeichen) zurückgegeben. Wenn kein Wert übereinstimmt, wird der Eintrag unter #default verwendet, sofern es diesen gibt. (Falls das Standardergebnis kein Gleichheitszeichen enthält, kann #default auch weggelassen werden.)

„Durchfall“-Werte sind ebenfalls möglich:

{{ #switch: <vergleichswert>

| <wert1>
| <wert2>
| <wert3> = <ergebnis1,2,3>
| ...
| <wertn> = <ergebnisn>

| #default = <standardergebnis> }}

Hier wird für <wert1>, <wert2> und <wert3> derselbe Wert <ergebnis1,2,3> zurückgegeben.

time

#time ist eine Zeit- und Datums-Formatierungsfunktion. Die Syntax ist {{ #time: <format> }} oder {{ #time: <format> | <zeit> }}

Wenn <zeit> nicht angegeben wird, wird die Zeit zum Zeitpunkt der Umwandung in HTML benutzt. Durch das Servercaching kann es dabei zu Abweichungen bei der Artikelanzeige kommen. Eine manuelle Aktualisierung kann durch einen „null edit“ (Seite bearbeiten und Speichern ohne Änderung) erfolgen.

Der <format>-Parameter ist ähnlich den der PHP-Datumsparameter.

Die folgenden Codes haben dieselbe Bedeutung wie in PHP. Alle numerischen Codes geben Zahlen entsprechend der lokalen Spracheinstellung zurück, durch die Nutzung des xn-Codes kann dieses Verhalten überschrieben werden.

Code Beschreibung Ausgabe
d Tag, mit führender Null 04
D Abkürzung des Wochentages, nur in seltenen Fällen internationalisiert. Sa
j Tag, ohne führende Null 4
l Ausgeschriebener Name des Wochentages, nur in seltenen Fällen internationalisiert. Samstag
F Ausgeschriebener Name des Monatnamens, in der Regel internationalisiert Mai
m Monat, mit führender Null. 05
M Abgekürzter Name des Monatnamens, in der Regel internationalisiert Mai
n Monat, ohne führende Null. 5
Y Jahr, 4-stellig 2024
y Jahr, 2-stellig. 24
H Stunde, mit führender Null 11
i Minute, mit führender Null 10
s Sekunde, mit führender Null 00

Die folgenden Codes sind Erweiterungen zu PHP:

Code Beschreibung
xn Formatiere den nächsten numerischen Code als Roh-ASCII. Beispiel, in Hindi: {{ #time:H, xnH}} ergibt ??, 06.
xr Formatiere den nächsten numerischen Code als römische Zahl
xg Gebe die Genitivform des Monatsnamens aus, für Sprachen, die eine Unterscheidung zwischen Genitiv und Nominativ machen.
xx Der Buchstabe „x“

Jedes unbekannte Zeichen wird unbearbeitet zur Ausgabe durchgereicht. Dazu gibt es zwei Konventionen zur unbearbeiteten Zeichenausgabe:

  • Zeichen in doppelten Anführungszeichen werden als solche ausgegeben (ohne Anführungszeichen). Anführungszeichen alleine werden als solche ausgegeben. Beispiele:
    • {{ #time: "The month is" F}} ? The month is January
    • {{ #time:i's"}} ? 20'11"
  • Backslash-escaping wird unterstützt: \H ergibt das Zeichen H, \" ergibt das Zeichen ".

Das Format des <zeit>-Parameters ist identisch mit der PHP-Funktion strtotime(). Relative Angaben, wie z.B. „+10 hours“ werden unterstützt, welche für eine Zeitzonen-Berechnung genutzt werden kann.

Code Beschreibung Ausgabe
{{ #time:j"."n"."Y H":"i":"s|2 days 10 hours 40 minutes ago}} Das angezeigte Datum wird um 2 Tage, 10 Stunden und 40 Minuten nach hinten verschoben 2:5:2024 00:30:00
{{ #time:j"."n"."Y H":"i":"s|yesterday}} Gestern 3.5.2024 00:00:00
{{ #time:j"."n"."Y H":"i":"s|tomorrow}} Morgen 5.5.2024 00:00:00
{{#time:j"."n"."Y H":"i":"s|2 days}} Übermorgen 6.5.2024 11:10:00
{{#time:j"."n"."Y H":"i":"s|2 years 2 months 2 weeks 2 days}} In 2 Jahren, 2 Monaten, 2 Wochen und 2 Tagen 20.7.2026 11:10:00
{{#time:j"."n"."Y H":"i":"s|1 year 1 month 1 week 1 day}} In einem Jahr, einem Monat, einer Woche und einem Tag 12.6.2025 11:10:00

Siehe das „GNU tar manual“ für weitere Informationen.

Verwendung mit subst

Die ParserFunctions können auch mit subst verwendet werden, solange kein Leerzeichen zwischen subst: und # steht.

Probleme

Tabellen

Die Wikisyntax für Tabellen kann nicht innerhalb von Bedingungen verwendet werden, daher muss anstatt des Pipe-Zeichens („|“) die Vorlage:! verwendet werden.

Weblinks


Diese Seite basiert auf der Seite Hilfe:Vorlagenprogrammierung aus der freien Enzyklopädie Wikipedia und steht unter der Creative Commons Attribution/Share-Alike-Lizenz. In der Wikipedia ist eine Liste der Autoren verfügbar.