Jump to content

Extension:ArrayFunctions

From mediawiki.org
This page is a translated version of the page Extension:ArrayFunctions and the translation is 100% complete.
Manuel des extensions MediaWiki
ArrayFunctions
État de la version : stable
Implémentation Fonction d'analyseur
Description Fournit un ensemble de fonctions d'analyse pures qui fonctionnent avec des tableaux
Auteur(s) Marijn van Wezel (Wikibase Solutions)
Dernière version 1.17.0 (2025-08-26)
Politique de compatibilité Le master conserve la compatibilité arrière.
MediaWiki >=1.35.6
PHP >=7.4
Modifie la base
de données
Non
Composer wikibase-solutions/array-functions
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
  • $wgArrayFunctionsMaxPipelineLength
  • $wgArrayFunctionsEnableErrorTracking
  • $wgArrayFunctionsMaxRangeSize
  • $wgArrayFunctionsForeachIterationLimit
Traduire l’extension ArrayFunctions sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

Documentation pour les autres versions : 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 · non diffusé.

L'extension ArrayFunctions crée un ensemble de fonctions d'analyse pures (voir ici), compatibles Parsoid , pour réaliser les opérations sur les tableaux.

Installation

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé ArrayFunctions dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/ArrayFunctions
    
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'ArrayFunctions' );
    // augmenter $wgMaxArticleSize pour permettre des tableaux plus grands (par défaut : 2048)
    $wgMaxArticleSize = 8192;
    
  • Configure performance limits as necessary.
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Abrégé

ArrayFunctions définit une collection de fonctions d'analyse qui vous permettent de travailler avec des listes et des objets non mutables, collectivement des tableaux. Au lieu de stocker ces tableaux en mémoire, elles sont sorties directement par la fonction d'analyse et peuvent être transférées à des modèles ou à d'autres fonctions d'analyse. Bien qu'il soit possible de créer et de travailler avec les tableaux entièrement avec du wikicode, l'approche recommandée est d'utiliser Scribunto (Lua), Semantic MediaWiki ou Cargo pour créer un tableau contenant toutes les données nécessaires, puis d'utiliser ArrayFunctions uniquement pour le formater. Les fonctions d'analyse #af_list et #af_object doivent d'abord être utilisées pour les tableaux simples et uniques.

ArrayFunctions définit de nombreuses fonctions d'analyse (plus de 30), mais les plus utiles sont :

  • #af_get — obtenir une valeur ou effectuer brièvement une opération
  • #af_pipeline — créer un enchaînement d'opérations pour empêcher les imbrications profondes
  • #af_foreach — itérer sur un tableau
  • #af_show — sortir une valeur stockée dans un tableau
  • #af_print — imprimer un tableau à des fins de débogage
  • #af_map — modifier tous les éléments d'un tableau
  • #af_template — appeler un modèle avec les données stockées dans un tableau
  • #af_list — créer une liste
  • #af_object — créer un objet
  • #af_zip — réduire plusieurs tableaux ensemble

Compatibilité

ArrayFunctions a pour règle de ne pas casser la compatibilité avec l'existant. Cela signifie que le code vu par l'utilisateur (comme les fonctions d'analyse, les fonctions Lua et les mots magiques) continuera à fonctionner indéfiniment, et que les modifications seront toujours implémentées de sorte à rester compatibles avec l'existant.

ArrayFunctions tente également de maintenir la compatibilité avec les anciennes versions de MediaWiki le plus longtemps possible, mais en raison de la nature des extensions, cela peut ne pas être possible indéfiniment. Si une mise à jour de MediaWiki casse une fonctionnalité sur laquelle s'appuie ArrayFunctions, il sera corrigé à postériori si cela est possible. Sinon une nouvelle version MAJEURE de ArrayFunctions sera diffusée.

Matrice de compatibilité
ArrayFunctions MediaWiki PHP Scribunto1 Semantic MediaWiki1 Cargo1
1.15.0+
Version de MediaWiki :
1.35
PHP version
7.4.0
Scribunto version
1.35
Semantic MediaWiki version
4.0
Cargo version
3.0
1.14+
Version de MediaWiki :
1.35
PHP version
7.4.0
Scribunto version
1.35
Semantic MediaWiki version
4.0
non applicable
1.0-1.13
Versions de MediaWiki :
1.35 – 1.43
PHP version
7.4.0
Scribunto version
1.35
non applicable non applicable
1 dépendance logicielle : les contraintes de version ne s'appliquent que si le logiciel est installé.

Limites des performances

ArrayFunctions version
1.16
MediaWiki limite déjà la taille totale des tableaux à $wgMaxArticleSize .

ArrayFunctions fournit un nombre de paramètres de configuration pour limiter le temps de traitement de certaines fonctions et empêcher les utilisateurs de réaliser une attaque de déni de service sur votre wiki. Pour des raisons de compatibilité arrière, ces limites sont désactivées par défaut. Les paramètres de configuration disponibles sont :

Nom Défaut Recommandé Description
$wgArrayFunctionsForeachIterationLimit -1 ~1024 Ce paramètre de configuration limite le nombre maximum d'itérations de #af_foreach qu'une page est autorisée à effectuer. Une valeur inférieure à zéro ne définit aucune limite pour le nombre d'itérations.
$wgArrayFunctionsMaxRangeSize -1 ~4096 Ce paramètre de configuration limite la taille maximum d'un tableau construit avec la fonction d'analyse #af_range. Une valeur inférieure à zéro ne définit aucune limite pour la taille des tableaux construits avec #af_range.
$wgArrayFunctionsMaxPipelineLength -1 ~$wgMaxTemplateDepth / 4 Ce paramètre de configuration limite la longueur maximale du chaînage (#af_pipeline). Une valeur inférieure à zéro ne définit aucune limite pour le nombre d'étapes du chaînage.

Ces limites sont indiquées dans le rapport des limites de l'analyseur, qui peut être utilisé pour modifier les paramètres ou déboguer une page.

FAQ

Définir un tableau à utiliser sur une page

Il n'est pas possible de définir directement un tableau à utiliser sur une page, car cela nécessiterait un traitement séquentiel des balises d'extension, ce qui n'est pas reconnu par Parsoid (voir Pas de support des balises d'extension). Au lieu de cela, vous pouvez passer les tableaux dans les paramètres des modèles :

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

De cette manière le tableau est disponible dans Template:My template avec {{{1}}}.

Itérer sur un tableau

Il est possible d'accéder aux éléments d'un tableau de manière itérative en utilisant #af_foreach :

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

La sortie attendue de l'extrait ci-dessus est :

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

Pourquoi les valeurs ne sont-elles pas reconnues comme des tableaux ?

Cela peut arriver quand vos tableaux sont trop gros. MediaWiki conserve en interne un compteur de la taille totale des arguments du modèle, qui peut être augmentée en augmentant $wgMaxArticleSize.

Différence avec les extensions telles que Arrays ou Variables

La différence principale est que les fonctions d'analyse de ArrayFunctions sont pures. Cela signifie qu'au lieu de modifier ou de déclarer une variable, la fonction d'analyse fournit directement le résultat.

Par exemple, avec #af_map, le tableau donné n'est pas modifié; au lieu de cela, une copie est créée, modifiée et ensuite fournie. Aucune fonction de partage dans ArrayFunctions ne modifie l'état global : tous les calculs se font uniquement avec l'invocation de la fonction d'analyse. Cela rend le travail avec ArrayFunctions très différent du travail avec d'autres extensions telles que Arrays ou Variables. Au lieu de modifier impérativement un tableau stocké dans une variable, la composition de fonctions doit être utilisée pour réaliser des opérations plus complexes. Par exemple :

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}}} }}
}}

