Extension:LoopFunctions/fr
LoopFunctions État de la version : stable |
|
---|---|
Implémentation | Fonction d'analyseur |
Description | Permet de limiter le nombre de boucles dans le wikicode |
Auteur(s) | |
Dernière version | 2020-03-26 |
MediaWiki | 1.35+ |
PHP | 5.3+ |
Modifie la base de données |
Non |
Licence | Aucune licence spécifiée |
Téléchargement | |
Téléchargements trimestriels | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
Utilisé par les wikis publics | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
Traduire l’extension LoopFunctions sur translatewiki.net si elle y est disponible |
L'extension LoopFunctions permet une fonctionnalité de boucle limitée dans le wikicode, où une variable ($n$
par défaut) est remplacée par le numéro courant d'itération de la boucle.
La variable peut être utilisée dans un texte simple ou un lien.
Le résultat de l'ensemble de la boucle peut également être inséré dans une expression, par exemple pour calculer une factorielle.
Cependant, le corps de boucle est évalué avant de remplacer la variable, de sorte qu'un calcul à l'intérieur de ce corps de boucle en fonction de la valeur de la variable, n'est pas possible.
Fonctions
#for
{{#for: n | text }}
Où n est le nombre d'itérations et le texte est le texte à répéter.
{{#for: n | text | paramètre de remplacement }}
Si, après l'expansion des modèles, des fonctions de parser et des variables, le texte contient le texte $n$
ou ce qui est défini par le troisième paramètre, il sera remplacé par l'itération actuelle, à partir de 1.
File:OOjs UI icon notice-warning.svg | Attention aux espaces, car le code génère stringstringstring
|
Utilisation dans les modèles
En appelant le modèle {{foo | n=4 | list1=a | list3=c | list4=d }}
, si le modèle foo contient: {{#for: {{{n}}} | {{{list$n$}}}<br/>}}
, cela donnera le wikicode : a<br/>b<br/>c<br/>d<br/>
Utilisation pour le calcul
Total des carrés de 1^2 à 5^2 : {{#expr:{{#for:5|+$n$*$n$}}}}
donne 55
Factorielle 6 (6!): {{#expr:1{{#for:6|*$n$}}}}
donne 720
{{#expr:{{for|call=plus square|pv=1|1|2|3|4|5}}}}
donne 55; pour la liste des carrés il semble que nous puissions utiliser seulement for
et non #for
.Limitation
Dans le corps de boucle, les modèles, les fonctions d'analyse et les variables sont expansées avant de remplacer la variable d'index par ses valeurs, à savoir :
- Paramètre d'une fonction d'analyse basé sur la variable d'index
-
- Le code
{{#for:3|{{lc:Ab$n$}}}}
donneab1ab2ab3
; le résultat est dans ce cas le même que lorsque la répétition a été faite en premier, puis l'évaluation de chaque élément. - Le code
{{#for:3|{{uc:Ab$n$}}}}
donneAB$N$AB$N$AB$N$
; le résultat n'est pas le même dans ce cas, parce que$n$
est changé en$N$
, et donc il n'est pas traité comme une variable d'index. - L'application de #expr à une expression contenant la variable d'index ne fonctionne pas : l'expansion de #expr dans par exemple
{{#expr:2*$n$}}
donne le texte qui sera répété :Expression error: Unrecognised punctuation character "$"
- Le code
- Nom du modèle fonction de la variable d'index
-
- Le code
{{#for:3|{{a$n$}}}}
donne :- [[Template:a1]] [[Template:a2]] [[Template:a3]] si le modèle avec le nom littéral
Template:a$n$
n'existe pas. Le corps de boucle est évalué comme [[Template:a$n$]], après quoi la fonction de la boucle le répète en remplaçant$n$
. - le résultat de
{{a*$n$}}{{a*$n$}}{{a*$n$}}
si le modèle avec le nom littéralTemplate:a$n$
existe. C'est-à-dire que le contenu est répété inchangé.
- [[Template:a1]] [[Template:a2]] [[Template:a3]] si le modèle avec le nom littéral
- Le code
- Limitation combinée avec Extension:Variables
- Dans la boucle, une variable peut recevoir une valeur fonction de l'indice de boucle et la valeur de cette variable peut être récupérée.
- Cependant, il semble que dans la boucle, la variable ne peut pas recevoir une nouvelle valeur dépendant de sa propre valeur courante. Au lieu de cela, sa valeur à l'entrée de la boucle, est prise.
#foreach
Ne fonctionne que s'il est utilisé par un modèle.
{{#foreach: mask | text }}
{{#foreach: mask | text | paramètre de remplacement }}
mask est une chaîne au format prefix$n$suffix où $n$
peut être modifié via le paramètre de substitution.
La fonction #foreach, appelée à l'intérieur d'un modèle, produira le texte pour $n$ = 1, 2, 3,... tant que prefix$n$suffix est un paramètre de modèle défini dans l'appel du modèle.
Si le texte contient le texte $n$
ou ce qui est défini par le troisième paramètre, celui-ci sera remplacé par la valeur courante de $n$
.
Il semble que l'ensemble de l'appel à #foreach soit ignoré si le corps de boucle contient un appel de modèle ou un appel de fonction d'analyse syntaxique, ou si le corps de boucle ne contient pas {{{$n$}}}.
Exemple
L'appel du modèle {{foo | foo2_bar=a | foo1_bar=b | a=12 | 6 | foo4_bar=c }}
en utilisant le modèle foo, contenant {{#foreach: foo$n$_bar | foo$n$_bar = {{{foo$n$_bar}}}<br/>}}
donnera le wikicode expansé foo1_bar = b<br/>foo2_bar = a<br/>
et donc la sortie :
- foo1_bar = b
- foo2_bar = a
Étant donné que foo3_bar
n'est pas défini, foo4_bar
n'est également pas répertorié; ni a et 1
, les noms des paramètres qui existent mais qui ne correspondent pas au modèle.
Utilisation sans préfixe ou suffixe
Le code {{showpars | abc | de | w=fgh | ijk}}
appelle Template:Showpars contenant {{#foreach: $n$ | $n$ = {{{$n$}}}<br/>}}
et donne :
- 1 = abc
- 2 = de
- 3 = ijk
Contenu d'un modèle qui lie les pages données par les valeurs des paramètres non nommés :
{{#foreach:$n$|[[{{{$n$}}}]]<nowiki> </nowiki>}}
Installation
- <translate> [[<tvar name=2>Special:ExtensionDistributor/LoopFunctions/fr</tvar>|Download]] and move the extracted <tvar name=name>
LoopFunctions/fr
</tvar> folder to your <tvar name=ext>extensions/
</tvar> directory.</translate>
<translate> Developers and code contributors should install the extension [[<tvar name=git>Special:MyLanguage/Download from Git</tvar>|from Git]] instead, using:</translate>cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LoopFunctions%2Ffr - <translate> Add the following code at the bottom of your <tvar name=1>LocalSettings.php </tvar> file:</translate>
wfLoadExtension( 'LoopFunctions/fr' );
- File:OOjs UI icon check-constructive.svg <translate> Done</translate> – <translate> Navigate to <tvar name=special>Special:Version</tvar> on your wiki to verify that the extension is successfully installed.</translate>