Extension:Loops/de

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

Syntax
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
{ {#while}} performs a loop (i.e. it repeatedly parses a given wiki markup block statement) so long as the condition mark-up evaluates to non-whitespace.

Beispiele
Die folgenden Beispiele nutzen die Variablen-Erweiterung.

Dieser Quelltext:

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:

dann kann mit diesem Quelltext:

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 &amp;#32; verwendet werden.

#dowhile
{ {#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)
{ {#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 Variablen-Erweiterung). Nach jeder Schleife wird die Variable um eins erhöht, wenn die Schleifenanzahl positiv ist, oder verringert, wenn sie negativ ist.

Beispiel
Der folgende Quelltext:

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)
{ {#forargs}} is to be used in templates. It takes arguments that are passed to the template and puts them in variables accessible by VariablesExtension's { {#var:}} parser function.

This function iterates through each argument whose name begins with &lt;prefix>. With each iteration it puts the argument name minus &lt;prefix> into &lt;key> as if calling { {#vardefine: &lt;key> }}. It then takes the value of the argument and puts it into &lt;value> in a similar method. The block statement is then expanded. The block statement may contain { {#var: &lt;key> }} and { {#var: &lt;value> }} to access the stored arguments.

Beispiel
If the page "Template:Loops Test" contains

then the wiki markup

produces


 * 1 = val1
 * 5 = val5
 * ument = value

#fornumargs (in der Testphase)
{ {#fornumargs}} performs similarly to { {#forargs}} with two major differences: It doesn't take a prefix argument, and it only works on numbered arguments whether they're explicitly numbered:

or implicitly numbered:

Beispiele
TBD

Download-Anleitung
Please cut and paste the code found below and place it in. Note: $IP stands for the root directory of your MediaWiki installation, the same directory that holds LocalSettings.php.

Installation
The parser functions #loop, #forargs, and #fornumargs require VariablesExtension to be installed. Loops is installed by adding the following to LocalSettings.php:

ExtLoops::$maxLoops
This parameter sets the maximum number of loops a page is allowed to perform. It defaults to 100. Setting it to a negative value lets the loops run within the limits of php's environment. This parameter affects neither the { {#forargs:}} nor { {#fornumargs:}}.

Siehe auch

 * Control Structure Functions für MediaWiki 1.11+ (en)
 * LoopFunctions (en)
 * VariablesExtension (en)