Jump to content

Extension:Loops

From mediawiki.org
This page is a translated version of the page Extension:Loops and the translation is 100% complete.
Příručka k rozšířením MediaWiki
Loops
Stav rozšíření: stabilní
Implementace Funkce analyzátoru
Popis Obsahuje funkce, které umožňují používat smyčky
Autoři
Nejnovější verze 0.5.2 (2019-08-05)
MediaWiki 1.34+
PHP 5.6+
Změny v databázi Ne
Licence GNU General Public License 2.0 nebo novější
Stáhnout
README
RELEASE-NOTES
Příklad sandbox.semantic-mediawiki.org
  • $wgLoopsEnabledFunctions
  • $wgLoopsCountLimit
Čtvrtletní stahování 33 (Ranked 107th)
Přeložte rozšíření Loops, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření Loops poskytuje Parsovací funkce pro zpracování dat ve smyčkách.

O to aby tato verze fungovala se v současné době stará MGChecker.

Použití

Následující příklady pracují s rozšířením Variables a v některých případech také s rozšířením ParserFunctions .

#while

{{#while}} provádí smyčku (tj. opakovaně analyzuje daný příkaz wiki markup block), dokud se označení podmínky vyhodnotí jako bez mezer.

{{#while:
 | <kód podmínky>
 | <interpretovaný blok wiki kódu>
}}
Příklady

Tento wiki kód:

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

bude interpretován takto:

  • 0
  • 1
  • 2
  • 3
  • 4

{{#while}} lze využít v šabloně rovněž jako náhradu za pole indexované pořadovým číslem. Pokud šablona "Template:Loops Test" bude obsahovat:

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

následující wiki kód aplikované šablony:

{{Loops Test
 |arg0=nula
 |arg1=jedna
 |arg2=dvě
 |arg3=tři
 |arg4=čtyři
}}

bude vracet:

  • nula
  • jedna
  • dvě
  • tři
  • čtyři

Je důležité si uvědomit, že všechny bílé znaky, včetně nových řádků, tabulátorů a mezer, jsou ze začátku a konce všech argumentů u těchto parsovacích funkcí během zpracování odstraněny. Není-li tohle chování potlačeno, budou oříznuty všechny bílé znaky a to včetně mezery zapsané sekvencí &#32;. K potlačení se využívá značka ‎<nowiki> (jak můžete vidět na uvedených příkladech).

#dowhile

{{#dowhile}} pracuje naprosto stejně jako {{#while}}, jen s tím rozdílem, že pokud má být výsledkem zpracování text, tak se zobrazí alespoň jednou. A to předtím, než se vyhodnotí podmínka.

#loop

{{#loop: <variable name>
 | <starting value>
 | <number of loops to be performed>
 | <wiki markup>
}}

{{#loop}} opakovaně zpracovává a zobrazuje <wiki markup>, dokud počet cyklů nedosáhne hodnoty <number of loops to be performed>. <Starting value> je vložena do proměnné <variable name>, se kterou lze dále pracovat přes parsovací funkci {{#var:}} (pokud máte nainstalováno rozšíření Variables ). Po každém průběhu je hodnota proměnné inkrementálně navýšena, je-li hodnota <number of loops to be performed> kladná, nebo snížena je-li hodnota <number of loops to be performed> záporná.

Ze všech typů smyček by měla být funkce #loop nejvýkonnější, protože nepracuje s žádnou podmínkou, kterou by bylo nutné pro každý cyklus zpracovat a výsledek ověřit.
Příklady

Následující kód:

{{#loop: varname
 | 4
 | 4
 | <nowiki />
* Hodnota je {{#var: varname }} a zbývá {{#expr: 7 - {{#var: varname }} }} cyklů
}}

bude vracet

  • Hodnota je 4 a zbývá 3 cyklů
  • Hodnota je 5 a zbývá 2 cyklů
  • Hodnota je 6 a zbývá 1 cyklů
  • Hodnota je 7 a zbývá 0 cyklů

#forargs (experimentální)

{{#forargs}} se používá v šablonách.

Vezme argumenty, které jsou předány šabloně, a vloží je do proměnných přístupných pomocí funkce analyzátoru {{#var:}} rozšíření Variables .

{{#forargs: <prefix>
 | <key>
 | <value>
 | <block statement>
}}

Tato funkce prochází každý argument, jehož název začíná <prefix>.

S každou iterací vloží název argumentu mínus <prefix> do <key>, jako by volal {{#vardefine: <key> }}.

Potom vezme hodnotu argumentu a vloží ji do <value> podobným způsobem.

Blokový příkaz se pak rozbalí.

Blokový příkaz může obsahovat {{#var: <key> }} a {{#var: <value> }} pro přístup k uloženým argumentům.

Příklad

Pokud šablona "Template:Loops Test" bude obsahovat

{{#forargs: arg
 | key
 | value
 | <nowiki />
* {{#var: key }} = {{#var: value }}
}}

bude následující wiki kód aplikované šablony

{{Loops Test
 | arg1=val1
 | spam=spammity
 | arg5=val5
 | argument=value
}}

bude vracet

  • 1 = val1
  • 5 = val5
  • ument = value

#fornumargs (experimentální)

{{#fornumargs: <key>
 | <value>
 | <block statement>
}}

{{#fornumargs}} funguje podobně jako {{#forargs}} se dvěma hlavními rozdíly: Nepotřebuje předponový argument a funguje pouze s číslovanými argumenty, ať už jsou explicitně očíslovány,

{{Template
 | 1=one
 | 2=two
}}

nebo implicitně očíslované.

{{Template
 | one
 | two
}}

Kombinace těchto metod v jediném volání šablony může způsobit přepsání hodnot, takže buďte opatrní.

Příklady

Pokud bude šablona "Template:Loops Test" obsahovat:

{{#fornumargs: number
 | value
 | <nowiki />
* {{#var: number }} = {{#var: value }}
}}

pak její následující aplikace:

{{Loops Test
  | Apricot
  | B = Bolognese
  | Caramel slice
  | 5 = Eclair
}}

bude vracet pouze hodnoty pozičních parametrů a parametrů identifikovaných číslem:

  • 1 = Apricot
  • 2 = Caramel slice
  • 5 = Eclair

Instalace

Některé parsovací funkce poskytované tímto rozšířením vyžadují aby byla nejprve nainstalována rozšíření ParserFunctions a Variables .
  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného Loops ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Loops
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'Loops' );
    
  • Nastavte v konfiguraci potřebné hodnoty dle svého uvážení
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

Konfigurace

Tyto konfigurační proměnné musí být nastaveny v souboru LocalSettings.php po zahrnutí tohoto rozšíření.

$egLoopsCountLimit
Tento parametr nastavuje maximální počet smyček, které může stránka provést (výchozí 100). Nastavením na -1 umožníte cyklům běžet v rámci limitů prostředí phps. Tento parametr neovlivňuje funkce analyzátoru {{#forargs:}} ani {{#fornumargs:}}.
$egLoopsEnabledFunctions
Konfigurační proměnná (pole) pro definování, které funkce Loops by měly být povoleny. Ve výchozím nastavení jsou všechny funkce povoleny, pokud je nainstalováno i rozšíření Variables . Pokud rozšíření Variables není nainstalováno, #loop, #forargs a #fornumargs budou deaktivovány, protože bez jeho instalace nefungují. Chcete-li povolit pouze funkce #fornumargs a #forargs, můžete použít:
$egLoopsEnabledFunctions = array_diff(
    $egLoopsEnabledFunctions, [
        'forargs', 'fornumargs'
        ]
    );


Související odkazy