Difference between revisions of "Template:For loop/doc"
imported>Swpb (→Usage) |
imported>Swpb (→Usage) |
||
| Line 15: | Line 15: | ||
! Group !! Parameter !! Meaning !! Default value | ! Group !! Parameter !! Meaning !! Default value | ||
|- | |- | ||
| − | + | ! scope=row rowspan=3 | Mandatory | |
| + | | '''1 (unnamed)''' || separator to output between calls (may be blank; whitespace is preserved) || | ||
|- | |- | ||
| '''call''' || template to call || | | '''call''' || template to call || | ||
|- | |- | ||
| − | | '''pv''' || name (or number) of the variable parameter of the called template ( | + | | '''pv''' || name (or number) of the variable parameter of the called template (mandatory unless it is unnamed parameter 1 of the called template) || style="text-align: center" | 1 |
|- style="border-top: 3px solid grey;" | |- style="border-top: 3px solid grey;" | ||
| − | + | ! scope=row rowspan=3 | Option 1:<br/>iterator | |
| + | | '''start''' || first value to pass to variable parameter || style="text-align: center" | 1 | ||
|- | |- | ||
| '''stop''' || maximum value for variable parameter || | | '''stop''' || maximum value for variable parameter || | ||
|- | |- | ||
| − | | '''by''' || iteration step size between values passed to variable parameter || 1 | + | | '''by''' || iteration step size between values passed to variable parameter || style="text-align: center" | 1 |
|- style="border-top: 3px solid grey;" | |- style="border-top: 3px solid grey;" | ||
| − | + | ! scope=row rowspan=2 | Option 2:<br/>explicit values | |
| + | | '''(unnamed)''' || | explicit list of variable values, given as separate parameters (whitespace is stripped) || | ||
|- | |- | ||
| − | | '''skipBlanks''' || true to skip empty parameter values || false | + | | '''skipBlanks''' || true to skip empty parameter values || style="text-align: center" | false |
|- style="border-top: 3px solid grey;" | |- style="border-top: 3px solid grey;" | ||
| − | + | ! scope=row rowspan=5 | Other optional<br/>parameters | |
| + | | '''pc[N]n''' || name (or number) of the Nth static parameter of the called template || | ||
|- | |- | ||
| '''pc[N]v''' || value for the Nth static parameter of the called template || | | '''pc[N]v''' || value for the Nth static parameter of the called template || | ||
| Line 39: | Line 43: | ||
| '''postfix''' || static postfix appended to each value passed to the variable parameter || | | '''postfix''' || static postfix appended to each value passed to the variable parameter || | ||
|- | |- | ||
| − | | '''substall''' || false to not substitute the called template when {{tl|for loop}} is substituted || true | + | | '''substall''' || false to not substitute the called template when {{tl|for loop}} is substituted || style="text-align: center" | true |
|} | |} | ||
Revision as of 14:39, 2 October 2019
| This is a documentation subpage for Template:For loop. It contains usage information, categories and other content that is not part of the original template page. |
| This template is used on approximately 53,000 pages and changes may be widely noticed. Test changes in the template's /sandbox or /testcases subpages, or in your own user subpage. Consider discussing changes on the talk page before implementing them.
Transclusion count updated automatically (see documentation). |
| This template uses Lua: |
Template:For loop implements a for loop or a foreach loop.
This template calls a user-specified template (the "called template") multiple times: once for each value in either 1) an iterated sequence or 2) an explicit list. Each value in the sequence or list is passed to the same specified parameter of the called template (the "variable parameter"). Optionally, pre- and postfixes can be attached to the passed values.
In addition to the specified variable parameter, other parameters of the called template ("static parameters") can be given a value which is the same in each iteration.
The first unnamed parameter of this template (the "separator") is output between calls to the called template.
Usage
| Group | Parameter | Meaning | Default value |
|---|---|---|---|
| Mandatory | 1 (unnamed) | separator to output between calls (may be blank; whitespace is preserved) | |
| call | template to call | ||
| pv | name (or number) of the variable parameter of the called template (mandatory unless it is unnamed parameter 1 of the called template) | 1 | |
| Option 1: iterator |
start | first value to pass to variable parameter | 1 |
| stop | maximum value for variable parameter | ||
| by | iteration step size between values passed to variable parameter | 1 | |
| Option 2: explicit values |
(unnamed) | explicit list of variable values, given as separate parameters (whitespace is stripped) | |
| skipBlanks | true to skip empty parameter values | false | |
| Other optional parameters |
pc[N]n | name (or number) of the Nth static parameter of the called template | |
| pc[N]v | value for the Nth static parameter of the called template | ||
| prefix | static prefix prepended to each value passed to the variable parameter | ||
| postfix | static postfix appended to each value passed to the variable parameter | ||
| substall | false to not substitute the called template when {{for loop}} is substituted | true |
Note that either iterator parameters (option 1) or an explicit list of values (option 2) may be used, but not both.
The separator is the first unnamed parameter, allowing it to start and/or end with newlines and spaces. The separator is output between calls to the template named in |call=. It is not output after the last call to that template. The separator parameter is prior to the value list. 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.
If a value in the list contains an equals sign, use {{=}} (see Help:Template). If you do not use {{=}}, the list must use named parameters, at least from that point. If you use named parameters, note that the first value is parameter 2 (e.g. |2=Your1stValue), because parameter 1 is the separator. 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 | Explanation | Result |
|---|---|---|
{{for loop|&|call = spanbox
|pc1n = 1
|pc1v = A
|pc2n = background
|pc2v = yellow
|pv = font size
|postfix = px
|start=10|stop=52|by=8
}}
|
Outputting "&" between calls, call the template "spanbox" with values:
|
Lua error: expandTemplate: template "spanbox" does not exist. |
{{for loop|, |call=1x
|prefix=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 the template "1x" with values "1[NN]", where NN = "00" through "99" (given explicitly), separating the outputs with the string ", " | 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 |
Other examples
{{for loop|-|a|3||c|g|call=3x}} using Template:3x (backlinks edit) 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:For loop. 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. If |substall=no is not specified, then substituting the template will substitute everything, including the call to the template passed in |call=. If it is specified, then the template substitutes into a sequence of calls to the template specified.
Example: Template:Tlsx -> 01sep 02sep 03sep 04sep 05sep 06sep 07, Template:Tlsx -> {{1x|01}}sep {{1x|02}}sep {{1x|03}}sep {{1x|04}}sep {{1x|05}}sep {{1x|06}}sep {{1x|07}}
For full substitution Special:ExpandTemplates can also be used.
See also
- mw:Template:Fe
- m:Template:foreach (backlinks edit)
- m:Template:tblb (backlinks edit)
- Template:for nowiki (backlinks edit)
- Template:item (backlinks edit)
- Template:loop (backlinks edit)
- Template:simple recursion (backlinks edit)
- Help:Parameter default
- Help:Array
- mw:Extension:LoopFunctions