Jump to content

Rozšíření:ArrayFunctions

From mediawiki.org
This page is a translated version of the page Extension:ArrayFunctions and the translation is 100% complete.
Příručka k rozšířením MediaWiki
ArrayFunctions
Stav rozšíření: stabilní
Zavádění Funkce analyzátoru
Popis Poskytuje sadu čistě parserových funkcí, které operují s poli
Autoři Marijn van Wezel (Wikibase Solutions)
Nejnovější verze 2.0.1 (2026-06-18)
Zásady kompatibility Větev master zachovává zpětnou kompatibilitu.
MediaWiki >=1.40.0
PHP >=7.4
Změny v databázi Ne
Composer wikibase-solutions/array-functions
  • $wgArrayFunctionsMaxPipelineLength
  • $wgArrayFunctionsEnableErrorTracking
  • $wgArrayFunctionsMaxRangeSize
  • $wgArrayFunctionsForeachIterationLimit
Licence GNU General Public License 2.0 nebo novější
Stáhnout
Přeložte rozšíření ArrayFunctions, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu

Dokumentace k dalším vydáním: 1.0 · 1.1 · 1.2 · 1.3 · 1.4 · 1.5 · 1.6 · 1.7 · 1.8 · 1.9 · 1.10 · 1.11 · 1.12 · 1.13 · 1.14 · 1.15 · 1.16 · 1.17 · 2.0.

Rozšíření ArrayFunctions vytváří sadu čistých, s Parsoid kompatibilních (viz zde) parserových funkcí, které provádějí operace s poli.

Instalace

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného ArrayFunctions 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/ArrayFunctions
    
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'ArrayFunctions' );
    // Zvyšte hodnotu $wgMaxArticleSize pro umožnění větších polí (výchozí: 2048)
    $wgMaxArticleSize = 8192;
    
  • Configure performance limits as necessary.
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

TL;DR

ArrayFunctions definuje kolekci parserových funkcí, které umožňují pracovat s neměnnými seznamy a objekty, souhrnně označovanými jako "arrays" (pole). Místo ukládání těchto polí do paměti jsou přímo vypsány funkcí parseru a lze je předat šablonám nebo jiným funkcím parseru. I když je možné vytvářet a pracovat s poli výhradně prostřednictvím wikitextu, doporučeným přístupem je použít Scribunto (Lua), Semantic MediaWiki nebo Cargo k vytvoření pole, které obsahuje všechna potřebná data, a použít ArrayFunctions pouze pro formátování pole. Funkce parseru #af_list a #af_object by se měly používat primárně pro jednoduchá, jednorázová pole.

ArrayFunctions definuje mnoho (přes 30) funkcí parseru, ale ty nejužitečnější jsou:

  • #af_get – načíst hodnotu nebo provést nějakou operaci stručně;
  • #af_pipeline – vytvořit kanál operací, aby se zabránilo hlubokému vnoření;
  • #af_foreach – opakovat přes pole;
  • #af_show – vypsat hodnotu uloženou v poli;
  • #af_print – vypsat pole pro účely ladění;
  • #af_map – upravit všechny prvky pole;
  • #af_template – vyvolat šablonu s daty uloženými v poli;
  • #af_list – vytvořit seznam;
  • #af_object — vytvořit objekt;
  • #af_zip – spojit dvě nebo více polí dohromady.

Kompatibilita

ArrayFunctions se zavazuje, že nebude porušovat zpětnou kompatibilitu. To znamená, že kód orientovaný pro uživatele (např. funkce parseru, funkce Lua a magická slova) bude fungovat donekonečna a změny budou vždy implementovány zpětně kompatibilním způsobem.

ArrayFunctions se také snaží co nejdéle udržovat kompatibilitu se staršími verzemi MediaWiki, ale vzhledem k povaze rozšíření to nemusí být možné donekonečna. V případě, že aktualizace MediaWiki naruší funkci, na které ArrayFunctions závisí, bude tato záplata, pokud to bude možné, zpětně kompatibilní. Jinak bude vydána nová HLAVNÍ verze ArrayFunctions.

Tabulka kompatibility
ArrayFunctions MediaWiki PHP Scribunto1 Semantic MediaWiki1 Cargo1
2.0.0+
Verze MediaWiki:
1.40
PHP version
7.4.3
Scribunto version
1.40
Semantic MediaWiki version
5.0
Cargo version
3.8
1.15.0+
Verze MediaWiki:
1.35
PHP version
7.4.0
Scribunto version
1.35
Semantic MediaWiki version
4.0
Cargo version
3.0
1.14+
Verze MediaWiki:
1.35
PHP version
7.4.0
Scribunto version
1.35
Semantic MediaWiki version
4.0
N/A
1.0-1.13
Verze MediaWiki:
1.35 – 1.43
PHP version
7.4.0
Scribunto version
1.35
N/A N/A
1 Měkká závislost. Omezení verze platí pouze při instalaci softwaru.

Výkonnostní limity

ArrayFunctions version
1.16
MediaWiki již omezuje celkovou velikost polí na hodnotu $wgMaxArticleSize .

ArrayFunctions poskytuje řadu konfiguračních parametrů, které omezují výpočetní dobu určitých funkcí a zabraňují uživatelům v provedení útok typu denial-of-service na vaší wiki. Z důvodů zpětné kompatibility jsou tato omezení ve výchozím nastavení vypnuta. Dostupné konfigurační parametry jsou:

