Benutzer:Jack of Blades/Hilfe:Parser-Funktionen

Aus MarioWiki
Zur Navigation springen Zur Suche springen
Alle dürfen diese Hilfeseite bearbeiten. Ihr könnt mithelfen, wenn ihr möchtet.

#expr[Bearbeiten]

Art Operatoren
Gruppieren (Klammern) ( )
Zahlen 1234.5   e (2.718)   pi (3.142)
Binärer Operator e   unäre +,-
Unäre Operatoren not ceil trunc floor abs exp ln sin cos tan acos asin atan
Binäre Operatoren ^
* / div mod
+ -
Runden round
Logische Operatoren = != <> > < >= <=
and
or

Diese Funktion berechnet einen mathematischen Ausdruck und gibt den errechneten Wert aus.

{{#expr: Ausdruck }}

Die verfügbaren Operatoren sind rechts aufgelistet, in der Reihenfolge des Rangs. Genauigkeit und Format des ausgegebenen Ergebnisses hängen vom Betriebssystem des Wikiservers sowie dem Zahlenformat der eingestellten Sprache ab.

Bei Nutzung der Booleschen Algebra ergibt 0 immer falsch und jeder andere Wert, ob positiv oder negativ, immer wahr:

{{#expr: 1 and -1 }}1
{{#expr: 1 and 0 }}0

Ein leerer eingegebener Ausdruck erzeugt eine leere Ausgabe. Ungültige Ausdrücke erzeugen verschiedene Fehlermeldungen, welche durch Nutzung der Funktion #iferror abgefangen werden können:

{{#expr: }}
{{#expr: 1+ }}Fehler im Ausdruck: Fehlender Operand für +
{{#expr: 1 foo 2 }}Fehler im Ausdruck: Unerkanntes Wort „foo“

Die Ordnung der Rechengrößen vor oder nach einer Nummer/Zahl ist wichtig und können als negative oder positive Werte behandelt werden, wenn der Operand falsche Werte ausgibt:

{{#expr: +1 }}1
{{#expr: -1 }}-1
{{#expr: + 1 }}1
{{#expr: - 1 }}-1

Anmerkung: Wenn du Zauberwörter verwenden möchtest, dann achte darauf, dass keine Kommas drin stehen und dass die Zauberwörter richtig lauten. Ein Beispiel wäre {{NUMBEROFUSERS}}.

{{#expr:{{NUMBEROFUSERS}}+100}} 102.148
{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}2248
Warnung:
Der Operator mod ergibt bei einigen Werten des zweiten Parameters falsche Ergebnisse:{{#expr: 123 mod (2^64-1)}}Division durch Null (erzeugt einen leeren String; sollte eigentlich 123 ergeben)

Runden[Bearbeiten]

Wert Ergebnis Erklärung
{{#expr: 1/3 round 5 }} 0.33333 Ergebnis ist < 5, daher gibt es keine Rundung
{{#expr: 1/6 round 5 }} 0.16667 Ergebnis ist >= 5, also wird aufgerundet
{{#expr: 8.99999/9 round 5 }} 1 Das Ergebnis wird aufgerundet auf die letzte Ziffer
{{#expr: 1234.5678 round -2 }} 1200 Gerundet auf die nächstliegende 100-Zahl wegen dem negativen Wert
{{#expr: 1234.5678 round 2 }} 1234.57 Hinterste Stelle der Dezimalzahl wurde aufgerundet
{{#expr: 1234.5678 round 2.3 }} 1234.57 Dezimalstellen im Rundungsindex ergeben keine Unterschiede im gerundeten Ergebnis
{{#expr: trunc 1234.5678 }} 1234 Dezimalstelle wurde verkürzt
Runden auf die nächste Zahl
{{#expr: 1/3 round 0 }} 0 Abgerundet auf die nächste Ganzzahl, welche null ergibt
{{#expr: 1/2 round 0 }} 1 Aufgerundet auf die nächste Zahl, welche eins ergibt
{{#expr: 3/4 round 0 }} 1 Aufgerundet auf die nächste Zahl, welche eins ergibt
{{#expr: -1/3 round 0 }} -0 Aufgerundet auf die nächste Zahl, welche null ergibt
{{#expr: -1/2 round 0 }} -1 Abgerundet auf die nächste Zahl, welche -1 ergibt
{{#expr: -3/4 round 0 }} -1 Abgerundet auf die nächste Zahl, welche -1 ergibt
Auf- und Abrunden mit ceil und floor
{{#expr: ceil(1/3) }} 1 Aufrunden auf die nächste große Zahl, welche eins ergibt
{{#expr: floor(1/3) }} 0 Abrunden auf die nächste kleine Zahl, welche null ergibt
{{#expr: ceil(-1/3) }} -0 Abrunden auf die nächste kleine Zahl, welche null ergibt
{{#expr: floor(-1/3) }} -1 Abrunden auf die nächste kleine Zahl, welche -1 ergibt
{{#expr: ceil 1/3 }} 0.33333333333333 Keine Rundung, weil die Zahl 1 eine Ganzzahl ist

#if[Bearbeiten]

Diese Funktion wertet und bestimmt einen Teststring aus, auch wenn die leer ist oder nicht. Ein Teststring beinhaltet weiße Leerzeichen und können als solche auch als leer betrachtet werden.

{{#if: string | Parameter | Parameter }}
{{#if: erster parameter | zweiter parameter | dritter parameter }}

Diese Funktion prüft als erstes, ob der erste Parameter (in diesem Fall „Teststring“) nicht leer ist. Wenn dies also zutrifft, dann wird ein zweiter Parameter ausgegeben. Optional könnte ein dritter Parameter ausgegeben werden, wenn der erste Parameter leer ist.

{{#if: | ja | nein}}nein
{{#if: string | ja | nein}}ja
{{#if:      | ja | nein}}nein
{{#if:


| ja | nein}}
nein

Ein Teststring wird immer als reiner Text wiedergegeben, also funktionieren auch keine mathematischen Funktionen:

{{#if: 1==2 | ja | nein }}ja
{{#if: 0 | ja | nein }}ja

Eine oder zwei Werte können ausgelassen werden:

{{#if: foo | ja }} ja
{{#if: | ja }}
{{#if: foo | | nein}}

Für Vorlagen[Bearbeiten]

Diese Funktion ist gut geeignet für die Nutzung von Vorlagen, wenn man an bestimmten Stellen, wie in eine Tabelle zum Beispiel, etwas ausfüllen möchte. Bei einer Tabelle muss man die gesamten Syntaxeingaben oder HTML-Eingaben innerhalb von {{#if:</nowiki> setzen. Wenn man das nicht tut, dann werden Zeilen als leer angezeigt, obwohl die Parameter nicht ausgefüllt worden sind (also leer sind). Dies liegt daran, dass die Eingaben nicht mit {{#if:</nowiki> verbunden sind, denn nur so kann durch {{#if:</nowiki> und ein Paramter eine Zeile unsichtbar machen. Wenn es sich nicht um Tabellen handelt, so kann man trotzdem {{#if: verwenden oder auch {{{Paramter|}}}.

Es ist jetzt {{{Uhrzeit|}}} Uhr → Es ist jetzt Uhr (Hier wurde der Parameter nicht ausgefüllt)
→ Es ist jetzt {{{Uhrzeit|18:12}}} Uhr → → Es ist jetzt 18:12 Uhr.

Wenn ein Parameter nicht ausgefüllt wird, dann wird eine Tabellenzeile als leerstehend angezeigt. Doch normalerweise müsste die Zeile nicht angezeigt werden, doch man liegt falsch. Man muss also die gesamte Zeile in {{#if: einfügen.

[...]
{{#if: {{{Zeilenangabe|}}} | {{!}}-
{{!}} Zeilenangabe
{{!}} {{{Zeilenangabe}}} 
}}

Die Zeile wird nun nicht angezeigt (oder besser gesagt gar nichts wird angezeigt), da der Parameter nicht ausgefüllt wurde.

#iferror[Bearbeiten]

Diese Funktion überprüft, ob der eingegebene Ausdruck einen Fehler erzeugt. Die Funktion gibt true aus, wenn der Ausdruck ein HTML-Objekt mit class="error" enthält, wie es z.B. von den Funktionen #expr, #time und #rel2abs bei Fehlern ausgegeben wird. Auch Vorlagenfehler wie Rekursionsschleifen werden erkannt.

{{#iferror: test string | value if error | value if correct }}

Die Ausgabe-Parameter können auch weggelassen werden. Wenn der Parameter für "kein Fehler" weggelassen wird, wird der zu überprüfende Ausdruck ausgegeben, sofern er keinen Fehler enthält. Wenn der Ausdruck für "Fehler" ebenfalls weggelassen wird, wird bei einem Fehler nichts ausgegeben.

{{#iferror: {{#expr: 1 + 2 }} | error | correct }}correct
{{#iferror: {{#expr: 1 + X }} | error | correct }}error
{{#iferror: {{#expr: 1 + 2 }} | error }}3
{{#iferror: {{#expr: 1 + X }} | error }}error
{{#iferror: {{#expr: 1 + 2 }} }}3
{{#iferror: {{#expr: 1 + X }} }}
{{#iferror: <strong class="error">a</strong> | error | correct }}error

#ifexpr[Bearbeiten]

Diese Funktion berechnet einen mathematischen Ausdruck und gibt – abhängig vom Wahrheitswert des Ergebnisses – einen von zwei Werten aus.

{{#ifexpr: expression | value if true | value if false }}

Für den Ausdruck gelten dabei dieselben Regeln wie bei #expr. Nach der Berechnung überprüft die Funktion, ob das Ergebnis ungleich Null ist.

Eine leere Eingabe führt zur Ausgabe false:

{{#ifexpr: | yes | no}}no

Wie gesagt führt das Ergebnis Null zur Ausgabe false, jeder andere Wert hingegen zur Ausgabe true. Es handelt sich also praktisch um eine Kombination von #ifeq und #expr:

{{#ifeq: {{#expr: expression }} | 0 | value if false | value if true }}

Eine Ausnamhe für leere oder falsche Input expressions

{{#ifexpr: = | yes | no }} Fehler im Ausdruck: Unerwarteter Operator =

comparing

{{#ifeq: {{#expr: = }} | 0 | no | yes }} yes

Die Parameter können auch weggelassen werden, in diesem Fall wird nichts ausgegeben:

{{#ifexpr: 1 > 0 | yes }}yes
{{#ifexpr: 1 < 0 | yes }}
{{#ifexpr: 0 = 0 | yes }} yes
{{#ifexpr: 1 > 0 | | no}}
{{#ifexpr: 1 < 0 | | no}} no
{{#ifexpr: 1 > 0 }}

#ifexist[Bearbeiten]

Diese Funktion überprüft, ob eine bestimmte Seite im Wiki existiert, und gibt je nachdem einen von zwei Parametern aus.

{{#ifexist: page title | value if exists | value if doesn't exist }}

Die Funktion überprüft nur, ob die Seite existiert, und nicht, ob sie irgendeine Form von Inhalt enthält. Auch Weiterleitungen werden als existente Seiten gewertet. Gelöschte Seiten gelten als nicht existent.

{{#ifexist: Benutzer:Jack of Blades/Hilfe:Parser-Funktionen | exists | doesn't exist }}exists
{{#ifexist: XXBenutzer:Jack of Blades/Hilfe:Parser-FunktionenXX | exists | doesn't exist }}doesn't exist

MediaWiki-Systemnachrichten gelten so lange als nicht existent, bis sie bearbeitet werden. Auch die Existenz von Spezialseiten kann überprüft werden.

{{#ifexist: Spezial:Beobachtungsliste | exists | doesn't exist }}exists
{{#ifexist: Spezial:Checkuser | exists | doesn't exist }}exists (weil die Erweiterung CheckUser in diesem Wiki installiert ist)
{{#ifexist: MediaWiki:Copyright | exists | doesn't exist }}doesn't exist (weil MediaWiki:Copyright noch nicht bearbeitet wurde)

Wenn eine Seite A die Existenz einer Seite B mittels #ifexist: überprüft, taucht Seite A auf der Spezialseite Links auf diese Seite für Seite B auf. Wenn also im Artikel Bla der Code {{#ifexist: Blubb}} steht, wird auf Spezial:Linkliste/Blubb die Seite Bla aufgelistet.

In Wikis, die eine gemeinschaftliche Bilddatenbank nutzen (z.B. Wikimedia Commons), kann #ifexist: benutzt werden, um zu überprüfen, ob Dateien im lokalen Wiki oder in der externen Bilddatenbank hochgeladen wurden.

{{#ifexist: Datei:Example.png | exists | doesn't exist }}doesn't exist
{{#ifexist: Image:Example.png | exists | doesn't exist }}doesn't exist
{{#ifexist: Medium:Example.png | exists | doesn't exist }}exists

Wenn die lokale Bildbeschreibungsseite angelegt wurde, ist das Resultat für all diese Tests existiert.

#ifexist: funktioniert nicht mit Interwikilinks