Extension:LoopFunctions/cs

Rozšíření LoopFunctions poskytuje funkce, které umožňují pracovat s wikitextem v opakovaných cyklech (smyčkách), kdy postupně nahrazují proměnnou (výchozí ) pořadovým číslem aktuálního cyklu. Tahle proměnná se může vyskytovat jak v běžném textu, tak v odkazu. Výsledek zpracování lze použít jako parametry jiného výrazu, například pro výpočet faktoriálu. Protože se kód smyčky generuje dřív, než dojde k nahrazení proměnné, není možné udělat výpočet již během zpracování v rámci jednoho cyklu.

#for
Kde n je počet cyklů a text řetězec, se kterým se bude pracovat.

Pokud bude po interpretaci šablon, parsovacích funkcí a proměnných text obsahovat řetězec  nebo , definovaným třetím parametrem, bude nahrazen pořadovým číslem aktuálního cyklu, které se počítají od 1.



Použití v šablonách
Volání šablony, pokud šablona foo obsahuje: , bude mít za následek wikitext:



Použití při výpočtech
Součet čtverců 1^2 až 5^2: dává 55

Faktor 6 (6!): dává 720

Omezení
V těle smyčky jsou šablony, funkce analyzátoru a proměnné rozbaleny před nahrazením proměnné indexu jejími hodnotami, tj.:


 * Parametr funkce analyzátoru v závislosti na proměnné indexu :
 * Kód dává  . Výsledek je v tomto případě stejný, jako když bylo nejprve provedeno opakování a poté hodnocení každé položky.
 * Kód dává  . Výsledek v tomto případě není stejný, protože   se změní na , a proto se s ním nezachází jako s proměnnou indexu.
 * Použití #expr na výraz obsahující proměnnou index nefunguje: Rozšíření #expr v např. dává text, takže tento text se bude opakovat:


 * Název šablony v závislosti na proměnné indexu :
 * Kód dává:
 * pokud šablona s doslovným názvem  neexistuje: Template:a1 Template:a2 Template:a3 (tělo smyčky je vyhodnoceno jako Template:a$n$, načež to funkce smyčky zopakuje a nahradí  ).

if the template with the literal name  does exist: the result of, i.e., the content is repeated unchanged.


 * Limitation in combination with : Within the loop a variable can be assigned a value depending on the loop variable, and the value of this variable can be retrieved.
 * However, it seems that within the loop the variable cannot be assigned a new value depending on its own current value. Instead the value on entering the loop is taken.

#foreach
Function only for template use.

The mask is a string in the format prefixsuffix where  can be changed via the replacement parameter. The function #foreach, called inside a template, will produce the text for $n$ = 1, 2, 3,... as long as prefixsuffix is a template parameter defined in the template call.

If the text contains the text  or what is defined by the third parameter, that will be replaced by the current value of.

It seems that the whole call of #foreach is ignored if the loop body contains a template call or a parser function call, or if the loop body does not contain.

Příklad
Calling the template using the template foo, containing:  will result in the expanded wikitext   and hence the output:
 * foo1_bar = b
 * foo2_bar = a

Since  is not defined,   is not listed either; neither are a and , the parameter names which exist but do not match the pattern.



Použití bez prefixu či suffixu
The code call Template:Showpars containing  and gives:
 * 1 = abc
 * 2 = de
 * 3 = ijk

Content of a template that links to the pages given by the values of the unnamed parameters:

Instalace


Viz též

 * m:Template:For