Extension:Loops/de

From MediaWiki.org
Jump to navigation Jump to search
Sprachen: English  • Deutsch • 日本語 • 中文
MediaWiki-Erweiterungen
OOjs UI icon advanced.svg
Loops
Erscheinungsstatus: stabil
Einbindung Parser function
Autor(en) David M. Sledge (talk), Daniel Werner
Letzte Version 0.4 (2011-11-16)
MediaWiki 1.14+
Lizenz GNU GPL 2.0 or later
Herunterladen
README
RELEASE-NOTES
Parameter
ExtLoops::$maxLoops
Verwendete Hooks
ParserFirstCallInit
ParserLimitReport
ParserClearState
Übersetze die Loops Erweiterung wenn sie auf translatewiki.net verfügbar ist
Prüfe die Benutzungs- und Versionsmatrix.

While- und do-while-Schleifen, wie sie in Programmiersprachen verwendet werden. Die Variable $maxLoops legt das Maximum der erlaubten Schleifen fest (Standardwert 100).

Verwendung[edit]

Syntax[edit]

For technical reasons, the preprocessor in v1.12alpha and later handles the first parameter differently than the rest, so it's ignored for the #while and #dowhile parser functions in order for them to work. See bug 12842.

#while[edit]

{{#while}} führt so lange eine Schleife aus (d. h., gibt einen bestimmten Quelltext wiederholt an den Parser), bis der Bedingungstext etwas anderes als Leerstellen enthält.

{{
  #while:
  | <Bedingung>
  | <auszuführender Quelltext>
}}
Beispiele[edit]

Hinweis Hinweis: Die folgenden Beispiele nutzen die Erweiterung Variables.

Dieser Quelltext:

{{ #vardefine: i | 0 }}{{
  #while:
  | {{ #ifexpr: {{ #var: i }} < 5 | wahr }}
  |<nowiki/>
* {{ #var: i }}{{ #vardefine: i | {{ #expr: {{ #var: i }} + 1 }} }}
}}

ergibt folgendes:

  • 0
  • 1
  • 2
  • 3
  • 4

{{#while}} kann auch in Vorlagen verwendet werden, um eine nummerierte Reihe zu erzeugen. Wenn bspw. die Vorlage "Loop-Test" folgendes enthält:

{{
  #vardefine: i | 0
}}{{
  #while:
  | {{{ arg{{#var: i }} |}}}
  |<nowiki/>
* {{{ arg{{#var: i }} }}}{{
    #vardefine: i
    | {{ #expr: {{ #var: i }} + 1 }}
  }}
}}

dann kann mit diesem Quelltext:

{{Loop-Test
|arg0=zero
|arg1=one
|arg2=two
|arg3=three
|arg4=four
}}

folgendes erzeugt werden:

  • zero
  • one
  • two
  • three
  • four

Leeräume wie Leerzeichen, Tabulatoren und Zeilenumbrüche am Anfang oder am Ende aller Parameter werden abgeschnitten. Wenn das nicht gewünscht ist, müssen HTML-Kodierungen wie &#32; verwendet werden.

#dowhile[edit]

{{#dowhile}} erfüllt genau dieselbe Aufgabe wie {{#while}}, mit der Ausnahme, dass der auszuführende Quelltext in jedem Fall mindestens einmal vom Parser verarbeitet und angezeigt wird (wenn es anzuzeigenden Text ergibt). Dies erfolgt vor der Berechnung der Bedingung.

#loop (in der Testphase)[edit]

{{
  #loop: <Variablenname>
  | <Startwert>
  | <Anzahl der auszuführenden Schleifen>
  | <auszuführender Quelltext>
}}

{{#loop}} lässt den Parser wiederholt einen auszuführenden Quelltext bearbeiten und ausgeben – wie oft, das legt die Anzahl der auszuführenden Schleifen fest. Der Startwert wird als Variable mit dem angegebenen Namen gespeichert (aufrufbar mit der Funktion {{#var:}} der Erweiterung Variables). Nach jeder Schleife wird die Variable um eins erhöht, wenn die Schleifenanzahl positiv ist, oder verringert, wenn sie negativ ist.

Beispiel[edit]

Der folgende Quelltext:

{{#loop: Nummer
  | 4
  | 4
  | <nowiki/>
* Das ist Runde {{#var:Nummer}} und es liegen {{#expr: 7-{{#var:Nummer}}}} weitere Runden vor uns
}}

ergibt:

  • Das ist Runde 4 und es liegen 3 weitere Runden vor uns
  • Das ist Runde 5 und es liegen 2 weitere Runden vor uns
  • Das ist Runde 6 und es liegen 1 weitere Runden vor uns
  • Das ist Runde 7 und es liegen 0 weitere Runden vor uns

#forargs (in der Testphase)[edit]

{{#forargs}} ist für Vorlagen vorgesehen. Es speichert Parameterwerte, die an eine Vorlage übergeben wurden, in Variablen, die mit der Funktion {{#var:}} der Erweiterung Variables aufgerufen werden können.

{{
  #forargs: <Präfix>
  | <Schlüssel>
  | <Wert>
  | <auszuführender Quelltext>
}}

Diese Funktion geht jeden vom Vorlagennutzer angegebenen Parameter durch, der mit dem <Präfix> beginnt, speichert seinen Namen (ohne <Präfix>) in die Variable <Schlüssel> und seinen Wert in die Variable <Wert>. Danach wird der angegebene Quelltext ausgeführt, in dem nun {{#var:<Schlüssel>}} und {{#var: <Wert>}} benutzt werden können.

Beispiel[edit]

Wenn die Vorlage "Loop-Test" folgendes enthält:

{{
  #forargs: Par
  | Schlüssel
  | Wert
  | <nowiki/>
* {{#var:Schlüssel}} = {{#var:Wert}}
}}

dann ergibt dieser Quelltext:

{{Loop-Test
| Par1=42
| Irgendwas=Oachkatzlschwoaf
| Par5=1337
| Parameter=Wert
}}

das folgende:

  • 1 = 42
  • 5 = 1337
  • ameter = Wert

#fornumargs (in der Testphase)[edit]

{{
  #fornumargs: <Schlüssel>
  | <Wert>
  | <auszuführender Quelltext>
}}

{{#fornumargs}} entspricht {{#forargs}} mit zwei wichtigen Unterschieden: Es wird kein Parameter-Präfix angegeben und es ist nur für reine Zahlenparameter wie {{{1}}} gedacht, egal, ob explizit oder implizit angegeben:

{{Beispielvorlage|2=zwei|1=eins|3=drei}}
{{Beispielvorlage|eins|zwei|drei}}
Beispiele[edit]

in Arbeit

Installation[edit]

Um die Funktionen #loop, #forargs und #fornumargs nutzen zu können, muss die Erweiterung Variables installiert sein. Die Loops-Erweiterung wird einfach durch den folgenden Eintrag in der LocalSettings.php installiert:

require_once( "$IP/extensions/Loops/Loops.php" );

Konfiguration[edit]

ExtLoops::$maxLoops
Diese Variable gibt die maximale Anzahl der Schleifen an, die auf einer Seite ausgeführt werden dürfen. Standardwert ist 100. Wird ein negativer Wert angegeben, so läuft die Erweiterung mit den Begrenzungen der PHP-Umgebung. Diese Variable betrifft nicht die Funktionen {{#forargs:}} und {{#fornumargs:}}.
$egLoopsEnabledFunctions
Configuration variable (array) to define which Loops functions should be enabled. By default all functions are enabled in case Variables extension is installed as well. If Variables extension is not installed, #loop, #forargs and #fornumargs will be disabled since they don't work without Variables extension. To disable fornumargs and forargs function one can use:
$egLoopsEnabledFunctions = array_diff( $egLoopsEnabledFunctions, array( 'forargs', 'fornumargs' ) );

Siehe auch[edit]