Název Výchozí Doporučeno Popis
$wgArrayFunctionsForeachIterationLimit -1 ~1024 Tento konfigurační parametr omezuje maximální počet iterací #af_foreach, které může stránka provést. Nastavení na hodnotu nižší než nula neovlivní počet opakování.
$wgArrayFunctionsMaxRangeSize -1 ~4096 Tento konfigurační parametr omezuje maximální velikost pole vytvořeného pomocí funkce parser #af_range. Nastavení na hodnotu nižší než nula neovlivní velikost polí vytvořených s #af_range.
$wgArrayFunctionsMaxPipelineLength -1 ~$wgMaxTemplateDepth / 4 Tento konfigurační parametr omezuje maximální délku kanálu na (#af_pipeline). Nastavení na hodnotu nižší než nula neovlivní počet kroků v kanálu.

Tato omezení jsou uvedena v reportu o omezeních parseru, který lze použít k úpravě nastavení nebo ladění stránky.

Časté dotazy

Jak mohu definovat pole, které se bude používat na celé stránce?

Není možné přímo definovat pole, které se má použít na celé stránce, protože by to vyžadovalo sekvenční zpracování rozšiřujících tagů, což Parsoid nepodporuje (viz Rozšíření API#Žádná podpora pro sekvenční zpracování rozšiřujících tagů v pořadí). Místo toho můžete pole předávat jako parametry šablony:

{{My template|{{#af_list:a|b|c}}}}

Tímto způsobem je pole k dispozici v Template:My template jako {{{1}}}.

Jak iterovat přes pole?

K prvkům pole je možné iterativně přistupovat pomocí proměnné #af_foreach:

{{#af_foreach:{{#af_list:red|green|blue}}||color|<nowiki/>
* {{{color}}} is my favourite.
}}

Očekávaný výstup z výše uvedeného výstřižku je:

  • red is my favourite.
  • green is my favourite.
  • blue is my favourite.

Proč nejsou hodnoty rozpoznány jako pole?

To se může stát, protože vaše pole jsou příliš velká. MediaWiki interně uchovává počítadlo celkové velikosti argumentů šablony, které lze zvýšit o $wgMaxArticleSize.

Jak se to liší od rozšíření jako je Arrays nebo Variables?

Hlavní rozdíl mezi ArrayFunctions a těmito rozšířeními je, že parserové funkce ArrayFunctions jsou čisté. To znamená, že místo úpravy nebo deklarace proměnné funkce parser přímo vypíše její výsledek.

Například s argumentem #af_map se dané pole nemodifikuje. Místo toho se vytvoří, upraví a poté vypíše kopie. Žádná funkce parseru v ArrayFunctions nemodifikuje globální stav: Veškeré výpočty probíhají výhradně voláním funkce parseru. Díky tomu se práce s ArrayFunctions velmi liší od práce s jinými rozšířeními, jako je Arrays nebo Variables. Místo imperativní úpravy pole uloženého v proměnné je nutné k provádění složitějších operací použít složení funkce. Například:

Arrays
{{#arraydefine: fruits | orange, banana, strawberry, apple }}
{{#arraysort: fruits | asc }}
{{#arrayprint: fruits }}
ArrayFunctions
{{#af_pipeline: {{#af_list: orange | banana | strawberry | apple }}
| {{#af_sort: {{{prev}}} }}
| {{#af_print: {{{prev}}} }}
}}

Proč se z hodnot pole ořezávají mezery?

Mezery jsou ve wikitextu podstatně bezpodmínečné. Aby bylo toto chování logické, jsou z hodnot pole opakovaně ořezávány mezery.

Funkce

  • Parametry s předponou hvězdičky (*) označují, že lze předat proměnný počet pozičních argumentů.
  • Parametry s dvojitou hvězdičkou (**) označují, že lze předat proměnný počet pojmenovaných argumentů.
  • Všechny názvy argumentů klíčových slov rozlišují velká a malá písmena.
  • Všechny argumenty typu string podporují následující escape sekvence:
\s pro prostory
\n pro nové řádky
\\ pro zpětná lomítka

Rozšíření definuje následující funkce parseru, funkce Lua, formáty výsledků Semantic MediaWiki, formáty zobrazení Cargo a magická slova:

Vytvoření pole nebo hodnoty
Název Popis
#af_bool Vytvoří řetězec s booleovskou hodnotou.
#af_float Vytvoří plovoucí řetězec
#af_int Převede řetězec na celé číslo.
#af_list Vytvoří nový seznam z hodnot.
#af_object Vytvoří nový objekt z hodnot.
#af_range Vytvoří konečný rozsah celých čísel.
#af_split Rozdělí řetězec na základě oddělovače.
AF_EMPTY Prázdné pole.
mw.af.export Vytvoří nové pole z Lua.
arrayfunctions Naformátujte výsledek dotazu Semantic MediaWiki jako pole typu ArrayFunctions.
arrayfunctions Zobrazí výsledek dotazu Cargo jako pole o velikosti ArrayFunctions.
Vyjmutí informace z pole
Název Popis
#af_count Spočítá počet hodnot v poli.
#af_exists Zkontroluje, zda v poli existuje klíč nebo index.
#af_get Načte prvek z pole podle indexu.
#af_isarray Zkontroluje, zda je hodnota pole.
#af_print Vypíše pole pro účely ladění.
#af_search Vyhledá hodnotu v poli.
#af_show Zobrazí hodnotu ve formátu čitelném pro člověka.
mw.af.import Vytvoří novou tabulku z pole ArrayFunctions.
Vytvoření pole z existujícího pole
Název Popis
#af_difference Vypočítá rozdíl mezi poli.
#af_filter Filter element from an array.
#af_flatten Zploštění pole.
#af_group Vypočítá pole, které po indexování vrátí všechny prvky klíče ze všech podpolí.
#af_intersect Vypočítá průnik polí.
#af_keysort Seřadí seznam objektů na základě hodnot klíče.
#af_ksort Seřadí pole podle klíče.
#af_merge Vypočítá sjednocení polí.
#af_push Přidá hodnotu na konec seznamu.
#af_put Nastaví hodnotu na indexu.
#af_reverse Obrátí pole.
#af_set Nastaví hodnotu na indexu (zastaralé od 1.13.0).
#af_slice Extrahuje výřez z pole.
#af_sort Seřadí seznam.
#af_unique Odstraní duplikáty z pole.
#af_unset Odebere hodnotu z pole podle indexu.
#af_zip Sbalí dvě nebo více polí dohromady.
Opakuje přes pole
Název Popis
#af_foreach Opakuje přes pole
#af_join Rekurzivně spojí položky pole pomocí oddělovače.
#af_map Aplikuje zpětné volání na každý prvek seznamu.
#af_reduce Iterativním způsobem zredukuje pole na jednu hodnotu pomocí zpětného volání.
Různé funkce
Název Popis
#af_if Na základě predikátu vybere jednu ze dvou alternativ.
#af_pipeline Vytvoří kanál funkcí.
#af_stringmap Použije zpětné volání na každou hodnotu v řetězci s oddělovači.
#af_template Vyvolá šablonu s hodnotami v poli.
#af_trim Ořízne znaky na začátku a na konci řetězce.

af_bool

ArrayFunctions version
1.0

Tato funkce parseru převádí řetězec na booleovskou hodnotu. To je užitečné pro vytvoření pole obsahujícího booleovskou hodnotu. Hodnoty, které jsou považovány za true, jsou "1", "true", "on" a "yes". Hodnoty, které jsou považovány za false, jsou "0", "false", "off" a "no". Pokud je zadána jakákoli jiná hodnota, bude vrácena chyba.

Popis

{{#af_bool: value }}

Parametry

Název Typ Popis
value řetěz nebo boolean Hodnota, která se má převést na booleovskou hodnotu.

Návratové hodnoty

Vrátí přetypovanou booleovskou hodnotu.

Příklady

Vytvoření neprůhledné reprezentace booleovské hodnoty
{{#af_bool: yes }}, {{#af_bool: no }}, {{#af_bool: true }}
boolean__^__1, boolean__^__0, boolean__^__1
Vytvoření pole obsahujícího booleovskou hodnotu
{{#af_print: {{#af_list: {{#af_bool: yes}} }} }}
  • 0: true

af_count

ArrayFunctions version
1.0

Tato funkce parseru počítá počet hodnot v poli. Ve výchozím nastavení tato funkce parseru počítá pouze počet prvků nejvyšší úrovně. Pokud je však argumentu klíčového slova recursive přiřazena hodnota true, bude se také sčítat počet položek v jakýchkoli podpolích. V případě hodnoty recursive=true se započítává jak prvek obsahující pole, tak i všechny hodnoty uvnitř pole.

Popis

{{#af_count: array | recursive=recursive }}

Parametry

Název Typ Výchozí Popis
array pole Pole, které se má spočítat.
recursive boolean false Zda se mají položky počítat rekurzivně.

Návratové hodnoty

Počet položek v poli.

Příklady

Spočítání počtu položek v jednorozměrném seznamu
{{#af_print: {{#af_count: {{#af_list: a | b | c }} }} }}
3
Spočítání počtu položek ve vícerozměrném seznamu
{{#af_print: {{#af_count: {{#af_list: {{#af_list: a | b }} | {{#af_list: c | d }} }} }} }}
2
Rekurzivně spočítat počet položek ve vícerozměrném seznamu
{{#af_print: {{#af_count: {{#af_list: {{#af_list: a | b }} | {{#af_list: c | d }} }} | recursive=true }} }}
6

af_difference

ArrayFunctions version
1.5
Rekurzivně spočítat počet položek ve vícerozměrném seznamu

Tato funkce parseru vypočítává rozdíl mezi poli. Tato funkce uchovává klíče.

Popis

{{#af_difference: array | *arrays }}

Parametry

Název Typ Popis
array pole První pole.
*arrays pole Ostatní pole.

Návratové hodnoty

Vrátí pole obsahující všechny hodnoty z proměnné array, které se nenacházejí v žádném z polí v proměnné arrays. Klíče v array jsou zachovány.

Příklady

Vypočítat rozdíl tří polí
{{#af_print: {{#af_difference: {{#af_list: a | b | c }} | {{#af_list: a }} | {{#af_list: b}} }} }}
  • 2: c

af_exists

ArrayFunctions version
1.0

Tato funkce parseru kontroluje, zda daný klíč nebo index v daném poli existuje. Pro kontrolu vnořených polí lze zadat více klíčů.

Popis

{{#af_exists: array | *keys }}

Parametry

Název Typ Popis
array pole Pole, které se má zkontrolovat.
keys řetězec nebo celé číslo Klíč ke kontrole. Pro kontrolu, zda existuje vnořený klíč, lze zadat více klíčů.

Návratové hodnoty

Vrací true, pokud array obsahuje klíč, jinak vrací false.

Příklady

Zkontrolovat, zda existuje klíč
{{#af_print: {{#af_exists: {{#af_object: hello=world }} | hello }} }}
true
Zkontrolovat, zda existuje index
{{#af_print: {{#af_exists: {{#af_list: a | b | c }} | 2 }} }}
true
Zkontrolovat, zda existuje vnořený klíč
{{#af_print: {{#af_exists: {{#af_list: a | {{#af_list: b | c }} }} | 0 | 3 }} }}
false

af_filter

ArrayFunctions version
2.0

This parser function filters elements from an array based on a condition. The condition is evaluated for each element in the array, and if the condition returns a "falsy" value, the element will be removed. Otherwise, the element will be kept. The values that are considered "falsy" are:

  • The empty string;
  • The boolean false;
  • The strings "no", "off", "false" and "0".

If no condition is given, all empty elements are removed. Indices are not reset after calling this function.

Description

{{#af_filter: array | value_name | condition }}

Parameters

Name Type Default Description
array array The array to filter.
value_name string null The name to give to the value in the condition.
condition string null The condition to filter on.

Return values

Returns the array with all values for which the condition returned a falsy value removed.

Examples

Remove all empty values
{{#af_print: {{#af_filter: {{#af_list: a | | c }} }} }}
  • 0: a
  • 2: c
Remove the element "b"
{{#af_print: {{#af_filter: {{#af_list: a | b | c }} | v | {{#ifeq: {{{v}}} | b | yes }} }} }}
  • 0: a
  • 2: c

af_flatten

ArrayFunctions version
1.11

Tato funkce parseru vytvoří nové pole se všemi prvky podpole zřetězenými do něj rekurzivně až do zadané hloubky, nebo dokud není pole zcela zploštěno, pokud není hloubka zadána.

Popis

{{#af_flatten: array | depth }}

Parametry

Název Typ Výchozí Popis
array pole Pole, které se má zploštit.
depth celé číslo null Hloubka, do které se má pole zploštit, nebo nic, co se má zploštit, dokud není pole zcela zploštělé.

Návratové hodnoty

Vrátí pole se všemi prvky podpole zřetězenými do něj rekurzivně až do zadané hloubky, nebo zcela zploštělé pole, pokud hloubka není zadána.

Příklady

Zploštění pole o jednu úroveň
{{#af_print: {{#af_flatten: {{#af_list: {{#af_list: a | b | c }} | {{#af_list: d | e | f }} }} }} }}
  • 0: a
  • 1: b
  • 2: c
  • 3: d
  • 4: e
  • 5: f

af_float

ArrayFunctions version
1.0

Tato funkce parseru přetypuje řetězec na číslo s plovoucí desetinnou čárkou. To je užitečné pro vytvoření pole obsahujícího číslo s plovoucí čárkou.

Popis

{{#af_float: value }}

Parametry

Název Typ Popis
value řetězec nebo plovoucí Hodnota, která se má přetypovat na typ s plovoucí plovoucí hodnotou.

Návratové hodnoty

Vrátí přetypovaný float (plovoucí).

Příklady

Vytvoření neprůhledné reprezentace float
{{#af_float: 1.298 }}, {{#af_float: 0 }}
float__^__1.298, float__^__0
Vytvoření pole obsahující číslo s plovoucí čárkou
{{#af_print: {{#af_list: {{#af_float: 1.298 }} }} }}
  • 0: 1.298

af_foreach

ArrayFunctions version
1.0

Tato funkce parseru poskytuje způsob iterování přes pole. Pro každý z prvků v daném vstupním poli vyhodnotí jeho tělo a nahradí všechny výskyty proměnných key_name a value_name. K těmto proměnným lze přistupovat stejným způsobem jako k parametrům šablony, a to tak, že je obklopíte trojitými závorkami (např. {{{value_name}}}).

Chování této funkce parseru může být ovlivněno konfiguračním parametrem $wgArrayFunctionsForeachIterationLimit.

Popis

{{#af_foreach: array | key_name | value_name | body | delimiter=delimiter }}

Parametry

Název Typ Výchozí Popis
array pole Pole, přes které se má opakovat.
key_name řetězec null Název, který se má použít pro klíč.
value_name řetězec null Název, který se má použít pro hodnotu.
body řetězec Tělo, které se má vrátit pro každé opakování.
delimiter řetězec "" Oddělovač, který se má vložit mezi výsledky (k dispozici od verze 1.9.0).

Návratové hodnoty

Vrátí výsledný wikitext.

Příklady

Opakovat přes seznam
{{#af_foreach: {{#af_list: John | Steve | Harry }} | | name | Hello, {{{name}}}!<br/> }}
Hello, John!
Hello, Steve!
Hello, Harry!
Opakovat přes objekt
{{#af_foreach: {{#af_object: Hello=John | Hi=Steve | Welcome=Harry }} | greeting | name | {{{greeting}}}, {{{name}}}!<br/> }}
Hello, John!
Hi, Steve!
Welcome, Harry!
Opakovat přes seznam a přidat oddělovač
{{#af_foreach: {{#af_list: John | Steve | Harry }} | | name | Hello, {{{name}}}! | delimiter=<br/> }}
Hello, John!
Hello, Steve!
Hello, Harry!

af_get

ArrayFunctions version
1.0

Tato funkce parseru načte prvek s daným indexem z daného pole nebo provede nějakou operaci, pokud je index přetížený. Pokud index neexistuje a nejedná se o přetížený index, vrátí se prázdný řetězec.

Přetížený index umožňuje uživateli stručně provádět určité jednoduché operace s poli během indexování. Použití přetíženého indexu je identické s prvním provedením příkazu #af_get se všemi indexy před přetíženým indexem, poté provedením funkce určené přetíženým indexem a následným provedením dalšího příkazu #af_get se zbývajícími indexy. Například {{#af_get: {{{1}}} | a | * | b }} je ekvivalent {{#af_get: {{#af_group: {{#af_get: {{{1}}} | a }} }} | b }}.

Pokud pole obsahuje klíč, který koliduje se symbolem přetíženého indexu, bude místo toho načtena hodnota pod klíčem. To bylo provedeno z důvodů zpětné kompatibility.

Popis

{{#af_get: array | *indices }}

Parametry

Název Typ Popis
array pole Pole, ve kterém se má indexovat.
*indices řetězec Index. Vnořeným polím v indexu lze přiřadit více indexů.

Přetížené indexy (k dispozici od verze 1.11.0)
Syntaxe Ekvivalentní funkce Popis
* #af_group Seskupí podpole podle klíče.
<- #af_reverse Obrátí pole.
>< #af_flatten Jednou pole srovná.
>><< #af_flatten Zplošťuje pole, dokud nebude zcela ploché.
# #af_unique Odstraní duplikáty z pole.
n..m #af_slice Načte část pole (pro indexování od začátku do konce pole lze vynechat buď n nebo m).
! (k dispozici od verze 1.16.0) #af_show Zobrazí hodnotu čitelnou formou ve formátu table, simple.
// (available since version 2.0.0) #af_filter Remove all empty elements from the array.

Návratové hodnoty

Vrátí indexovanou hodnotu nebo prázdný řetězec, pokud index neexistuje.

Příklady

Získání prvku nejvyšší úrovně
{{#af_get: {{#af_list: a | b | c }} | 1 }}
b
Získat podpole
{{#af_print: {{#af_get: {{#af_list: a | {{#af_list: b | c }} }} | 1 }} }}
  • 0: b
  • 1: c
Získat vnořený prvek
{{#af_get: {{#af_list: a | {{#af_object: hello=world }} }} | 1 | hello }}
world
Obrátit pole
{{#af_print: {{#af_get: {{#af_list: a | b | c }} | <- }} }}
  • 0: c
  • 1: b
  • 2: a
Načíst poslední prvek pole
{{#af_print: {{#af_get: {{#af_list: a | b | c }} | <- | 0 }} }}
c

af_group

ArrayFunctions version
1.11

Tato funkce parseru vypočítá pole, kde jsou podpole rekurzivně seskupeny podle klíče.

Popis

{{#af_group: array }}

Parametry

Název Typ Popis
array pole Pole, pro které se mají seskupit podpole.

Návratové hodnoty

Vrátí pole, kde jsou podpole rekurzivně seskupeny podle klíče.

Příklady

Seskupení podpolí podle klíče
{{#af_print: {{#af_group: {{#af_list: {{#af_object: a=1 | b=2 }} | {{#af_object: a=3 | b=4 }} | {{#af_object: a=5 | b=5 }} }} }} }}
  • a
    • 0: 1
    • 1: 3
    • 2: 5
  • b
    • 0: 2
    • 1: 4
    • 2: 5

af_if

ArrayFunctions version
1.0

Tato funkce parseru vybere jednu ze dvou alternativ na základě daného predikátu.

Popis

{{#af_if: predicate | consequent | alternative }}

Parametry

Název Typ Výchozí Popis
predicate boolean Tvrzení.
consequent řetězec Hodnota, která se má vrátit, pokud tvrzení platí (tj. je true).
alternative řetězec "" Hodnota, která se má vrátit, pokud tvrzení neplatí (tj. je false).

Návratové hodnoty

Vrátí důsledek, pokud tvrzení platí, nebo alternativu, pokud je zadána a tvrzení neplatí.

Příklady

Kontrola, zda je hodnota pole
{{#af_if: {{#af_isarray: not an array }} | A beautiful array! | Not an array! }}
Not an array!

af_int

ArrayFunctions version
1.0

Tato funkce parseru převádí řetězec na celé číslo. To je užitečné pro vytvoření pole obsahujícího celé číslo.

Popis

{{#af_int: value }}

Parametry

Název Typ Popis
value řetězec nebo celé číslo Hodnota, která se má převést na celé číslo.

Návratové hodnoty

Vrátí přetypované celé číslo.

Příklady

Vytvoření neprůhledné reprezentace celého čísla
{{#af_int: 42 }}, {{#af_int: -12 }}
integer__^__42, integer__^__-12
Vytvoření pole obsahujícího celé číslo
{{#af_print: {{#af_list: {{#af_int: -129}} }} }}
  • 0: -129

af_intersect

ArrayFunctions version
1.2
Průnik tří polí

Tato funkce parseru vypočítává průnik polí. Tato funkce uchovává klíče.

Popis

{{#af_intersect: array | *arrays }}

Parametry

Název Typ Popis
array pole První pole.
*arrays pole Ostatní pole.

Návratové hodnoty

Vrátí průnik zadaných polí.

Příklady

Výpočet průniku dvou identických polí
{{#af_print: {{#af_intersect: {{#af_list: a | b | c }} | {{#af_list: a | b | c }} }} }}
  • 0: a
  • 1: b
  • 2: c
Výpočet průniku dvou částečně překrývajících se polí
{{#af_print: {{#af_intersect: {{#af_list: a | b | c }} | {{#af_list: c | d | e }} }} }}
  • 2: c

af_isarray

ArrayFunctions version
1.0

Tato funkce parseru kontroluje, zda je daná hodnota pole.

Popis

{{#af_isarray: value }}

Parametry

Název Typ Popis
value smíšený Hodnota, která se má zkontrolovat.

Návratové hodnoty

Vrací true, pokud je value pole, jinak false.

Příklady

Kontrola, zda je pole polem
{{#af_print: {{#af_isarray: {{#af_list: a | b | c }} }} }}
true
Kontrola, zda je řetězec polem
{{#af_print: {{#af_isarray: Hello, World! }} }}
false

af_join

ArrayFunctions version
1.0

Tato funkce parseru rekurzivně spojuje položky pole pomocí daného oddělovače.

Popis

{{#af_join: array | glue }}

Parametry

Název Typ Výchozí Popis
array pole Pole, ke kterému se má připojit.
glue řetězec "" Řetězec použitý ke spojení jednotlivých položek.

Návratové hodnoty

Vrátí spojené pole.

Příklady

Spojení s jednorozměrným polem
{{#af_join: {{#af_list: a | b | c }} }}
abc
Spojování jednorozměrného pole pomocí oddělovače
{{#af_join: {{#af_list: a | b | c }} | \s-\s }}
a - b - c
Spojování vícerozměrného pole pomocí oddělovače
{{#af_join: {{#af_list: a | b | {{#af_list: c | d }} }} | \s-\s }}
a - b - c - d

af_keysort

ArrayFunctions version
1.0

Tato funkce parseru seřadí seznam objektů na základě hodnot zadaného klíče. Pro seřazení pole podle klíče použijte #af_ksort.

Popis

{{#af_keysort: array | key | descending=descending | caseinsensitive=caseinsensitive }}

Parametry

Název Typ Výchozí Popis
array pole Pole, které se má seřadit.
key řetězec Klíč hodnot, na kterých by mělo být řazení založeno.
descending boolean false Zda se má seřadit sestupně.
caseinsensitive boolean false Zda se při řazení mají ignorovat velká a malá písmena (k dispozici od verze 1.7.0).

Návratové hodnoty

Vrátí seřazené pole.

Příklady

Seřadit podle věku
{{#af_print: {{#af_keysort: {{#af_list:
    {{#af_object: name=John | age=56 }} |
    {{#af_object: name=Harry | age=12 }} |
    {{#af_object: name=Bob | age=24 }}
}} | age }} }}
  • 0
    • name: Harry
    • age: 12
  • 1
    • name: Bob
    • age: 24
  • 2
    • name: John
    • age: 56
Seřadit podle věku, sestupně
{{#af_print: {{#af_keysort: {{#af_list:
    {{#af_object: name=John | age=56 }} |
    {{#af_object: name=Harry | age=12 }} |
    {{#af_object: name=Bob | age=24 }}
}} | age | descending=true }} }}
  • 0
    • name: John
    • age: 56
  • 1
    • name: Bob
    • age: 24
  • 2
    • name: Harry
    • age: 12

af_ksort

ArrayFunctions version
1.7

Tato funkce parseru seřadí pole podle klíče.

Popis

{{#af_ksort: array | descending=descending | caseinsensitive=caseinsensitive }}

Parametry

Název Typ Výchozí Popis
array pole Pole, které se má seřadit.
descending boolean false Zda se má seřadit sestupně.
caseinsensitive boolean false Zda se při řazení mají ignorovat velká a malá písmena (k dispozici od verze 1.7.0).

Návratové hodnoty

Vrátí seřazené pole.

Příklady

Seřadit podle klíče
{{#af_print: {{#af_ksort: {{#af_object: c=banana | a=orange | b=apple }} }} }}
  • a: orange
  • b: apple
  • c: banana

af_list

ArrayFunctions version
1.0

Tato funkce parseru vytvoří nový seznam z zadaných parametrů.

Popis

{{#af_list: *values }}

Parametry

*values : smíšený
Hodnoty pro seznam.

Návratové hodnoty

Vrátí výsledný seznam.

Příklady

Vytvoření jednoduchého jednorozměrného seznamu
{{#af_print: {{#af_list: a | b | c }} }}
  • 0: a
  • 1: b
  • 2: c
Vytvoření vícerozměrného seznamu
{{#af_print: {{#af_list: {{#af_list: a | b }} | {{#af_list: c | d }} }} }}
  • 0
    • 0: a
    • 1: b
  • 1
    • 0: c
    • 1: d
Vytvoření seznamu objektů
{{#af_print: {{#af_list:
    {{#af_object: name=Harry | age=22 }} |
    {{#af_object: name=Bobby | age=29 }}
}} }}
  • 0
    • name: Harry
    • age: 22
  • 1
    • name: Bobby
    • age: 29

af_map

ArrayFunctions version
1.0

Tato funkce parseru aplikuje zpětné volání na každý prvek seznamu.

Popis

{{#af_map: array | value_name | callback }}

Parametry

array : pole
Pole, které se má spustit prostřednictvím zpětného volání.
value_name : řetězec
Název, který se má dát hodnotě ve zpětném volání.
callback : řetězec
Zpětné volání, které se má použít pro každý prvek pole.

Návratové hodnoty

Vrátí výsledné mapované pole.

Příklady

Připojení řetězce ke každému prvku
{{#af_print: {{#af_map: {{#af_list: a | b | c }} | v | {{{v}}}-appended }} }}
  • 0: a-appended
  • 1: b-appended
  • 2: c-appended
Změna prvků seznamu
{{#af_print: {{#af_map: {{#af_list: {{#af_list: a }} | {{#af_list: b }} }} | v | {{#af_push: {{{v}}} | c }} }} }}
  • 0
    • 0: a
    • 1: c
  • 1
    • 0: b
    • 1: c

af_merge

ArrayFunctions version
1.2

Tato funkce parseru vypočítává sloučení dvou nebo více polí. Sloučí prvky jednoho nebo více polí dohromady tak, že hodnoty jednoho z nich se připojí na konec předchozího. Neodstraňuje duplikáty.

Pokud vstupní pole obsahují stejný klíč typu string, pak pozdější hodnota pro tento klíč přepíše předchozí. Pokud pole obsahují číselné klíče, budou místo nich připojeny pozdější hodnoty a pozdější klíče budou přečíslovány.

Popis

{{#af_merge: array | *arrays }}

Parametry

array : pole
První pole.
*arrays : pole
Ostatní pole.

Návratové hodnoty

Vrátí sjednocení daných polí.

Příklady

Připojení řetězce ke každému prvku
{{#af_print: {{#af_merge: {{#af_list: a | b | c }} | {{#af_list: d | e | f }} }} }}
  • 0: a
  • 1: b
  • 2: c
  • 3: d
  • 4: e
  • 5: f

af_object

ArrayFunctions version
1.0

Tato funkce parseru vytvoří nový objekt z daných parametrů.

Popis

{{#af_object: **values }}

Parametry

**values : smíšený
Hodnoty pro objekt.

Návratové hodnoty

Vrátí výsledný objekt.

Příklady

Vytvoření jednoduchého jednorozměrného objektu
{{#af_print: {{#af_object: a=b | b=c | c=d }} }}
  • a: b
  • b: c
  • c: d
Vytvoření vícerozměrného objektu
{{#af_print: {{#af_object: head={{#af_object: title=MediaWiki | meta={{#af_list: {{#af_object: charset=UTF-8 }} }} }} }} }}
  • head
    • title: MediaWiki
    • meta
      • 0
        • charset: UTF-8

af_pipeline

ArrayFunctions version
1.14

Tato funkce parseru vytváří kanál operací. Funkce parser vezme výsledek z rozšíření předchozího argumentu a předá ho jako zadaný parametr (nebo ve výchozím nastavení prev) dalšímu argumentu funkce parser. To je velmi užitečné pro zlepšení čitelnosti kódu šablony, protože umožňuje odstranit hluboce vnořená volání funkcí parseru. Například následující dva úryvky jsou sémanticky ekvivalentní:

Před Po
{{#af_print: {{#af_unique: {{#af_reverse: {{#af_list: a | a | b | c}} }} }} }}
{{#af_pipeline: {{#af_list: a | a | b | c }}
| {{#af_reverse: {{{prev}}} }}
| {{#af_unique: {{{prev}}} }}
| {{#af_print: {{{prev}}} }}
}}

Chování této funkce parseru může být ovlivněno konfiguračním parametrem $wgArrayFunctionsMaxPipelineLength.

Popis

{{#af_pipeline: initial | *steps | parameter=parameter }}

Parametry

Název Typ Výchozí Popis
initial smíšený Počáteční hodnota pipeline.
*steps smíšený Následné kroky pipeline.
parameter řetězec "prev" Název, který se má použít pro předchozí hodnotu.

Návratové hodnoty

Vrátí hodnotu vrácenou posledním krokem pipeline.

Příklady

Vytvoření pipeline
{{#af_pipeline: {{#af_list: a | a | b | c }}
| {{#af_reverse: {{{prev}}} }}
| {{#af_unique: {{{prev}}} }}
| {{#af_print: {{{prev}}} }}
}}
  • 0: c
  • 1: b
  • 2: a

af_print

ArrayFunctions version
1.0

Tato funkce parseru vypíše danou hodnotu pro účely ladění. Na rozdíl od #af_show neanalyzuje hodnotu. Tato funkce by se měla používat pouze pro účely ladění, zvažte použití #af_show k zobrazení hodnoty čtenáři.

Popis

{{#af_print: *values | end=end }}

Parametry

Název Typ Výchozí Popis
*values smíšený Hodnoty, které se mají vytisknout.
end řetězec "" Řetězec, který se má připojit na konec každé vytištěné hodnoty.

Návratové hodnoty

Vrátí hodnotu ve formě čitelné pro člověka.

Příklady

Vytisknout booleovskou hodnotu
{{#af_print: {{#af_bool: yes }} }}
true
Vytisknout seznam
{{#af_print: {{#af_list: a | b | c }} }}
  • 0: a
  • 1: b
  • 2: c

af_push

ArrayFunctions version
1.0

Tato funkce parseru přidá zadanou hodnotu na konec seznamu.

Popis

{{#af_push: array | value }}

Parametry

array : pole
Pole, ke kterému se má připojit hodnota.
value : smíšený
Hodnota, kterou je třeba přidat.

Návratové hodnoty

Vrátí pole s připojenou hodnotou.

Příklady

Vložení hodnoty
{{#af_print: {{#af_push: {{#af_list: a | b }} | c }} }}
  • 0: a
  • 1: b
  • 2: c

af_put

ArrayFunctions version
1.13

Tato funkce parseru nastaví danou hodnotu pro daný index. Je identické s #af_set, s výjimkou pořadí parametrů. Tato funkce parseru by měla být upřednostňována před funkcí #af_set.

Popis

{{#af_put: array | value | *indices }}

Parametry

array : pole
Do pole, ve kterém se má nastavit index.
value : smíšený
Hodnota, na kterou se má index nastavit.
*indices : řetězec
Index, který má být nastaven. Vnořeným indexovým polím lze přiřadit více indexů.

Návratové hodnoty

Vrátí pole s daným indexem nastaveným na danou hodnotu.

Příklady

Nahrazení existující hodnoty
{{#af_print: {{#af_put: {{#af_list: a | b | c }} | d | 2 }} }}
  • 0: a
  • 1: b
  • 2: d
Vytvoření nového indexu
{{#af_print: {{#af_set: {{#af_object: foo=bar }} | far | boo }} }}
  • foo: bar
  • boo: far
Vytvoření nového podpole
{{#af_print: {{#af_set: {{#af_object: foo=bar }} | far | boo | far }} }}
  • foo: bar
  • boo
    • far: far

af_range

ArrayFunctions version
1.12

Tato funkce parseru vytváří konečný rozsah celých čísel. i. prvek rozsahu je určen funkcí r(i) = start + step * i. Pro kladný krok jsou hranice rozsahu i >= 0 a r(i) < stop. Pro záporný krok jsou hranice i >= 0 a r(i) > stop.

Chování této funkce parseru může být ovlivněno konfiguračním parametrem $wgArrayFunctionsMaxRangeSize.

Popis

{{#af_range: start | stop | step }}

Parametry

Název Typ Výchozí Popis
start celé číslo Začátek rozsahu.
stop celé číslo null Konec rozsahu (nezahrnuje). Pokud je tato hodnota vynechána, hodnota start se stane hodnotou stop a hodnota start bude výchozí na nule.
step celé číslo 1 Velikost kroku mezi hodnotami rozsahu.

Návratové hodnoty

Konečný rozsah celých čísel.

Příklady

Vytvoření rozsahu od 0 do 4
{{#af_print: {{#af_range: 0 | 5 }} }}
  • 0: 0
  • 1: 1
  • 2: 2
  • 3: 3
  • 4: 4
Alternativní syntaxe pro rozsah od 0 do 4
{{#af_print: {{#af_range: 5 }} }}
  • 0: 0
  • 1: 1
  • 2: 2
  • 3: 3
  • 4: 4
Vytvoření rozsahu od 0 do -4
{{#af_print: {{#af_range: 0 | -5 | -1 }} }}
  • 0: 0
  • 1: -1
  • 2: -2
  • 3: -3
  • 4: -4
Vytvoření rozsahu všech lichých čísel mezi 0 a 10
{{#af_print: {{#af_range: 1 | 10 | 2 }} }}
  • 0: 0
  • 1: 3
  • 2: 5
  • 3: 7
  • 4: 9

af_reduce

ArrayFunctions version
1.2

Tato funkce parseru opakovaně redukuje pole na jednu hodnotu pomocí zpětného volání. Opakovaně aplikuje hodnotu callable na prvky daného pole, aby se pole zredukovalo na jednu hodnotu. Volatelné metodě se předává hodnota aktuální iterace a také výsledek předchozí iterace.

Popis

{{#af_reduce: array | carry_name | value_name | callable | initial }}

Parametry

Název Typ Výchozí Popis
array pole Pole, které se má zmenšit.
carry_name řetězec Název, který se má použít pro přenos.
value_name řetězec Název, který se má použít pro hodnotu.
callable řetězec Zpětné volání, které se má použít pro každou iteraci.
initial řetězec "" Počáteční přenos k použití.

Návratové hodnoty

Vrátí výslednou hodnotu.

Příklady

Použití redukce k zřetězení hodnot
{{#af_reduce: {{#af_list: a | b | c }} | c | i | {{{c}}}{{{i}}} }}
abc
Použití redukce k obrácení a následnému zřetězení hodnot
{{#af_reduce: {{#af_list: a | b | c }} | c | i | {{{i}}}{{{c}}} }}
cba
Použití redukce k sestavení rovnice
{{#af_reduce: {{#af_list: 2 | 3 | 5 | 7 | 11 }} | c | i | {{{c}}} + {{{i}}} | 0 }}
0 + 2 + 3 + 5 + 7 + 11

af_reverse

ArrayFunctions version
1.11

Tato funkce parseru obrací zadané pole. Nezachovává číselné klíče.

Popis

{{#af_reverse: array }}

Parametry

array : pole
Pole, které se má obrátit.

Návratové hodnoty

Vrátí původní pole v obráceném pořadí.

Příklady

Obrácení seznamu
{{#af_print: {{#af_reverse: {{#af_list: a | b | c}} }} }}
  • 0: c
  • 1: b
  • 2: a
ArrayFunctions version
1.3

Tato funkce parseru prohledává dané pole a hledá danou hodnotu a pokud je hodnota nalezena, vrací první odpovídající klíč.

Popis

{{#af_search: array | value }}

Parametry

array : pole
Pole, ve kterém se má hledat.
value : smíšený
Hodnota, která se má vyhledat.

Návratové hodnoty

Vrátí první odpovídající klíč, pokud je hodnota nalezena, jinak nic.

Příklady

Hledání hodnoty v poli
{{#af_print: {{#af_search: {{#af_list: a | b | c }} | b }} }}
1

af_set

ArrayFunctions version
1.0

(zastaralé od 1.13.0)

Tato funkce parseru nastaví danou hodnotu pro daný index. V ArrayFunctions 1.13.0 byl zastaralý a neměl by se již používat. Z důvodu zpětné kompatibility zůstane k dispozici na dobu neurčitou. Alternativně byste měli použít #af_put.

Popis

{{#af_set: value | array | *indices }}

Parametry

value : smíšený
Hodnota, na kterou se má index nastavit.
array : pole
Do pole, ve kterém se má nastavit index.
*indices : řetězec
Index, který má být nastaven. Vnořeným indexovým polím lze přiřadit více indexů.

Návratové hodnoty

Vrátí pole s daným indexem nastaveným na danou hodnotu.

Příklady

Nahrazení existující hodnoty
{{#af_print: {{#af_set: d | {{#af_list: a | b | c }} | 2 }} }}
  • 0: a
  • 1: b
  • 2: d
Vytvoření nového indexu
{{#af_print: {{#af_set: far | {{#af_object: foo=bar }} | boo }} }}
  • foo: bar
  • boo: far
Vytvoření nového podpole
{{#af_print: {{#af_set: far | {{#af_object: foo=bar }} | boo | far }} }}
  • foo: bar
  • boo
    • far: far

af_show

ArrayFunctions version
1.4

Tato funkce parseru vypíše danou hodnotu ve formátu čitelném pro člověka. Formátování hodnoty je založeno na format.

Popis

{{#af_show: value | format=format }}

Parametry

Název Typ Výchozí Popis
value smíšený Hodnota, která se má zobrazit.
format řetězec "simple" (zavedeno od 1.16.0) Seznam formátů oddělených čárkami. Hodnota bude zobrazena s použitím prvního formátu, který daný typ hodnoty podporuje.

Formáty (k dispozici od verze 1.16.0)
Název Podporované typy Popis
simple string, integer, float, boolean Naformátuje hodnotu jako její řetězcovou reprezentaci. Toto je výchozí formát.
table array Naformátuje hodnotu jako tabulku.

Návratové hodnoty

Vrátí hodnotu v lidsky čitelné podobě, formátovanou pomocí proměnné format.

Příklady

Zobrazení hodnoty
{{#af_show: Hello World! }}
Hello World!
Zobrazení celého čísla
{{#af_show: {{#af_int: 42 }} | format=simple }}
42

af_slice

ArrayFunctions version
1.0

Tato funkce parseru extrahuje výřez z daného pole. Klíče budou resetovány a jejich pořadí bude přeskupeno.

Popis

{{#af_slice: array | offset | length }}

Parametry

Name Type Required? Description
array pole Požadované Pole, ze kterého se má odebrat výřez.
offset celé číslo Požadované Posun, na kterém začíná řez. Pokud je nezáporná, řez začne na tomto daném posunu. Pokud je záporná, sekvence bude začínat v dané vzdálenosti od konce pole.
length celá čísla, volitelné Volitelné Délka řezu. Pokud je délka zadána a je kladná, pak bude řez obsahovat tento počet prvků. Pokud je délka zadána a je záporná, pak řez zastaví tolik prvků od konce pole. Pokud je vynechán, pak bude řez obsahovat vše od offsetu až do konce pole.

Návratové hodnoty

Výřez.

Příklady

Získání prvních dvou prvků
{{#af_print: {{#af_slice: {{#af_list: a | b | c }} | 0 | 2 }} }}
  • 0: a
  • 1: b
Získání posledního prvku
{{#af_print: {{#af_slice: {{#af_list: a | b | c }} | -1 }} }}
  • 0: c

af_sort

ArrayFunctions version
1.0

Tato funkce parseru seřadí daný seznam. Nezachovává numerické klávesy.

Popis

{{#af_sort: array | descending=descending | caseinsensitive=caseinsensitive }}

Parametry

Název Typ Výchozí Popis
array pole Pole, které se má seřadit.
descending boolean false Zda se má seznam seřadit sestupně.
caseinsensitive boolean false Zda se při řazení mají ignorovat velká a malá písmena.

Návratové hodnoty

Vrátí seřazený seznam.

Příklady

Vzestupné seřazení seznamu
{{#af_print: {{#af_sort: {{#af_list: b | c | a }} }} }}
  • 0: a
  • 1: b
  • 2: c
Sestupné seřazení seznamu
{{#af_print: {{#af_sort: {{#af_list: b | c | a }} | descending=true }} }}
  • 0: c
  • 1: b
  • 2: a

af_split

ArrayFunctions version
1.1

Tato funkce parseru rozděluje daný řetězec na základě oddělovače.

Popis

{{#af_split: string | delimiter }}

Parametry

Název Typ Výchozí Popis
string řetězec Řetězec, který má být rozdělen.
delimiter řetězec "," Oddělovač, který se má použít.

Návratové hodnoty

Vrátí výsledný seznam.

Příklady

Rozdělení řetězce na základě čárek
{{#af_print: {{#af_split: a, b, c }} }}
  • 0: a
  • 1: b
  • 2: c
Rozdělení věty na slova
{{#af_print: {{#af_split: Lorem ipsum dolor et | \s }} }}
  • 0: Lorem
  • 1: ipsum
  • 2: dolor
  • 3: et

af_stringmap

ArrayFunctions version
1.6

Tato funkce parseru aplikuje zpětné volání na každou položku řetězce s oddělovači a vrátí výsledek jako řetězec s oddělovači, volitelně s jiným oddělovačem. Tato funkce je podobná parserové funkci Page Forms' #arraymap.

Popis

{{#af_stringmap: value | delimiter | value_name | callback | new_delimiter | conjunction }}

Parametry

Název Typ Výchozí Popis
value řetězec Oddělený řetězec.
delimiter řetězec Oddělovač, na kterém se má rozdělit value. Pokud je zadán prázdný řetězec, použije se ",".
value_name řetězec Název, který se má dát hodnotě ve zpětném volání.
callback řetězec Zpětné volání, které se má použít pro každý prvek pole.
new_delimiter řetězec ", " Nový oddělovač, který se má vložit mezi mapované položky.
conjunction řetězec null Oddělovač, který se má umístit mezi poslední dvě položky. To vám umožní vytvořit přirozenější shrnutí, například "Alice, Bob a Eva". Pokud není zadána žádná hodnota, použije se new_delimiter.

Návratové hodnoty

Vrátí výsledný řetězec s oddělovači.

Příklady

Proměnit každou položku na odkaz
{{#af_stringmap: William Shakespeare, Stephen King, Mark Twain | , | x | [[{{{x}}}]] }}
William Shakespeare, Stephen King, Mark Twain
Převedení seznamu odděleného čárkami na seznam čitelný pro člověka
{{#af_stringmap: William Shakespeare, Stephen King, Mark Twain | , | x | {{{x}}} | ,\s | and }}
William Shakespeare, Stephen King and Mark Twain

af_template

ArrayFunctions version
1.0

Tato funkce parseru vyvolá danou šablonu a předá hodnoty z daného pole jako argumenty. V případě, že dané pole je objekt, budou hodnoty předány jako pojmenované argumenty. Jinak budou předány jako číselné argumenty.

Popis

{{#af_template: name | data }}

Parametry

name : řetězec
Název šablony, která se má vyvolat. Pokud není zadán jmenný prostor, předpokládá se, že stránka je v jmenném prostoru šablony, jinak se použije zadaný jmenný prostor. Stránka musí existovat, musí být zahrnutelná a musí být čitelná pro uživatele, jinak se zobrazí chyba.
data : pole
Data, která se mají předat parametrům. Hodnoty s číselnými indexy se předávají jako poziční argumenty a hodnoty s řetězcovými indexy se předávají jako pojmenované argumenty.

Návratové hodnoty

Rozšířená šablona.

Příklady

Vyvolání šablony se seznamem
{{#af_template: Echo | {{#af_list: a | b }} }}
{{Echo|a|b}}
Vyvolání šablony s objektem
{{#af_template: Echo | {{#af_object: foo=bar | boo=far }} }}
{{Echo|foo=bar|boo=far}}

af_trim

ArrayFunctions version
1.8

Tato funkce parseru ořízne zadané znaky ze začátku a konce daného řetězce. Pořadí znaků nehraje roli. Zastaví se, jakmile narazí na znak, který není v characters.

Popis

{{#af_trim: string | characters }}

Parametry

string : řetězec
Řetězec, který bude oříznut.
characters : řetězec
Znaky, které se mají oříznout.

Návratové hodnoty

Ořezaný řetězec.

Příklady

Ořezání řetězce
{{#af_trim: !a! | ! }}
a
Ořezávání všech řetězců v seznamu
{{#af_print: {{#af_map: {{#af_list: !a! | !b! | !c! }} | v | {{#af_trim: {{{v}}} | ! }} }} }}
  • 0: a
  • 1: b
  • 2: c

af_unique

ArrayFunctions version
1.0

Tato funkce parseru odstraňuje duplicitní hodnoty z daného pole. Tato funkce neresetuje klíče.

Popis

{{#af_unique: array }}

Parametry

array : pole
Pole, ze kterého se mají odstranit duplikáty.

Návratové hodnoty

Vrátí pole s odstraněnými duplikáty.

Příklady

Odstranění duplikátů z pole
{{#af_print: {{#af_unique: {{#af_list: a | a | b | c | b }} }} }}
  • 0: a
  • 2: b
  • 3: c

af_unset

ArrayFunctions version
1.0

Tato funkce parseru odstraní z pole hodnotu přidruženou k danému indexu a vrátí výsledek. Číselné klávesy se po volání této funkce nevynulují.

Popis

{{#af_unset: array | *indices }}

Parametry

array : pole
Pole, ze kterého se má odebrat daný klíč.
*indices : řetězec
Index, který má být odstraněn. Vnořeným indexovým polím lze přiřadit více indexů.

Návratové hodnoty

Vrátí pole, po kterém je odstraněn daný index.

Příklady

Odebrání indexu nejvyšší úrovně
{{#af_print: {{#af_unset: {{#af_list: a | b | c }} | 2 }} }}
  • 0: a
  • 1: b
Odebrání indexu nejvyšší úrovně, klíče se neresetují
{{#af_print: {{#af_unset: {{#af_list: a | b | c }} | 1 }} }}
  • 0: a
  • 2: c
Odebrání vnořeného indexu
{{#af_print: {{#af_unset: {{#af_object: foo={{#af_object: bar=quz | far=buz }} }} | foo | bar }} }}
  • foo
    • far: buz

af_zip

ArrayFunctions version
1.16

Tato funkce parseru bere jedno nebo více polí a seskládá je dohromady podle klíče, čímž vytvoří pole, kde každý klíč mapuje na pole obsahující všechny hodnoty pod daným klíčem v každém ze vstupních polí. Výsledné pole bude obsahovat pouze klíče, které byly přítomny ve všech vstupních polích. To znamená, že pokud vstupní pole obsahuje klíč, který není přítomen v žádném z ostatních vstupních polí, klíč bude zahozen a nebude součástí finálního komprimovaného pole.

Popis

{{#af_zip: array | *arrays }}

Parametry

array : pole
První pole.
*arrays : pole
Ostatní pole.

Návratové hodnoty

Vrátí pole složená dohromady.

Příklady

Zipování dvou seznamů stejné délky
{{#af_print: {{#af_zip: {{#af_list: a | b | c }} | {{#af_list: d | e | f }} }} }}
  • 0
    • 0: a
    • 1: d
  • 1
    • 0: b
    • 1: e
  • 2
    • 0: c
    • 1: f
Zipování dvou seznamů různých délek
{{#af_print: {{#af_zip: {{#af_list: a | b }} | {{#af_list: d | e | f }} }} }}
  • 0
    • 0: a
    • 1: d
  • 1
    • 0: b
    • 1: e
Zipování dvou objektů se stejnými klíči
{{#af_print: {{#af_zip: {{#af_object: a=a | b=b }} | {{#af_object: a=c | b=d }} }} }}
  • a
    • 0: a
    • 1: c
  • b
    • 0: b
    • 1: d
Zipování dvou objektů s různými klíči
{{#af_print: {{#af_zip: {{#af_object: a=a | b=b }} | {{#af_object: a=c | different=d }} }} }}
  • a
    • 0: a
    • 1: c

Scribunto

Doporučuje se použít LuaSandbox , protože při použití LuaStandalone se nezachovává pořadí polí (viz T349590).

Toto rozšíření je obzvláště užitečné v kombinaci s Lua, protože ho lze použít k vytvoření pole obsahujícího data potřebná pro prezentaci stránky. Toto pole lze exportovat pro práci s ArrayFunctions:

local p = {};

function p.world()
	return mw.af.export({
		["Hello"] = "World"
	});
end

return p;

Tento modul lze pak vyvolat takto:

{{#af_print: {{#invoke: Hello | world }} }}
  • Hello: World

mw.af.export

ArrayFunctions version
1.0

Tato funkce v Lua exportuje tabulku v Lua jako pole o velikosti ArrayFunctions.

Popis

mw.af.export( table )

Parametry

table : pole
Pole, které se má exportovat.

Návratové hodnoty

Vrátí tabulku jako pole typu ArrayFunctions.

mw.af.import

ArrayFunctions version
1.6

Tato funkce v Lua importuje pole ArrayFunctions jako tabulku v Lua.

Popis

mw.af.import( array )

Parametry

array : pole
Pole, které se má importovat.

Návratové hodnoty

Vrátí pole jako tabulku v Lua.

Semantic MediaWiki

Toto rozšíření se integruje se Semantic MediaWiki přidáním formátu výsledku arrayfunctions. Formát výsledku arrayfunctions se používá k formátování výsledků dotazu jako pole ArrayFunctions. Výsledek je téměř identický s výsledkem funkce mw.smw.ask v Lua od Semantic Scribunto, s výjimkou číselných indexů, které začínají na nule.

arrayfunctions

ArrayFunctions version
1.14

Tento formát výsledků formátuje výsledky dotazu jako pole typu ArrayFunctions.

Popis

{{#ask: query | format=arrayfunctions }}

Návratové hodnoty

Vrátí výsledek dotazu jako pole typu ArrayFunctions.

Příklady

Jednoduchý dotaz
{{#af_print: {{#ask:
 [[Category:City]]
 [[Located in::Germany]] 
 |?Population
 |?Area#km²=Size
 |mainlabel=City
 |sort=Population
 |order=descending
 |headers=plain
 |format=arrayfunctions
}} }}
  • 0
    • City: Berlin
    • Population: 3520061
    • Size: 891.85 km²
  • 1
    • City: Munich
    • Population: 1353186
    • Size: 310.43 km²
  • 2
    • City: Cologne
    • Population: 1080394
    • Size: 405.02 km²
  • 3
    • City: Frankfurt
    • Population: 679664
    • Size: 248.31 km²
  • 4
    • City: Stuttgart
    • Population: 606588
    • Size: 207.35 km²
  • 5
    • City: Würzburg
    • Population: 126635
    • Size: 87.63 km²

Cargo

Toto rozšíření se integruje s Cargo přidáním formátu zobrazení arrayfunctions. Formát výsledku arrayfunctions se používá k formátování výsledků dotazu jako pole ArrayFunctions.

arrayfunctions

ArrayFunctions version
1.15

Tento formát zobrazení formátuje výsledky dotazu jako pole typu ArrayFunctions.

Popis

Parametr no html je vyžadován pro to, aby ArrayFunctions správně interpretoval výsledek.
{{#cargo_query: parameters | no html | format=arrayfunctions }}

Návratové hodnoty

Vrátí výsledek dotazu jako pole typu ArrayFunctions.

Příklady

Jednoduchý dotaz
{{#af_print: {{#cargo_query: tables=Books
 |no html
 |fields=_pageName,Authors,Genres
 |format=arrayfunctions
}} }}
  • 0
    • _pageName: The Masque of the Red Death
    • Authors: Edgar Allan Poe
    • Genres
      • 0: Horror
      • 1: Fiction
  • 1
    • _pageName: Rita Hayworth and Shawshank Redemption
    • Authors: Stephen King
    • Genres
      • 0: Realism
      • 1: Crime
  • 2
    • _pageName: Animal Farm
    • Authors: George Orwell
    • Genres: Political satire

Kouzelná slůvka

Rozšíření definuje řadu magických slov (proměnných).

AF_EMPTY

ArrayFunctions version
1.0

Toto magické slovo vrací prázdné pole. To je užitečné, protože s hodnotami #af_list nebo #af_object není možné vytvořit prázdné pole.

Popis

{{AF_EMPTY}}

Návratové hodnoty

Vrátí prázdné pole.

Prezentace

Související odkazy

Seznam změn

Všechny významné změny v ArrayFunctions zde budou zdokumentovány.

Formát je založen na Keep a Changelog a toto rozšíření se řídí standardem Semantic Versioning.

v2.0.1 - 2026 červen 18

Changed

  • Make #af_stringmap able to create array with "0" as a value. Previously, "0" would be removed from the array.

v2.0.0 - 2026 leden 28

Added

  • Add the #af_filter parser function.
  • Add the // overloaded index to remove empty values.

Changed

  • BREAKING: Remove support for MediaWiki 1.39 and earlier. The oldest supported version is now MediaWiki 1.40.
  • BREAKING: In #af_pipeline, when the first argument is empty, {{{prev}}} now renders literally as {{{prev}}}. Use {{{prev|}}} to preserve the 1.x.x behavior.
  • Ignore the first argument when it is empty for #af_difference, #af_intersect, #af_merge, #af_object, #af_pipeline, and #af_zip.
  • Localisation updates courtesy of translatewiki.net.

v1.17.0 - 2025 srpen 26

This version is not tagged properly on Special:Version, where it still shows as 1.16.2.

Přidáno

  • Přidána konfigurační proměnná $wgArrayFunctionsMaxPipelineLength pro omezení celkového počtu kroků v kanálu.
  • Přidána kategorie sledování Pages using the ArrayFunctions extension (af-tracking-category).

Změněno

Opraveno

  • Rozsahy přesahující $wgArrayFunctionsMaxRangeSize se nyní berou v úvahu při hlášení velikosti největšího konstruovaného rozsahu v sestavě limitů analyzátoru. Dříve se braly v úvahu pouze rozsahy, které nepřekračovaly limit.
  • Oprava chyby TypeError, která se vyskytla při šíření chyby z vnořeného volání funkce parseru.

v1.16.2 - 2025 červen 28

Opraveno

  • Oprava výjimky způsobené uložením objektu Message do dat rozšíření parseru (T397946).
  • Zajištění, aby se chyby vykreslovaly v cílovém jazyce stránky, nikoli v jazyce uživatele. (T397951).

v1.16.1 - 2025 červen 19

Změněno

Opraveno

  • Oprava chyby BadMethodCallException, která byla způsobena spoléháním se na $wgLang v háčku ParserLimitReportPrepare.

v1.16.0 - 2025 červen 10

Přidáno

  • Přidána konfigurační proměnná $wgArrayFunctionsForeachIterationLimit, pro omezení celkového počtu iterací, které lze provést pomocí proměnné #af_foreach.
  • Přidána konfigurační proměnná $wgArrayFunctionsMaxRangeSize, chcete-li omezit maximální počet prvků, které může pole vytvořené pomocí proměnné #af_range obsahovat.
  • Přidána funkce parseru #af_zip.
  • Přidán přetížený index ! pro zobrazení hodnoty.
  • Přidány formáty table a simple pro '#af_show'.
  • Přidána kategorie sledování Pages with ArrayFunctions errors (af-error-category).
  • Přidáno sledování a šíření chyb.

Změněno

  • Povolení naformátovat proměnné #af_show.
  • Funkce parseru #af_sort a #af_ksort nyní porovnávají položky normálně, a ne jako řetězce.
  • Aktualizace lokalizace s laskavým svolením translatewiki.net.

Opraveno

  • Oprava výjimky při předávání prázdného řetězce argumentu klíčového slova.

v1.15.0 - 2025 květen 13

Přidáno

  • Přidán formát zobrazení Cargo arrayfunctions.

Změněno

v1.14.2 - 2025 duben 15

Opraveno

  • Odeberání vlastnosti bez hodnoty z výsledku při použití formátu výsledku arrayfunctions se Semantic MediaWiki.

v1.14.1 - 2025 duben 15

Přidáno

  • Přidána kompatibilita se Semantic MediaWiki 5.0.0.

Změněno

Opraveno

  • Obnovení kompatibility se zastaralou verzí MediaWiki 1.35.

v1.14.0 - 2025 duben 1

Přidáno

  • Přidání formátu výsledků arrayfunctions Semantic MediaWiki.
  • Přidána funkce parseru #af_pipeline.

Změněno

  • Zrušena kompatibilita s MediaWiki 1.35.
  • Aktualizace lokalizace s laskavým svolením translatewiki.net.

Opraveno

  • Opravena výjimka při použití #af_template na MediaWiki 1.44.

v1.13.0 - 2025 březen 4

Změněno

  • Nahrazena funkce parseru #af_set funkcí #af_put. Funkce parseru #af_set zůstává k dispozici z důvodu zpětné kompatibility.
  • Aktualizace lokalizace s laskavým svolením translatewiki.net.

Opraveno

  • Pole magických proměnných ID se již nepovažuje za asociativní, což by dříve narušovalo zvýrazňování syntaxe v CodeMirror. (o alex4401)

v1.12.0 - 2025 únor 4

Přidáno

  • Přidána funkce parseru #af_range.

Změněno

  • Přejmenována funkce parseru #af_wildcard na #af_group a přidán alias pro #af_wildcard.
  • Funkce parseru #af_difference nyní porovnává položky normálně, místo aby je porovnávala jako řetězce.
  • Funkce parseru #af_exists nyní akceptuje více klíčů pro kontrolu, zda existuje vnořený klíč.
  • Funkce parseru #af_intersect nyní porovnává položky normálně, místo aby je porovnávala jako řetězce.
  • Aktualizace lokalizace s laskavým svolením translatewiki.net.

v1.11.0 - 2024 prosinec 10

Přidáno

  • Přidány následující funkce parseru: #af_flatten #af_wildcard #af_reverse .
  • Přetížení proměnné #af_get speciálními indexy pro provádění určitých operací s polem namísto načítání klíče.

Změněno

  • Funkce parseru #af_unique nyní porovnává položky normálně, místo aby je porovnávala jako řetězce.

v1.10.0 - 2024 listopad 26

Přidáno

  • Přidána ZLIB komprese pomocí gzdeflate a gzinflate.

Změněno

v1.9.0 - 2024 květen 2

Přidáno

  • Přidána volba delimiter do funkce parseru #af_foreach.

Změněno

  • Všechny řetězcové parametry nyní podporují escape sekvence.

v1.8.0 - 2024 duben 4

Změněno

  • Prázdné znaky jsou nyní ořezány na začátku a na konci hodnot pole, aby bylo chování konzistentní s ostatními parametry v MediaWiki.
  • Aktualizace lokalizace s laskavým svolením translatewiki.net.

v1.7.0 - 2023 říjen 24

Přidáno

  • Přidána funkce parseru #af_ksort.
  • Přidána volba caseinsensitive do funkce parseru #af_keysort.
  • Přidána volba caseinsensitive do funkce parseru #af_sort.

Změněno

v1.6.0 - 2023 září 12

Přidáno

  • Přidána funkce parseru #af_stringmap.
  • Přidána funkce mw.af.import v Lua pro import polí ArrayFunctions do Lua.

Změněno

v1.5.0 - 2023 září 7

Přidáno

  • Přidána funkce parseru #af_difference.

Změněno

v1.4.4 - 2023 červen 30

Změněno

Opraveno

  • Opravena funkce parseru #af_template, která již explicitně nekontroluje oprávnění uživatele ke čtení, protože běžná transkluze šablon to také nedělá. Dříve se vypisovala chyba.

v1.4.3 - 2023 květen 26

Změněno

  • Export hodnoty NULL (např. pomocí funkce mw.af.export v Lua) nyní povede k prázdnému řetězci. Dříve se NULL vracelo beze změny.

v1.4.2 - 2023 květen 26

Změněno

  • Funkce parseru #af_template nyní zobrazuje neexistující šablony jako nefunkční odkaz. Dříve se vypisovala chyba.
  • Aktualizace lokalizace s laskavým svolením translatewiki.net.

v1.4.1 - 2023 květen 5

Změněno

  • Funkce parseru #af_split nyní povoluje jako první parametr prázdný řetězec. Dříve se vypisovala chyba.
  • Aktualizace lokalizace s laskavým svolením translatewiki.net.

v1.4.0 - 2023 duben 26

Přidáno

  • Přidána funkce parseru #af_show.

v1.3.0 - 2023 březen 27

Přidáno

  • Přidána funkce parseru #af_search.

v1.2.0 - 2023 březen 3

Přidáno

  • Add the following parser functions: #af_intersect #af_merge #af_reduce.

v1.1.0 - 2023 únor 3

Přidáno

  • Přidána funkce parseru #af_split.

v1.0.1 - 2023 leden 9

Změněno

  • Funkce mw.af.export v Lua nyní podporuje parametry všech typů. Dříve podporoval pouze pole.

Opraveno

  • Opraven problém, kdy byla vyvolána výjimka při předání parametru s nesprávným typem proměnné mw.af.export.

v1.0.0 - 2023 leden 7

Přidáno

  • Přidány funkce parseru: #af_bool #af_count #af_exists #af_float #af_foreach #af_get #af_if #af_int #af_isarray #af_join #af_keysort #af_list #af_map #af_object #af_print #af_push #af_set #af_slice #af_sort #af_template #af_unique #af_unset