Extension:Loops
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 |
|
|
Č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í
#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í  
. 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á.
#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
- Stáhněte soubor/y a vložte je do adresáře pojmenovaného
Loops
ve vaší složceextensions/
.
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í
- 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
- Extension:LoopFunctions - Jiné rozšíření umožňující použití smyčky
- Module:Loops
Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích: Toto není autoritativní seznam. Některé wiki farmy/hostitelé a/nebo balíčky mohou toto rozšíření obsahovat, i když zde nejsou uvedeny. Pro potvrzení se vždy obraťte na své wiki farmy/hostitele nebo balíček. |