Pourquoi les espaces sont-elles supprimées dans les valeurs du tableau ?

Le caractère espace est intrinsèquement implicite dans le wikicode. Pour être cohérent avec ce comportement, le caractère espace est supprimé récursivement dans les valeurs du tableau.

Fonctions

  • Les paramètres préfixés avec un seul astérisque (*) indiquent qu'un nombre variable d'arguments positionnels peut être passé.
  • Les paramètres préfixés avec un double astérisque (**) indiquent qu'un nombre variable d'arguments nommés peut être passé.
  • Les noms des arguments clé sont sensibles à la casse.
  • Les arguments chaîne supportent les séquences d'échappement suivantes :
\s pour les espaces
\n pour les passages à la ligne
\\ pour les barres obliques inverses

L'extension définit les fonctions d'analysee suivantes, les fonctions Lua, le format des résultats de Semantic MediaWiki, les formats d'affichage Cargo et les mots magiques :

Construire un tableau ou une valeur
Nom Description
#af_bool Transformer (cast) une chaîne en booléen.
#af_float Transformer une chaîne en flottant.
#af_int Transformer une chaîne en entier.
#af_list Créer une nouvelle liste de valeurs.
#af_object Créer un nouvel objet à partir des valeurs.
#af_range Créer un intervalle fini d'entiers.
#af_split Divisez une chaîne en fonction d'un délimiteur.
AF_EMPTY Un tableau vide.
mw.af.export Créer un nouveau tableau avec Lua.
arrayfunctions Formater le résultat d'une requête Semantic MediaWiki en tant que tableau ArrayFunctions.
arrayfunctions Afficher le résultat d'une requête Cargo en tant que tableau ArrayFunctions.
Extraire les informations d'un tableau
Nom Description
#af_count compter le nombre de valeurs dans un tableau
#af_exists vérifier si une clé ou un index existe dans un tableau.
#af_get récupérer un élément du tableau par son indice.
#af_isarray vérifier si une valeur est un tableau.
#af_print imprimer un tableau à des fins de débogage
#af_search rechercher une valeur dans un tableau.
#af_show Afficher la valeur sous forme lisible par un humain.
mw.af.import créer une nouvelle table à partir d'un tableau ArrayFunctions.
Créer un tableau à partir d'un tableau existant
Nom Description
#af_difference Calculez une différence de tableaux.
#af_flatten Mettre un tableau à plat.
#af_group Compute un tableau qui, lorsqu'il est indexé, fournit tous les éléments d'une clé à partir de tous les sous-tableaux.
#af_intersect Calculer l'intersection de tableaux.
#af_keysort Trier une liste d'objets basée sur les valeurs d'une clé.
#af_ksort Trier un tableau par clé.
#af_merge Calculer l'union de tableaux.
#af_push Ajoutez une valeur en fin de liste.
#af_put Initialiser une valeur à un indice donné.
#af_reverse Inverser un tableau.
#af_set Initialiser une valeur à l'indice (obsolète depuis v. 1.13.0).
#af_slice Extraire un tranche de tableau.
#af_sort Trier une liste.
#af_unique Retirer les doublons d'un tableau.
#af_unset Retirer une valeur d'un tableau à partir de son indice.
#af_zip Réduire plusieurs tableaux ensemble.
Itérer sur un tableau
Nom Description
#af_foreach Itérer sur un tableau.
#af_join Joindre les éléments d'un tableau avec un séparateur.
#af_map Appliquer un rappel à chaque élément d'une liste.
#af_reduce Réduire le tableau à une seule valeur de manière itérative en utilisant un rappel.
Fonctions diverses
Nom Description
#af_if Sélectionner l'une des deux alternatives basées sur un prédicat.
#af_pipeline Chaîner plusieurs fonctions.
#af_stringmap Appliquer un rappel à chaque valeur dans une chaîne délimitée.
#af_template Exécuter un modèle avec les valeurs dans un tableau.
#af_trim Supprimer les caractères au début et à la fin d'une chaîne.

af_bool

ArrayFunctions version
1.0

Cette fonction d'analyse transforme une chaîne en booléen. Ceci est utile pour créer un tableau contenant un booléen. Les valeurs suivantes sont considérées comme true : "1", "true", "on" et "yes". Les valeurs suivantes sont considérées comme false : "0", "false", "off" et "no". Si une autre valeur est fournie, une erreur est renvoyée.

Description

