Jump to content

Extension:Loops

From mediawiki.org
This page is a translated version of the page Extension:Loops and the translation is 100% complete.
Manuel des extensions MediaWiki
Loops
État de la version : stable
Implémentation Fonction d'analyseur
Description Fournit des fonctions d'analyseur pour exécuter des boucles
Auteur(s)
Dernière version 0.5.2 (2019-08-05)
MediaWiki 1.34+
PHP 5.6+
Modifie la base
de données
Non
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
README
RELEASE-NOTES
Exemple sandbox.semantic-mediawiki.org
  • $wgLoopsEnabledFunctions
  • $wgLoopsCountLimit
Téléchargements trimestriels 37 (Ranked 99th)
Traduire l’extension Loops sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

L'extension Loops fournit des Fonctions d'analyse pour exécuter les boucles.

Actuellement, cette extension est maintenue au niveau de base par MGChecker.

Utilisation

Les exemples suivants utilisent l'extension Variables et, dans certains cas, l'extension ParserFunctions .

#while

{{#while}} effectue une boucle (c'est-à-dire qu'il analyse plusieurs fois une instruction donnée de bloc de balisage wiki) tant que l'évaluation du balisage de la condition est une valeur non vide.

{{#while:
 | <texte de la condition>
 | <instruction de bloc>
}}
Exemples

Balisage Wiki :

{{#vardefine: i | 0 }}{{#while:
 | {{#ifexpr: {{#var: i }} < 5 | true }}
 | <nowiki />
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}

Fait ceci :

  • 0
  • 1
  • 2
  • 3
  • 4

{{#while}} peut également être utilisé dans un modèle pour simuler un tableau indicé. Si la page Template:Loops Test contient

{{#vardefine: i | 0 }}{{#while:
 | {{{arg{{#var: i }} |}}}
 | <nowiki />
* {{{arg{{#var: i }} }}}{{#vardefine: i
   | {{#expr: {{#var: i }} + 1 }}
 }}
}}

alors le balisage wiki

{{Loops Test
 |arg0=zéro
 |arg1=un
 |arg2=deux
 |arg3=trois
 |arg4=quatre
}}

produit

  • zéro
  • un
  • deux
  • trois
  • quatre

Il est important de noter que les espaces blancs, y compris les retours à la ligne, les tabulations et les espaces eux-mêmes, sont supprimés au début et à la fin de chaque argument de ces fonctions d'analyse. Si cela n'est pas souhaitable, l'ajout de caractères autres que des espaces blancs (y compris le codage HTML pour un caractère d'espace blanc &#32;) empêchera sa suppression (d'où les balises ‎<nowiki> dans les exemples ci-dessus).

#dowhile

{{#dowhile}} fonctionne exactement comme {{#while}}, à l'exception du fait que l'instruction du bloc est toujours analysée et affichée (si elle aboutit à un texte affichable) au moins une fois. Ceci est fait avant que le texte de la condition soit évalué.

#loop

{{#loop: <variable name>
 | <starting value>
 | <number of loops to be performed>
 | <wiki markup>
}}

{{#loop}} analyse et affiche à plusieurs reprises <wiki markup> un nombre de fois égal à la valeur absolue de <number of loops to be performed>. <Starting value> est placé dans une variable (accessible par la fonction d'analyseur {{#var:}} de l'extension Variables ) en utilisant le nom <variable name>. Après chaque boucle, la variable est incrémentée de un si <number of loops to be performed> est positif, ou diminuée de un si <number of loops to be performed> est négatif.

De toutes les fonctions de boucle, #loop doit avoir la meilleure performance puisqu'il n'y a aucune condition qui ne soit étendue ni validée à chaque cycle.
Exemples

Le code suivant :

{{#loop: varname
 | 4
 | 4
 | <nowiki />
* C'est le passage {{#var: varname }} et il en reste encore {{#expr: 7 - {{#var: varname }} }}
}}

produit

  • C'est le passage 4 et il en reste encore 3
  • C'est le passage 5 et il en reste encore 2
  • C'est le passage 6 et il en reste encore 1
  • C'est le passage 7 et il en reste encore 0

#forargs (expérimental)

{{#forargs}} doit être utilisé dans les modèles.

Il prend les arguments qui sont transmis au modèle et les met dans des variables accessibles par la fonction d'analyse {{#var:}} de l'extension Variables .

{{#forargs: <prefix>
 | <key>
 | <value>
 | <block statement>
}}

Cette fonction itère sur chaque argument dont le nom commence par <prefix>.

A chaque itération, il met le nom de l'argument sans <prefix> dans <key> comme s'il appelait {{#vardefine: <key> }}.

Il prend ensuite la valeur de l'argument et le met dans <value> par une méthode similaire.

L'instruction du bloc est ensuite développée.

L'instruction du bloc peut contenir {{#var: <key> }} et {{#var: <value> }} pour accéder aux arguments stockés.

Exemple

Si la page Template:Loops Test contient

{{#forargs: arg
 | key
 | value
 | <nowiki />
* {{#var: key }} = {{#var: value }}
}}

alors le balisage wiki

{{Loops Test
 | arg1=val1
 | spam=spammity
 | arg5=val5
 | argument=value
}}

donne

  • 1 = val1
  • 5 = val5
  • ument = value

#fornumargs (expérimental)

{{#fornumargs: <key>
 | <value>
 | <block statement>
}}

{{#fornumargs}} fonctionne de la même manière que {{#forargs}} avec deux différences majeures : il ne prend pas de préfixe d'argument, et il ne fonctionne uniquement qu'avec des arguments numérotés s'ils sont explicitement numérotées,

{{Template
 | 1=one
 | 2=two
}}

ou numérotés implicitement.

{{Template
 | one
 | two
}}

Le panachage de ces méthodes dans le même appel du modèle peut entraîner le réécrasement des valeurs, alors faites attention.

Exemples

Si Template:Loops Test est modifié pour contenir :

{{#fornumargs: number
 | value
 | <nowiki />
* {{#var: number }} = {{#var: value }}
}}

alors

{{Loops Test
  | Apricot
  | B = Bolognese
  | Caramel slice
  | 5 = Eclair
}}

donnera

  • 1 = Apricot
  • 2 = Caramel slice
  • 5 = Eclair

Installation

Certaines des fonctions d'analyse syntaxique fournies par cette extension nécessitent que l'extension ParserFunctions et l'extension Variables soient déjà installées.
  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé Loops 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/Loops
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'Loops' );
    
  • Configurez selon vos besoins
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Configuration

Ces variables de configuration doivent être déclarées dans le fichier LocalSettings.php après l'inclusion de cette extension.

$egLoopsCountLimit
Ce paramètre définit le nombre maximum de boucles autorisées sur une page (par défaut 100). S'il vaut -1, les boucles s'exécutent avec les limites de l'environnement PHP. Ce paramètre n'affecte ni les fonctions d'analyse {{#forargs:}} ni {{#fornumargs:}} ,
$egLoopsEnabledFunctions
Variable de configuration de type array pour définir les fonctions de Loops à activer. Par défaut, toutes les fonctions sont activées si l'extension Variables est également installée. Si l'extension Variables n'est pas installée, #loop, #forargs et #fornumargs seront désactivés car ils ne fonctionnent pas sans qu'elle soit installée. Pour activer les fonctions #fornumargs et #forargs seulement, vous pouvez utiliser :
$egLoopsEnabledFunctions = array_diff(
    $egLoopsEnabledFunctions, [
        'forargs', 'fornumargs'
        ]
    );


Voir aussi