Extension:Loops
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 |
|
|
Téléchargements trimestriels | 42 (Ranked 94th) |
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
#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  
) 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.
#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
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
Loops
dans votre dossierextensions/
.
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
- 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
- Extension:LoopFunctions - autre extension pour les boucles
- Module:Loops
Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : Cette liste ne fait pas autorité. Certaines fermes de wikis ou hôtes et / ou paquets peuvent contenir cette extension même s'ils ne sont pas listés ici. Vérifiez toujours cela avec votre ferme de wikis ou votre hôte ou votre paquet avant de confirmer. |