Hilfe:Vorlagenprogrammierung
Seit Mitte April 2006 verfügt die Wiki-Syntax der MediaWiki-Software testweise über verschiedene Konstrukte einer Programmiersprache für die Verwendung in Vorlagen, die unter anderem die If-Konstrukte ersetzen sollen.
Die Sprachkonstrukte sollten ausschließlich im Vorlagen-Namensraum verwendet und wohlüberlegt eingesetzt werden. Nicht jede Spielerei, die möglich ist, ist auch sinnvoll. Die genaue Syntax kann sich noch ändern! Programmierkonstrukte, die nicht ausreichend dokumentiert sind, werden wieder gelöscht.
Beschreibung der ParserFunctions
Funktion if
Die if
-Funktion ist ein Wenn-Dann-Sonst-Konstrukt. Die Syntax:
{{#if: <bedingung> | <dann-text> | <sonst-text>}}
Ist <bedingung>
leer oder besteht nur aus Leerzeichen (Whitespace), gilt es als falsch, und <sonst-text>
wird zurückgegeben. Sonst wird <dann-text>
zurückgegeben. <sonst-text>
kann auch weggelassen werden, dann wird in diesem Fall nichts zurückgegeben.
Achtung: if
unterstützt keine Gleichungen oder Ähnliches. Siehe dafür ifeq
und ifexpr
.
Funktion 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> }}
Funktion expr
expr berechnet mathematische Ausdrücke.
{{ #expr: <ausdruck> }}
Operator | Operation | Beispiel |
---|---|---|
* | Multiplikation | {{#expr: 30 * 7}} = {{#expr: 30 * 7}} |
/ oder div | Division | {{#expr: 30 / 7}} = {{#expr: 30 / 7}} |
+ | Addition | {{#expr: 30 + 7}} = {{#expr: 30 + 7}} |
- | Subtraktion (or Negation) | {{#expr: 30 - 7}} = {{#expr: 30 - 7}} |
mod | Modulo, der Rest einer Division | {{#expr: 30 mod 7}} = {{#expr: 30 mod 7}} |
round | Rundet die Zahl auf der linken Seite auf die Anzahl Stellen, die von der Zahl auf der rechten Seite angegeben wird | {{#expr: 30 / 7 round 7}} = {{#expr: 30 / 7 round 7}} |
= | Gleichheit | {{#expr: 30 = 7}} = {{#expr: 30 = 7}} |
<> oder != | Ungleichheit | {{#expr: 30 <> 7}} = {{#expr: 30 <> 7}} |
< | Kleiner als | {{#expr: 30 < 7}} = {{#expr: 30 < 7}} |
> | Größer als | {{#expr: 30 > 7}} = {{#expr: 30 > 7}} |
<= | Kleiner oder gleich | {{#expr: 30 <= 7}} = {{#expr: 30 <= 7}} |
>= | Größer oder gleich | {{#expr: 30 >= 7}} = {{#expr: 30 >= 7}} |
and | Logisches UND | {{#expr: 30 and 7}} = {{#expr: 30 and 7}} |
or | Logisches ODER | {{#expr: 30 or 7}} = {{#expr: 30 or 7}} |
not | Logisches NICHT | {{#expr: not 7}} = {{#expr: not 7}} |
( ) | Gruppierung/Klammerung | {{#expr: (30 + 7) * 7 }} = {{#expr: (30 + 7) * 7 }} |
Die Bool'schen 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:
{{ #expr: (100 - 32) / 9 * 5 round 0 }}
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 {{ #expr: 13000 / 3.1 round 2 }}) müssen solche Zahlen zusätzlich in das im deutschen Sprachraum übliche Format umgewandelt werden (Beispiel: {{
formatnum: {{ #expr: 13000 / 3.1 round 2 }} }}
ergibt {{ #expr: 13.000 / 3,1 round 2 }}).
Funktion ifexpr
ifexpr
Wertet einen mathematischen Ausdruck aus.
{{#ifexpr: <ausdruck> | <dann-text> | <sonst-text> }}
Ist das Ergebnis von <bedingung>
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.
Funktion 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: <comparison value> | <wert1> | <wert2> | <wert3> = <ergebnis1,2,3> | ... | <wertn> = <ergebnisn> | #default = <standardergebnis> }}
Hier für <wert1>
, <wert2>
und <wert3>
derselbe Wert <ergebnis1,2,3>
zurückgegeben.
Verwendung mit subst
Die ParserFunctions können auch mit subst verwendet werden, solange kein Leerzeichen zwischen subst:
und #
steht.
Überprüfung von Zeichenketten
Mit #expr: können zwar numerische Werte, jedoch keine Zeichenketten verwendet werden. Dies lässt sich aber über die folgenden Vorlagen bewerkstelligen. Sie sind nicht Teil der ParserFunctions, werden allerdings der Vollständigkeit halber hier mit aufgelistet, um einen umfassenden Überblick über die zur Vorlagen-Programmierung einsetzbaren Mittel zu geben.
Nachfolgend bedeutet wahr, dass der jeweilige Parameter eine nicht-leere Zeichenkette enthält sowie nicht nur aus Whitespaces besteht.
Syntax | Beschreibung | Wahrheitstabelle | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
{{booland|A|B}} | Wenn A und B wahr sind, ist das Ergebnis wahr. |
| |||||||||
{{boolor|A|B}} | Wenn A oder B wahr sind, ist das Ergebnis wahr. |
| |||||||||
{{boolxor|A|B}} | Wenn entweder A oder B wahr ist, ist das Ergebnis wahr. |
| |||||||||
{{boolnxor|A|B}} | Wenn A und B falsch sind oder A und B wahr sind, ist das Ergebnis falsch. |
| |||||||||
{{boolnand|A|B}} | Wenn A oder B falsch sind, ist das Ergebnis wahr. |
| |||||||||
{{boolnor|A|B}} | Wenn A und B falsch sind, ist das Ergebnis wahr. |
| |||||||||
{{boolnot|A}} | Wenn A falsch ist, ist das Ergebnis wahr. |
Dieser Artikel basiert auf dem Artikel Vorlagenprogrammierung aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar. |