Aller au contenu

Modèle:For loop/Documentation

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 24 décembre 2016 à 23:50 et modifiée en dernier par Cantons-de-l'Est (discuter | contributions) (Usage). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

Modèle:For loop sert à créer une boucle foreach. Voyez les exemples pour en comprendre le fonctionnement.


Usage

{{for loop|<!-- séparateur, les espaces sont conservées -->|
    call    = modèle appelé
  | pc1n    = nom du 1er paramètre invariable
  | pc1v    = valeur du 1re paramètre invariable
  | pc2n    = nom du 2e paramètre invariable
  | pc2v    = valeur du 2e paramètre invariable
  | pc3n    = nom du 3e paramètre invariable
  | pc3v    = valeur du 3e paramètre invariable
<!-- On peut ajouter des paramètres invariables -->
  | pv      = nom du paramètre à donner au modèle auquel
                est assigné la valeur de la variable
  | prefix  = préfixe ajouté à chaque valeur
  | postfix = suffixe ajouté à chaque valeur
  | liste de valeurs séparées par "|" (les espaces sont filtrées)
     (une valeur vide est traitée, elle n'est pas ignorée)
}}

Le séparateur est le premier paramètre anonyme, qui sert à commencer et terminer avec des espaces et des retours de ligne. Le séparateur est copié entre les appels au modèle passé en paramètre à |call=. Il n'est pas copié après la dernière itération. Le paramètre séparateur est prioritaire sur la liste des valeurs. Si une valeur de la liste comprend « = », utiliser {{=}}. S'il n'y plus de « = », alors la liste doit comprendre des paramètres nommés à partir de ce moment. If you use named parameters, note that the first value is parameter 2 (e.g. |2=Your1stValue), because parameter 1 is the separator. If the separator contains an equals sign, {{=}} should also be used. Alternately, the separator can similarly be prefixed with "1=", but in that case it cannot contain newlines and spaces at the start and end. Also, if you use named parameters, you must not skip any numbers. The loop will terminate after the first absent numbered parameter. (Note that parameters can be blank but not absent; blank parameters are read as normal.)

Examples

Code Result
1{{for loop|, 1|00|01|02|03|04|05|06|07|08|09
|10|11|12|13|14|15|16|17|18|19
|20|21|22|23|24|25|26|27|28|29
|30|31|32|33|34|35|36|37|38|39
|40|41|42|43|44|45|46|47|48|49
|50|51|52|53|54|55|56|57|58|59
|60|61|62|63|64|65|66|67|68|69
|70|71|72|73|74|75|76|77|78|79
|80|81|82|83|84|85|86|87|88|89
|90|91|92|93|94|95|96|97|98|99
  |call=1x
}}
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199

Note that the last part of the separator is used as a prefix; the first prefix needs to be put separately.


{{for loop|-|a|3||c|g|call=3x}} using w:template:3x ( discussion modifier historique liens ) gives

aaa-333--ccc-ggg

{{for loop|

|a|3||c|g|call=3x}} gives

aaa

333


ccc

ggg

{|class="wikitable sortable"
|-
!Test
|-
| {{for loop|
{{!}}-
{{!}} |a|b|c|d|e|call=3x}}
|}

gives:

Test
aaa
bbb
ccc
ddd
eee
{{for loop| |01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19
|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39
|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59
|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79
|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99
|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119
|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139
|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|call=1x}}

gives:

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154

begin->{{for loop|{{=}} |01|02|03|04|05|06|07|08|09|10
|11{{=}}{{=}}{{=}}|12|13|14|15|16|17|18|19|call=1x}}<-end

gives:

begin->01= 02= 03= 04= 05= 06= 07= 08= 09= 10= 11==== 12= 13= 14= 15= 16= 17= 18= 19<-end

Legacy code

This template is currently in its third incarnation. It now uses the Lua code at Module:ForLoop. It was ported to Lua from ParserFunctions. There was also a previous version with a named "sep" parameter to specify the separator value. The template was originally based on m:Template:For. The template name was changed because there was already a Template:For on Wikipedia.

The old versions were limited to 150 variable values and four fixed parameters. There are no such limits in the current version. Also, in the first version the "sep" parameter didn't allow whitespace in the separator value. This was fixed with the second version and was retained in the current version.

Substitution

The current Lua-based template supports substitution of the whole template call. To substitute everything, use Modèle:Tls.

For full substitution Special:ExpandTemplates can also be used.

Converting legacy template invocations

If you need to convert a template invocation that was written for the original version of (tl), do the following:

  • replace pc1=X=Y with pc1n=X | pc1v=Y, etc.
  • use an unnamed parameter for the separator; if empty, just enter an extra "|"

No conversion is necessary for invocations written for the second version of the template, unless they use fine-grained substitution. If you need fine-grained substitution you should use Modèle:Tlu instead of (tl). — Mr. Stradivarius ♪ talk ♪ 09:44, 19 July 2013 (UTC)

See also