Extension:Loops/cs

Category:GPL licensed extensions/cs
Příručka k rozšířením MediaWiki
Loops
Stav rozšíření: stabilníCategory:Stable extensions/cs
Implementace Funkce analyzátoru Category:Parser function extensions/cs
Popis Obsahuje funkce, které umožňují používat smyčky
Autoři
Správci MGChecker
Nejnovější verze 0.5.2 (2019-08-05)
MediaWiki 1.34+Category:Extensions with manual MediaWiki version/cs
PHP 5.6+
Změny v databázi Ne
Licence GNU General Public License 2.0 nebo novější
Stáhnout Category:Extensions in Wikimedia version control/cs
README
RELEASE-NOTES
Příklad sandbox.semantic-mediawiki.org
  • $wgLoopsEnabledFunctions
  • $wgLoopsCountLimit
Přeložte rozšíření Loops, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu
Category:All extensions/cs

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.

Nastavení

Varování Varování: Neupravujte LocalSettings.php pomocí editorů dokumentů, jako je Notepad na Windows 10 verze 1809 nebo dříve, TextEdit nebo jiných textových editorů, které do souborů přidávají značky pořadí bajtů. Ty narušují běh PHP vaší wiki. Místo toho použijte editor kódu, např. Vim nebo Notepad++. Tyto správně zpracovávají kódování souborů. Lze je také použít k opravě souborů dříve poškozených editory dokumentů.

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

Category:All extensions/cs Category:Extensions in Wikimedia version control/cs Category:Extensions included in BlueSpice/cs Category:Extensions included in Canasta/cs Category:Extensions included in Fandom/cs Category:Extensions included in Miraheze/cs Category:Extensions included in MyWikis/cs Category:Extensions included in ProWiki/cs Category:Extensions included in WikiForge/cs Category:Extensions included in semantic::core/cs Category:Extensions included in wiki.gg/cs Category:Extensions with manual MediaWiki version/cs Category:GPL licensed extensions/cs Category:ParserClearState extensions/cs Category:ParserFirstCallInit extensions/cs Category:ParserLimitReportPrepare extensions/cs Category:Parser function extensions/cs Category:Stable extensions/cs