{{#af_bool: value }}

Paramètres

Nom Type Description
value chaîne ou booléen valeur à transformer en booléen.

Valeurs renvoyées

renvoie le booléen transformé

Exemples

Créer une représentation opaque d'un booléen
{{#af_bool: yes }}, {{#af_bool: no }}, {{#af_bool: true }}
boolean__^__1, boolean__^__0, boolean__^__1
Créer un tableau contenant un booléen
{{#af_print: {{#af_list: {{#af_bool: yes}} }} }}
  • 0: true

af_count

ArrayFunctions version
1.0

Cette fonction d'analyse compte le nombre de valeurs dans un tableau. Par défaut, cette fonction d'analyse ne compte que le nombre d'éléments de niveau supérieur. Néanmoins, si l'argument clé recursive reçoit la valeur true, il va compter aussi le nombre d"éléments de chaque sous-tableau. Notez que si recursive=true, l'élément contenant un tableau ainsi que toutes les valeurs qui se trouvent à l'intérieur, sont comptés.

Description

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

Paramètres

Nom Type Défaut Description
array tableau Tableau à compter.
recursive booléen false Indique si les éléments doivent être comptés récursivement.

Valeurs renvoyées

Nombre d'éléments dans le tableau.

Exemples

Compter le nombre d'éléments d'une liste unidimensionnelle
{{#af_print: {{#af_count: {{#af_list: a | b | c }} }} }}
3
Compter le nombre d'éléments d'une liste multidimensionnelle
{{#af_print: {{#af_count: {{#af_list: {{#af_list: a | b }} | {{#af_list: c | d }} }} }} }}
2
Compter le nombre d'éléments d'une liste multidimensionnelle mais de manière récursive
{{#af_print: {{#af_count: {{#af_list: {{#af_list: a | b }} | {{#af_list: c | d }} }} | recursive=true }} }}
6

af_difference

ArrayFunctions version
1.5
Différence de trois tableaux

Cette fonction d'analyse calcule une différence entre tableaux. Cette fonction préserve les clés.

Description

{{#af_difference: array | *arrays }}

Paramètres

Nom Type Description
array tableau Premier tableau.
*arrays tableau Autres tableaux.

Valeurs renvoyées

Renvoie un tableau contenant toutes les valeurs de array qui ne sont pas présentes dans les autres tableaux de arrays. Les clés de array sont conservées.

Exemples

Calcule la différence de trois tableaux.
{{#af_print: {{#af_difference: {{#af_list: a | b | c }} | {{#af_list: a }} | {{#af_list: b}} }} }}
  • 2: c

af_exists

ArrayFunctions version
1.0

Cette fonction d'analyse vérifie si la clé ou l'index donné existent dans le tableau donné. Plusieurs clés sont autorisées pour vérifier les tableaux imbriqués.

Description

{{#af_exists: array | *keys }}

Paramètres

Nom Type Description
array tableau Tableau à explorer.
keys chaîne de caractères ou entier Clé à vérifier. Plusieurs clés sont autorisées pour vérifier s'il existe une clé imbriquée.

Valeurs à renvoyer

Renvoie true si array contient la clé, et false sinon.

Exemples

Vérifier l'existence d'une clé
{{#af_print: {{#af_exists: {{#af_object: hello=world }} | hello }} }}
true
Vérifier l'existence d'un index
{{#af_print: {{#af_exists: {{#af_list: a | b | c }} | 2 }} }}
true
Vérifier l'existence d'une clé imbriquée
{{#af_print: {{#af_exists: {{#af_list: a | {{#af_list: b | c }} }} | 0 | 3 }} }}
false

af_flatten

ArrayFunctions version
1.11

Cette fonction d'analyse crée un nouveau tableau avec tous les éléments de sous-tableaux concaténés à l'intérieur et de manière récursive jusqu'à la profondeur spécifiée, ou jusqu'à ce qu'il soit complètement déplié si aucune profondeur n'est spécifiée.

Description

{{#af_flatten: array | depth }}

Paramètres

Nom Type Défaut Description
array tableau Tableau à mettre à plat.
depth entier null Profondeur maximale de développement, ou rien à déplier si le tableau est déjà à plat.

Valeurs renvoyées

Renvoie un tableau avec tous les éléments de sous-tableau concaténés à l'intérieur et de manière récursive jusqu'à la profondeur spécifiée, ou un tableau complètement à plat si aucune profondeur n'est spécifiée.

Exemples

Développer un tableau sur une profondeur de un niveau
{{#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

Cette fonction d'analyse transforme une chaîne en flottant. Elle est utile pour créer un tableau de flottants.

Description

{{#af_float: value }}

Paramètres

Nom Type Description
value chaîne de caractères ou flottant valeur à transformer en flottant.

Valeurs renvoyées

Renvoie le flottant transformé

Exemples

Créer une représentation opaque d'un flottant
{{#af_float: 1.298 }}, {{#af_float: 0 }}
float__^__1.298, float__^__0
Créer un tableau contenant un flottant
{{#af_print: {{#af_list: {{#af_float: 1.298 }} }} }}
  • 0: 1.298

af_foreach

ArrayFunctions version
1.0

Cette fonction d'analyse fournit le moyen d'itérer sur les tableaux. Pour chacun des éléments du tableau d'entrée donné, elle va évaluer son contenu, en remplaçant les occurrences des variables key_name et value_name. Ces variables sont accessibles de la même manière que les paramètres du modèle, en les entourant avec des accolades triples (par exemple {{{value_name}}}).

Le comportement de cette fonction d'analyse pourrait être influencé par le paramètre de configuration $wgArrayFunctionsForeachIterationLimit.

Description

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

Paramètres

Nom Type Défaut Description
array tableau Tableau sur lequel il faut itérer.
key_name chaîne null Nom à utiliser pour la clé.
value_name chaîne null Nom à utiliser pour la valeur.
body chaîne Contenu à renvoyer pour chaque itération.
delimiter chaîne "" Délimiteur à placer entre les résultats (disponible depuis la version 1.9.0).

Valeurs renvoyées

Renvoie le wikicode résultant.

Exemples

Itérer sur une liste
{{#af_foreach: {{#af_list: John | Steve | Harry }} | | name | Hello, {{{name}}}!<br/> }}
Hello, John!
Hello, Steve!
Hello, Harry!
Itérer sur un objet
{{#af_foreach: {{#af_object: Hello=John | Hi=Steve | Welcome=Harry }} | greeting | name | {{{greeting}}}, {{{name}}}!<br/> }}
Hello, John!
Hi, Steve!
Welcome, Harry!
Itérer sur une liste et ajouter un délimiteur
{{#af_foreach: {{#af_list: John | Steve | Harry }} | | name | Hello, {{{name}}}! | delimiter=<br/> }}
Hello, John!
Hello, Steve!
Hello, Harry!

af_get

ArrayFunctions version
1.0

Cette fonction d'analyse récupère dans le tableau l'élément avec l'indice fourni, ou réalise des opérations si l'index est surchargé. Si l'indice n'existe pas ou qu'il n'est pas surchargé, on renvoie la chaîne vide.

Un indice surchargé permet à l'utilisateur d'effectuer brièvement certaines opérations simples sur les tableaux pendant l'indexation. Utiliser un index surchargé est la même chose que de faire d'abord un #af_get avec tous les index avant la surcharge, puis de réaliser la fonction spécifiée par l'index surchargé, et enfin réaliser un autre #af_get avec les indices restants. Par exemple, {{#af_get: {{{1}}} | a | * | b }} est équivalent à {{#af_get: {{#af_group: {{#af_get: {{{1}}} | a }} }} | b }}.

Si le tableau contient une clé qui entre en collision avec le symbole pour un indice surchargé, la valeur correspondant à la clé sera récupérée à la place. Ceci a été fait pour la compatibilité arrière.

Description

{{#af_get: array | *indices }}

Paramètres

Nom Type Description
array tableau Tableau à indexer.
*indices chaîne Indice. Les indices multiples peuvent être fournis pour indexer les tableaux imbriqués.

Indices surchargés (disponible depuis la version 1.11.0)
Syntaxe Fonction équivelente Description
* #af_group Regrouper les sous-tableaux par clé.
<- #af_reverse Inverser le tableau.
>< #af_flatten Mettre à plat une fois.
>><< #af_flatten Mettre à plat en développant complètement.
# #af_unique Supprimer les doublons du tableau.
n..m #af_slice Récupérer une tranche du tableau (ou n ou m peuvent être omis pour indexer du début à la fin du tableau respectivement).
! (disponible depuis la version 1.16.0) #af_show Afficher la valeur sous forme lisible par un humain en utilisant le format table, simple.

Valeurs renvoyées

Renvoie la valeur indexée ou la chaîne vide si l'indice n'existe pas.

Exemples

Obtenir un élément de niveau supérieur
{{#af_get: {{#af_list: a | b | c }} | 1 }}
b
Obtenir un sous-tableau
{{#af_print: {{#af_get: {{#af_list: a | {{#af_list: b | c }} }} | 1 }} }}
  • 0: b
  • 1: c
Obtenir un élément imbriqué
{{#af_get: {{#af_list: a | {{#af_object: hello=world }} }} | 1 | hello }}
world
Inverser le tableau
{{#af_print: {{#af_get: {{#af_list: a | b | c }} | <- }} }}
  • 0: c
  • 1: b
  • 2: a
Obtenir le dernier élément du tableau
{{#af_print: {{#af_get: {{#af_list: a | b | c }} | <- | 0 }} }}
c

af_group

ArrayFunctions version
1.11

Cette fonction d'analyse génère un tableau où les sous-tableaux sont récursivement groupés par clé.

Description

{{#af_group: array }}

Paramètres

Nom Type Description
array tableau Tableau duquel les sous-tableaux doivent être regroupés.

Valeurs renvoyées

Renvoie un tableau où les sous-tableaux sont groupés récursivement par clé.

Exemples

Grouper des sous-tableaux par clé
{{#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

Cette fonction d'analyse sélectionne l'une des deux alternatives basées sur un prédicat donné.

Description

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

Paramètres

Nom Type Défaut Description
predicate booléen Prédicat.
consequent chaîne Valeur à renvoyer si le prédicat est vérifié (s'il vaut true).
alternative chaîne "" Valeur à renvoyer si le prédicat n'est pas vérifié (s'il vaut false).

Valeurs renvoyées

Retourne le conséquent si le prédicat est vérifié, ou l'alternative si elle est fournie et que le prédicat n'est pas vérifié.

Exemples

Vérifier qu'une valeur est un tableau
{{#af_if: {{#af_isarray: not an array }} | A beautiful array! | Not an array! }}
Not an array!

af_int

ArrayFunctions version
1.0

Cette fonction d'analyse transforme un chaîne en entier. C'est utile pour créer un tableau avec un entier.

Description

{{#af_int: value }}

Paramètres

Nom Type Description
value chaîne ou entier Valeur à transformer en entier.

Valeurs renvoyées

Renvoie l'entier transformé.

Exemples

Créer une représentation opaque d'un entier
{{#af_int: 42 }}, {{#af_int: -12 }}
integer__^__42, integer__^__-12
Créer un tableau contenant un entier
{{#af_print: {{#af_list: {{#af_int: -129}} }} }}
  • 0: -129

af_intersect

ArrayFunctions version
1.2
Intersection de trois tableaux

Cette fonction d'analyse calcule une intersection de tableaux. Cette fonction préserve les clés.

Description

{{#af_intersect: array | *arrays }}

Paramètres

Nom Type Description
array tableau Premier tableau.
*arrays tableau Autres tableaux.

Valeurs renvoyées

Renvoie l'intersection des tableaux fournis.

Exemples

Evaluer l'intersection de deux tableaux identiques
{{#af_print: {{#af_intersect: {{#af_list: a | b | c }} | {{#af_list: a | b | c }} }} }}
  • 0: a
  • 1: b
  • 2: c
Évaluer l'intersection de deux tableaux qui se recouvrent partiellement
{{#af_print: {{#af_intersect: {{#af_list: a | b | c }} | {{#af_list: c | d | e }} }} }}
  • 2: c

af_isarray

ArrayFunctions version
1.0

Cette fonction d'analyse vérifie que la valeur fournie est un tableau.

Description

{{#af_isarray: value }}

Paramètres

Nom Type Description
value divers Valeur à vérifier.

Valeurs renvoyées

Renvoie true si value est un tableau, false sinon.

Exemples

Vérifier qu'un tableau est effectivement un tableau
{{#af_print: {{#af_isarray: {{#af_list: a | b | c }} }} }}
true
Vérifier qu'une chaîne est une tableau
{{#af_print: {{#af_isarray: Hello, World! }} }}
false

af_join

ArrayFunctions version
1.0

Cette fonction d'analyse joint les éléments d'un tableau ensemble de manière récursive à l'aide d'un séparateur fourni.

Description

{{#af_join: array | glue }}

Paramètres

Nom Type Défaut Description
array tableau Tableau à joindre.
glue chaîne "" Chaîne utilisée pour joindre chaque élément.

Valeurs renvoyées

Renvoie le tableau joint.

Exemples

Joindre un tableau à une dimension
{{#af_join: {{#af_list: a | b | c }} }}
abc
Joindre un tableau à une dimension en utilisant un séparateur
{{#af_join: {{#af_list: a | b | c }} | \s-\s }}
a - b - c
Joindre un tableau à plusieurs dimensions en utilisant un séparateur
{{#af_join: {{#af_list: a | b | {{#af_list: c | d }} }} | \s-\s }}
a - b - c - d

af_keysort

ArrayFunctions version
1.0

Cette fonction d'analyse trie une liste d'objets en fonction des valeurs de la clé spécifiée. Pour trier un tableau par clé, utiliser #af_ksort.

Description

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

Paramètres

Nom Type Défaut Description
array tableau Tableau à trier.
key chaîne Clé des valeurs sur lesquelles le tri doit être effectué.
descending booléen false Indique si le tri doit être fait par ordre décroissant.
caseinsensitive booléen false Indique s'il faut ignorer la casse lors du tri (disponible depuis la version 1.7.0).

Valeurs renvoyées

Renvoie le tableau trié.

Exemples

Tri basé sur l'age
{{#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
Tri basé sur l'age, dans l'ordre descendant
{{#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

Cette fonction d'analyse trie un tableau par clé.

Description

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

Paramètres

Nom Type Défaut Description
array tableau Tableau à trier.
descending booléen false Indique si le tri doit être fait par ordre décroissant.
caseinsensitive booléen false Indique s'il faut ignorer la casse lors du tri (disponible depuis la version 1.7.0).

Valeurs renvoyées

Renvoie le tableau trié.

Exemples

Tri par clé
{{#af_print: {{#af_ksort: {{#af_object: c=banana | a=orange | b=apple }} }} }}
  • a: orange
  • b: apple
  • c: banana

af_list

ArrayFunctions version
1.0

Cette fonction d'analyse crée une nouvelle liste à partir des paramètres fournis.

Description

{{#af_list: *values }}

Paramètres

*values : divers
Valeurs de la liste.

Valeurs renvoyées

Renvoie la liste résultat.

Exemples

Créer une liste simple à une dimension
{{#af_print: {{#af_list: a | b | c }} }}
  • 0: a
  • 1: b
  • 2: c
Créer une liste à plusieurs dimensions
{{#af_print: {{#af_list: {{#af_list: a | b }} | {{#af_list: c | d }} }} }}
  • 0
    • 0: a
    • 1: b
  • 1
    • 0: c
    • 1: d
Créer une liste d'objets
{{#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

Cette fonction d'analyse applique un rappel à chaque élément d'une liste.

Description

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

Paramètres

array : tableau
Tableau à parcourir par le rappel.
value_name : chaîne
Nom à donner à la valeur dans le rappel.
callback : chaîne
Le rappel à appliquer à chaque élément du tableau.

Valeurs renvoyées

Renvoie le tableau résultat avec les correspondances.

Exemples

Ajout d'une chaîne à chaque élément
{{#af_print: {{#af_map: {{#af_list: a | b | c }} | v | {{{v}}}-appended }} }}
  • 0: a-appended
  • 1: b-appended
  • 2: c-appended
Modifier des éléments de liste
{{#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

Cette fonction d'analyse réalise la fusion de plusieurs tableaux. Elle concatène les éléments de plusieurs tableaux de sorte à ce que les valeurs de l'un soient ajoutées à la fin du précédent. Les doublons ne sont pas supprimés.

Si les tableaux fournis ont pour clé une même chaîne, alors on ne mémorise que la dernière valeur pour cette clé. Par contre quand les tableaux contiennent des clés numériques, les dernières valeurs sont ajoutées et leur clés sont renumérotées.

Description

{{#af_merge: array | *arrays }}

Paramètres

array : tableau
Premier tableau.
*arrays : tableau
Autres tableaux.

Valeurs renvoyées

Renvoie l'union des tableaux fournis.

Exemples

Ajouter une chaîne à chaque élément
{{#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

Cette fonction d'analyse crée un nouvel objet à partir des paramètres fournis.

Description

{{#af_object: **values }}

Paramètres

**values : divers
Valeurs de l'objet.

Valeurs renvoyées

Renvoie l'objet résultat.

Exemples

Créer un objet simple à une dimension
{{#af_print: {{#af_object: a=b | b=c | c=d }} }}
  • a: b
  • b: c
  • c: d
Créer un objet à plusieurs dimensions
{{#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

Cette fonction d'analyse enchaîne plusieurs opérations. La fonction d'analyse prend le résultat de l'argument précédent expansé et le passe comme paramètre spécifié (ou par défaut prev) à l'argument suivant de la fonction d'analyse. Ceci est très utile pour améliorer la lisibilité du code du modèle, car il vous permet de supprimer les appels aux fonctions d'analyse imbriquées profondément. Par exemple les deux extraits suivants sont sémantiquement équivalents :

Avant Après
{{#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}}} }}
}}

Le comportement de cette fonction d'analyse peut être influencé par le paramètre de configuration $wgArrayFunctionsMaxPipelineLength.

Description

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

Paramètres

Nom Type Défaut Description
initial divers Valeur initiale du chaînage.
*steps divers Étapes suivantes du chaînage.
parameter chaîne "prev" Nom à utiliser pour la valeur précédente.

Valeurs renvoyées

Renvoie la valeur renvoyée par l'étape finale du chaînage.

Exemples

Créer un enchaînement
{{#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

Cette fonction d'analyse imprime la valeur passée à des fins de débogage. A la différence de #af_show, la valeur n'est pas analysée. Cette fonction ne doit être utilisée qu'à des fins de débogage; utiliser plutôt #af_show pour afficher une valeur au lecteur.

Description

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

Paramètres

Nom Type Défaut Description
*values divers Valeurs à imprimer.
end chaîne "" Chaîne de caractères à ajouter à la fin de chaque valeur imprimée.

Valeurs renvoyées

Renvoyer la valeur sous forme lisible par un humain.

Exemples

Imprimer un booléen
{{#af_print: {{#af_bool: yes }} }}
true
Imprimer une liste
{{#af_print: {{#af_list: a | b | c }} }}
  • 0: a
  • 1: b
  • 2: c

af_push

ArrayFunctions version
1.0

Cette fonction d'analyse ajoute la valeur donnée à la fin de la liste.

Description

{{#af_push: array | value }}

Paramètres

array : tableau
Tableau dans lequel la valeur sera ajoutée.
value : divers
Valeur à ajouter.

Valeurs renvoyées

Renvoie le tableau avec la valeur à l'intérieur.

Exemples

Poussez une valeur
{{#af_print: {{#af_push: {{#af_list: a | b }} | c }} }}
  • 0: a
  • 1: b
  • 2: c

af_put

ArrayFunctions version
1.13

Cette fonction d'analyse attribue la valeur donnée à l'indice donné. Même chose que #af_set, sauf dans l'ordre des paramètres. Cette fonction d'analyse doit être préférée à #af_set.

Description

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

Paramètres

array : tableau
Tableau de destination où l'indice sera mis à jour.
value : divers
La valeur correspondant à l'indice.
*indices : chaîne
Indice à initialiser. Plusieurs indices peuvent être fournis pour indexer les tableaux imbriqués.

Valeurs renvoyées

Renvoie le tableau avec la valeur à l'index fourni.

Exemples

Remplacer une valeur existante
{{#af_print: {{#af_put: {{#af_list: a | b | c }} | d | 2 }} }}
  • 0: a
  • 1: b
  • 2: d
Créer un nouvel index
{{#af_print: {{#af_set: {{#af_object: foo=bar }} | far | boo }} }}
  • foo: bar
  • boo: far
Créer un nouveau sous-tableau
{{#af_print: {{#af_set: {{#af_object: foo=bar }} | far | boo | far }} }}
  • foo: bar
  • boo
    • far: far

af_range

ArrayFunctions version
1.12

Cette foinction d'analyse crée un intervalle fini d'entiers. Le ième élement de l'intervalle est déterminé par la fonction r(i) = start + step * i. Si le pas est positif, les limites de l'intervalle sont i >= 0 et r(i) < stop. Si le pas est négatif, les limites sont i >= 0 et r(i) > stop.

Le comportement de cette fonction d'analyse peut être influencé par le paramètre de configuration $wgArrayFunctionsMaxRangeSize.

Description

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

Paramètres

Nom Type Défaut Description
start entier Début de l'intervalle.
stop entier null Fin de l'intervalle (non compris). Si cette valeur est absente, le début deviendra la dernière valeur et la première valeur sera zéro par défaut.
step entier 1 Pas entre les valeurs de l'intervalle.

Valeurs renvoyées

Intervalle fini d'entiers.

Exemples

Créer un intervalle de 0 à 4
{{#af_print: {{#af_range: 0 | 5 }} }}
  • 0: 0
  • 1: 1
  • 2: 2
  • 3: 3
  • 4: 4
Syntaxe alternative pour un intervalle de 0 à 4
{{#af_print: {{#af_range: 5 }} }}
  • 0: 0
  • 1: 1
  • 2: 2
  • 3: 3
  • 4: 4
Créer un intervalle de 0 à -4
{{#af_print: {{#af_range: 0 | -5 | -1 }} }}
  • 0: 0
  • 1: -1
  • 2: -2
  • 3: -3
  • 4: -4
Créer un intervalle de tous les nombres impairs entre 0 et 10
{{#af_print: {{#af_range: 1 | 10 | 2 }} }}
  • 0: 0
  • 1: 3
  • 2: 5
  • 3: 7
  • 4: 9

af_reduce

ArrayFunctions version
1.2

Cette fonction d'analyse réduit par itération le tableau à une seule valeur en utilisant un rappel. Il applique callable par itération aux éléments du tableau fourni, afin de réduire le tableau à une seule valeur. La valeur de l'itération actuelle est passée à l'élément appelé, en même temps que le résultat de l'itération précédente.

Description

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

Paramètres

Nom Type Défaut Description
array tableau Tableau à réduire.
carry_name chaîne Nom à utiliser pour la retenue.
value_name chaîne Nom à utiliser pour la valeur.
callable chaîne Rappel à utiliser à chaque itération.
initial chaîne "" Retenue initiale à utiliser.

Valeurs renvoyées

Renvoie la valeur résultat.

Exemples

Utilisation de la réduction pour concaténer les valeurs
{{#af_reduce: {{#af_list: a | b | c }} | c | i | {{{c}}}{{{i}}} }}
abc
Utiliser la réduction pour inverser puis concaténer les valeurs
{{#af_reduce: {{#af_list: a | b | c }} | c | i | {{{i}}}{{{c}}} }}
cba
Utiliser la réduction pour construire une équation
{{#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

Cette fonction d'analyse inverse le tableau fourni. Elle ne préserve pas les clés numériques.

Description

{{#af_reverse: array }}

Paramètres

array : tableau
Tableau à inverser.

Valeurs renvoyées

Renvoie le tableau original inversé.

Exemples

Inverse une liste
{{#af_print: {{#af_reverse: {{#af_list: a | b | c}} }} }}
  • 0: c
  • 1: b
  • 2: a
ArrayFunctions version
1.3

Cette fonction d'analyse recherche une valeur donnée dans le tableau fourni, et renvoie la première clé correspondante si la valeur est trouvée.

Description

{{#af_search: array | value }}

Paramètres

array : tableau
Tableau dans lequel la recherche est effectuée.
value : divers
Valeur à rechercher.

Valeurs renvoyées

Renvoie la première clé qui correspond quand la valeur est trouvée et rien sinon.

Exemples

Chercher une valeur dans un tableau
{{#af_print: {{#af_search: {{#af_list: a | b | c }} | b }} }}
1

af_set

ArrayFunctions version
1.0

(obsolète depuis v. 1.13.0)

Cette fonction d'analyse initialise la valeur donnée à l'indice donné. Elle est obsolète dans ArrayFunctions 1.13.0 et ne doit plus être utilisée. Elle restera disponible indéfiniment pour la compatibilité arrière. Utiliser #af_put comme alternative.

Description

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

Paramètres

value : divers
Valeur à attribuer à l'indice.
array : tableau
Tableau dans lequel l'indice sera mis à jour.
*indices : chaîne
Indice à utiliser pour la mise à jour. Plusieurs indices peuvent être passés pour indexer les tableaux imbriqués.

Valeurs renvoyées

Renvoie le tableau avec l'indice initialisé avec la valeur donnée.

Exemples

Remplacer une valeur existante
{{#af_print: {{#af_set: d | {{#af_list: a | b | c }} | 2 }} }}
  • 0: a
  • 1: b
  • 2: d
Créer un nouvel index
{{#af_print: {{#af_set: far | {{#af_object: foo=bar }} | boo }} }}
  • foo: bar
  • boo: far
Créer un nouveau sous-tableau
{{#af_print: {{#af_set: far | {{#af_object: foo=bar }} | boo | far }} }}
  • foo: bar
  • boo
    • far: far

af_show

ArrayFunctions version
1.4

Cette fonction d'analyse imprime la valeur fournie sous forme lisible par un humain. Le formatage de la valeur est basée sur format.

Description

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

Paramètres

Nom Type Défaut Description
value divers Valeur à afficher.
format chaîne "simple" (introduit dans 1.16.0) Liste de formats séparés par des virgules. La valeur sera affichée en utilisant le premier format qui prend en charge le type de cette valeur.

Formats (disponible depuis la version 1.16.0)
Nom Types reconnus Description
simple string, integer, float, boolean Représenter une valeur sous forme de chaîne de caractères. Format par défaut.
table array Formater la valeur en tant que table.

Valeurs à renvoyer

Renvoyer la valeur sous forme lisible par un humain, formatée avec format.

Exemples

Afficher une valeur
{{#af_show: Hello World! }}
Hello World!
Afficher un entier
{{#af_show: {{#af_int: 42 }} | format=simple }}
42

af_slice

ArrayFunctions version
1.0

Cette fonction d'analyse extrait une tranche du tableau fourni. Les clés seront réinitialisées et réarrangées.

Description

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

Paramètres

array : tableau
Tableau dans lequel une tranche sera sélectionnée.
offset : entier
Décalage où doit commencer la tranche. Si la valeur n'est pas négative, la tranche commencera à ce décalage. Si la valeur est négative, la séquence commencera à partir de la fin du tableau.
length : entier, facultatif
Longueur de la tranche. Si la longueur est fournie et positive, la tranche contiendra autant d'éléments. Si la longueur est fournie et négative, la tranche s'arrêtera en comptant les éléments à partir de la fin. Si absent, alors la tranche contiendra tout depuis le décalage jusqu'à la fin du tableau.

Valeurs à renvoyer

Tranche.

Exemples

Obtenir les deux premiers éléments
{{#af_print: {{#af_slice: {{#af_list: a | b | c }} | 0 | 2 }} }}
  • 0: a
  • 1: b
Obtenir le dernier élément
{{#af_print: {{#af_slice: {{#af_list: a | b | c }} | -1 }} }}
  • 0: c

af_sort

ArrayFunctions version
1.0

Cette fonction d'analyse trie la liste fournie. Elle ne conserve pas les clés numériques.

Description

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

Paramètres

Nom Type Défaut Description
array tableau Tableau à trier.
descending booléen false Indique s'il faut trier la liste dans l'ordre décroissant.
caseinsensitive booléen false Indique s'il faut ignorer la casse lors du tri.

Valeurs à renvoyer

Renvoie la liste triée.

Exemples

Trier une liste par ordre croissant
{{#af_print: {{#af_sort: {{#af_list: b | c | a }} }} }}
  • 0: a
  • 1: b
  • 2: c
Trier une liste par ordre décroissant
{{#af_print: {{#af_sort: {{#af_list: b | c | a }} | descending=true }} }}
  • 0: c
  • 1: b
  • 2: a

af_split

ArrayFunctions version
1.1

Cette fonction d'analyse divise une chaîne donnée en fonction d'un délimiteur.

Description

{{#af_split: string | delimiter }}

Paramètres

Nom Type Défaut Description
string chaîne Chaîne à segmenter.
delimiter chaîne "," Délimiteur à utiliser.

Valeurs à renvoyer

Renvoie la liste résultat.

Exemples

Segmente une chaîne en fonction des virgules
{{#af_print: {{#af_split: a, b, c }} }}
  • 0: a
  • 1: b
  • 2: c
Séparer les mots d'une phrase
{{#af_print: {{#af_split: Lorem ipsum dolor et | \s }} }}
  • 0: Lorem
  • 1: ipsum
  • 2: dolor
  • 3: et

af_stringmap

ArrayFunctions version
1.6

Cette fonction de parser applique un rappel à chaque élément d'une chaîne délimitée et renvoie le résultat dans une chaîne délimitée, optionnellement avec un délimiteur différent. Cette fonction est similaire à la fonction d'analyse #arraymapde Page Forms.

Description

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

Paramètres

Nom Type Défaut Description
value chaîne Chaîne délimitée.
delimiter chaîne Délimiteur à utiliser pour segmenter value. Si la chaîne vide est passée, "," est utilisé.
value_name chaîne Nom à donner à la valeur dans le rappel.
callback chaîne Rappel à appliquer à chaque élément du tableau.
new_delimiter chaîne ", " Nouveau délimiteur à insérer entre les éléments associés.
conjunction chaîne null Délimiteur à placer entre les deux derniers éléments. Cela vous permet de créer une suite plus naturelle, comme "Alice, Bob et Eve". Si aucune valeur n'est fournie, la valeur de new_delimiter est utilisée.

Valeurs renvoyées

Renvoie la chaîne résultat délimitée.

Exemples

Transformer chaque élément en lien
{{#af_stringmap: William Shakespeare, Stephen King, Mark Twain | , | x | [[{{{x}}}]] }}
William Shakespeare, Stephen King, Mark Twain
Transformer une liste séparée par des virgules en une liste lisible par un humain
{{#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

Cette fonction d'analyse invoquera le modèle donné et passera les valeurs dans le tableau donné en argument. Dans le cas où le tableau donné est un objet, les valeurs seront passées comme des arguments nommés. Dans le cas contraire, elles seront passées comme des arguments numériques.

Description

{{#af_template: name | data }}

Paramètres

name : chaîne
Nom du modèle à appeler. Si aucun espace de noms n'est fourni, on suppose que la page est dans l'espace de noms des modèles, sinon on utilise l'espace de noms donné. La page doit exister, pouvoir être incluse et lisible par l'utilisateur, sinon une erreur est donnée.
data : tableau
Données à passer dans les paramètres. Les valeurs avec des indices numériques sont transmises dans les arguments positionnels et les valeurs avec des indices de chaîne sont transmises comme des arguments nommés.

Valeurs à renvoyer

Modèle expansé.

Exemples

Appel d'un modèle avec une liste
{{#af_template: Echo | {{#af_list: a | b }} }}
{{Echo|a|b}}
Appel d'un modèle avec un objet
{{#af_template: Echo | {{#af_object: foo=bar | boo=far }} }}
{{Echo|foo=bar|boo=far}}

af_trim

ArrayFunctions version
1.8

Cette fonction d'analyse supprime les caractères donnés du début et de la fin de la chaîne fournie. L'ordre des caractères n'a pas d'importance. Il s'arrête dès que le caractère rencontré n'est pas dans characters.

Description

{{#af_trim: string | characters }}

Paramètres

string : chaîne
Chaîne à élaguer.
characters : chaîne
Caractères à supprimer.

Valeurs à renvoyer

Chaîne élaguée.

Exemples

Élaguer une chaîne
{{#af_trim: !a! | ! }}
a
Élaguer chaque chaîne d'une liste
{{#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

Cette fonction d'analyse supprime les valeurs en doublon dans le tableau fourni. Cette fonction ne réinitialise pas les clés.

Description

{{#af_unique: array }}

Paramètres

array : tableau
Tableau duquel les doublons doivent être supprimés.

Valeurs à renvoyer

Retourne le tableau où les doublons ont été supprimés.

Exemples

Supprimer les doublons d'un tableau.
{{#af_print: {{#af_unique: {{#af_list: a | a | b | c | b }} }} }}
  • 0: a
  • 2: b
  • 3: c

af_unset

ArrayFunctions version
1.0

Cette fonction d'analyse supprime la valeur associée à l'index fourni dans le tableau et renvoie le résultat. Les clés numériques ne sont pas réinitialisées après avoir appelé cette fonction.

Description

{{#af_unset: array | *indices }}

Paramètres

array : tableau
Tableau duquel la clé fournie sera supprimée.
*indices : chaîne
Indice à supprimer. Plusieurs indices peuvent être passés pour indexer les tableaux imbriqués.

Valeurs à renvoyer

Renvoie le tableau dont on a supprimé l'index fourni.

Exemples

Supprimer un indice de niveau supérieur
{{#af_print: {{#af_unset: {{#af_list: a | b | c }} | 2 }} }}
  • 0: a
  • 1: b
Supprimer un indice de niveau supérieur, clés non réinitialisées
{{#af_print: {{#af_unset: {{#af_list: a | b | c }} | 1 }} }}
  • 0: a
  • 2: c
Supprimer un index imbriqué
{{#af_print: {{#af_unset: {{#af_object: foo={{#af_object: bar=quz | far=buz }} }} | foo | bar }} }}
  • foo
    • far: buz

af_zip

ArrayFunctions version
1.16

Cette fonction d'analyse prend un ou plusieurs tableaux et les réduit ensemble avec les clés, créant un tableau où chaque clé correspond à un tableau contenant toutes les valeurs sous cette clé dans chacun des tableaux d'entrée. Le tableau final ne contiendra que des clés qui étaient présentes dans tous les tableaux d'entrée. Cela signifie que si un tableau d'entrée contient une clé qui n'est pas présente dans l'un des autres tableaux, la clé sera abandonnée et ne fera pas partie du tableau final réduit.

Description

{{#af_zip: array | *arrays }}

Paramètres

array : tableau
Premier tableau.
*arrays : tableau
Autres tableaux.

Valeurs à renvoyer

Renvoie l'ensemble des tableaux réduits.

Exemples

Réduire deux listes de longueur égale
{{#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
Réduire deux listes de longueur différente
{{#af_print: {{#af_zip: {{#af_list: a | b }} | {{#af_list: d | e | f }} }} }}
  • 0
    • 0: a
    • 1: d
  • 1
    • 0: b
    • 1: e
Réduire deux objets avec les mêmes clés
{{#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
Réduire deux objets avec des clés différentes
{{#af_print: {{#af_zip: {{#af_object: a=a | b=b }} | {{#af_object: a=c | different=d }} }} }}
  • a
    • 0: a
    • 1: c

Scribunto

Il est recommandé d'utiliser LuaSandbox car l'ordre des tableaux n'est pas préservé quand LuaStandalone est utilisé (voir T349590).

Cette extension est particulièrement utile en combinaison avec Lua, car elle peut être utilisée pour créer un tableau contenant les données nécessaires à la présentation de la page. Ce tableau peut être exporté pour fonctionner avec ArrayFunctions :

local p = {};

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

return p;

Ce module peut être appelé de la manière suivante :

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

mw.af.export

ArrayFunctions version
1.0

Cette fonction Lua exporte une table Lua en tant que tableau ArrayFunctions.

Description

mw.af.export( table )

Paramètres

table : tableau
Tableau à exporter.

Valeurs renvoyées

Renvoie la table en tant que tableau ArrayFunctions.

mw.af.import

ArrayFunctions version
1.6

Cette fonction Lua importe un tableau ArrayFunctions en tant que table Lua.

Description

mw.af.import( array )

Paramètres

array : tableau
Tableau à importer.

Valeurs renvoyées

Renvoie la tableau en tant que table Lua.

Semantic MediaWiki

Cette extension s'intègre à Semantic MediaWiki en ajoutant le format de résultat arrayfunctions. Le format de résultat arrayfunctions est utilisé pour formater les résultats de la requête en tant que tableau ArrayFunctions. Le résultat est presque identique au résultat de la fonction Lua mw.smw.ask de Semantic Scribunto, sauf que les indices numériques commencent à zéro.

arrayfunctions

ArrayFunctions version
1.14

Le format de résultat formate les résultats de la requête en tant que tableau ArrayFunctions.

Description

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

Valeurs renvoyées

Renvoie les résultats de la requête en tant que tableau ArrayFunctions.

Exemples

Requête simple
{{#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

Cette extension s'intègre à Cargo en ajoutant le format d'affichage arrayfunctions. Le format de résultat arrayfunctions est utilisé pour formater les résultats de la requête en tant que tableau ArrayFunctions.

arrayfunctions

ArrayFunctions version
1.15

Ce format de résultat formate les résultats de la requête en tant que tableau ArrayFunctions.

Description

Le paramètre no html est nécessaire pour que ArrayFunctions interprète correctement le résultat.
{{#cargo_query: parameters | no html | format=arrayfunctions }}

Valeurs à renvoyer

Renvoie le résultat de la requête en tant que tableau ArrayFunctions.

Exemples

Requête simple
{{#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

Mots magiques

L'extension définit un certain nombre de mots magiques (variables).

AF_EMPTY

ArrayFunctions version
1.0

Ce mot magique renvoie un tableau vide. C'est utile, car il n'est pas possible de créer un tableau vide avec #af_list ou #af_object.

Description

{{AF_EMPTY}}

Valeurs renvoyées

Renvoyer un tableau vide.

Présentations

Voir aussi

  • Extension:Arrays - extension similaire qui fonctionne en définissant d'abord les tableaux puis en les manipulant. Non compatible avec Parsoid.
  • Extension:Scribunto - permet d'inclure des scripts Lua dans les pages du wiki.

Versions

Toutes les modifications notables de ArrayFunctions seront documentées ici.

Le format est basé sur Garder un suivi des modifications, et cette extension est conforme au Semantic Versioning.

v1.17.0 - 2025 août 26

Ajouté

  • Ajouter la variable de configuration $wgArrayFunctionsMaxPipelineLength pour limiter le nombre total d'étapes dans le chaînage.
  • Ajouter la catégorie de suivi Pages using the ArrayFunctions extension (af-tracking-category).

Modifié

Corrigé

  • Les intervalles qui dépassent $wgArrayFunctionsMaxRangeSize sont désormais pris en compte lors de la déclaration de la taille du plus grand intervalle construit dans le rapport des limites de l'analyseur. Auparavant seuls les intervalles qui ne dépassaient pas la limite étaient pris en compte.
  • Correction de TypeError qui s'est produite lors de la propagation d'une erreur à partir d'un appel imbriqué à la fonction d'analyse.

v1.16.2 - 2025 juin 28

Corrigé

  • Correction de l'exception causée par le stockage d'un objet Message dans les données d'extension de l'analyseur (T397946).
  • Assurez-vous que les erreurs sont rendues dans la langue cible de la page au lieu de la langue de l'utilisateur (T397951).

v1.16.1 - 2025 juin 19

Modifié

Corrigé

  • Corrige BadMethodCallException car basé sur $wgLang dans l'accroche ParserLimitReportPrepare.

v1.16.0 - 2025 juin 10

Ajouté

  • Ajouter la variable de configuration $wgArrayFunctionsForeachIterationLimit pour limiter le nombre total d'itérations qui peuvent être effectuées par #af_foreach.
  • Ajoutez la variable de configuration $wgArrayFunctionsMaxRangeSize pour limiter le nombre maximum d'éléments qu'un tableau construit avec #af_range peut contenir.
  • Ajoute la fonction d'analyse #af_zip.
  • Ajouter l'indice surchargé ! pour afficher une valeur.
  • Ajouter les formats table et simple pour '#af_show'.
  • Ajouter la catégorie de suivi Pages with ArrayFunctions errors (af-error-category).
  • Ajout du suivi et de la propagation des erreurs.

Modifié

  • Permet à #af_show d'avoir un format.
  • Les fonctions d'analyse #af_sort et #af_ksort comparent désormais les éléments normalement au lieu de comparer des chaînes.
  • Mises à jour des traductions fournies par translatewiki.net.

Corrigé

  • Correction de l'exception lorsque qu'une chaîne vide est passée à un argument de mot clé.

v1.15.0 - 2025 mai 13

Ajouté

  • Ajout du format d'affichage Cargo arrayfunctions.

Modifié

v1.14.2 - 2025 avril 15

Corrigé

  • Supprimer dans le résultat les propriétés sans valeur lorsque le format de résultat arrayfunctions est utilisé avec Semantic MediaWiki.

v1.14.1 - 2025 avril 15

Ajouté

  • Ajouter la compatibilité avec Semantic MediaWiki 5.0.0.

Modifié

Corrigé

  • Rétablir la compatibilité avec MediaWiki 1.35 obsolète.

v1.14.0 - 2025 avril 1

Ajouté

  • Ajoutez le format de résultats arrayfunctions de Semantic MediaWiki.
  • Ajouter la fonction d'analyse #af_pipeline.

Modifié

  • Abandonner la compatibilité avec MediaWiki 1.35.
  • Mises à jour des traductions fournies par translatewiki.net.

Corrigé

  • Corriger l'exception lors de l'utilisation de #af_template avec MediaWiki 1.44.

v1.13.0 - 2025 mars 4

Modifié

  • Remplacer la fonction d'analyse #af_set par #af_put. La fonction d'analyse #af_set reste disponible pour la compatibilité arrière.
  • Mises à jour des traductions fournies par translatewiki.net.

Corrigé

  • Le tableau d'identifiants de variables magiques n'est plus traité comme un tableau associatif, ce qui cassait auparavant la mise en évidence de la syntaxe CodeMirror. (de alex4401)

v1.12.0 - 2025 février 4

Ajouté

  • Ajout de la fonction d'analyse #af_range.

Modifié

  • Renommage de la fonction d'analyse #af_wildcard en #af_group et ajout d'un alias pour #af_wildcard.
  • La fonction d'analyse #af_difference compare désormais les éléments normalement au lieu de comparer des chaînes.
  • La fonction d'analyse #af_exists accepte désormais plusieurs clés pour vérifier si une clé imbriquée existe.
  • La fonction d'analyse #af_intersect compare désormais les éléments normalement au lieu de comparer des chaînes.
  • Mises à jour des traductions fournies par translatewiki.net.

v1.11.0 - 2024 décembre 10

Ajouté

  • Ajouter les fonction d'analyse suivantes : #af_flatten #af_wildcard #af_reverse .
  • Surcharge #af_get avec des indices spéciaux pour réaliser certaines opérations su rle tableau au lieu de récupérer une clé.

Modifié

  • La fonction d'analyse #af_unique compare désormais les éléments normalement au lieu de comparer des chaînes.

v1.10.0 - 2024 novembre 26

Ajouté

  • Ajouter la compression ZLIB en utilisant gzdeflate et gzinflate.

Modifié

v1.9.0 - 2024 mai 2

Ajouté

  • Ajouter l'option delimiter à la fonction d'analyse #af_foreach.

Modifié

  • Tous les paramètres de chaîne prennent en charge dorénavant les séquences échappées.

v1.8.0 - 2024 avril 4

Modifié

  • Les caractères espace sont désormais supprimés au début et à la fin des valeurs de tableau pour être cohérent avec le comportement des autres paramètres dans MediaWiki.
  • Mises à jour des traductions fournies par translatewiki.net.

v1.7.0 - 2023 octobre 24

Ajouté

  • Ajout de la fonction d'analyse #af_ksort.
  • Ajout de l'option caseinsensitive à la fonction d'analyse #af_keysort.
  • Ajout de l'option caseinsensitive à la fonction d'analyse #af_sort.

Modifié

v1.6.0 - 2023 septembre 12

Ajouté

  • Ajout de la fonction d'analyse #af_stringmap.
  • Ajout de la fonction Lua mw.af.import pour importer les tableaux ArrayFunctions dans Lua.

Modifié

v1.5.0 - 2023 septembre 7

Ajouté

  • Ajout de la fonction d'analyse #af_difference.

Modifié

v1.4.4 - 2023 juin 30

Modifié

Corrigé

  • Correction de la fonction d'analyse #af_template pour qu'elle ne vérifie plus explicitement les autorisations de lecture d'un utilisateur puisque la transclusion régulière de modèle ne le fait pas non plus. Auparavant, une erreur était générée.

v1.4.3 - 2023 mai 26

Modifié

  • Exporter une valeur NULL (par exemple via la fonction Lua mw.af.export) produit désormais une chaîne vide. Auparavant, NULL générait une erreur.

v1.4.2 - 2023 mai 26

Modifié

  • La fonction d'analyse #af_template affiche maintenant les modèles inexistants sous forme de lien cassé. Auparavant, une erreur était générée.
  • Mises à jour des traductions fournies par translatewiki.net.

v1.4.1 - 2023 mai 5

Modifié

  • La fonction d'analyse #af_split reconnait désormais la chaîne vide comme premier paramètre. Auparavant, une erreur était générée.
  • Mises à jour des traductions fournies par translatewiki.net.

v1.4.0 - 2023 avril 26

Ajouté

  • Ajout de la fonction d'analyse #af_show.

v1.3.0 - 2023 mars 27

Ajouté

  • Ajout de la fonction d'analyse #af_search.

v1.2.0 - 2023 mars 3

Ajouté

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

v1.1.0 - 2023 février 3

Ajouté

  • Ajouté les fonctions d'analyse #af_split.

v1.0.1 - 2023 janvier 9

Modifié

  • La fonction Lua mw.af.export supporte désormais des paramètres de tout type. Auparavent elle ne prenait en charge que les tableaux.

Corrigé

  • Corriger le problème où une exception est générée quand un paramètre est passé à mw.af.export et qu'il a un type incorrect.

v1.0.0 - 2023 janvier 7

Ajouté

  • Fonctions d'analyse ajoutées : #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