Module:ArgRest/doc
![]() | This is a documentation subpage for Module:ArgRest. It may contain usage information, categories and other content that is not part of the original module page. |
This is an auxiliary module intended to be invoked by templates; it permits templates to support an infinite number of parameters by repeating a block of wikitext multiple times. This module works with named as well as unnamed parameters, can handle multiple named parameters at the same time, and supports defaults,
Usage
If you want to use this module in your template: take the block of wikitext that you want to be repeated for infinite parameters, wrap it in <nowiki>
, and pass that as the module's first parameter; then, choose a "base" parameter such that the module will stop repeating the wikitext if the parameter wasn't defined by the user, and pass its name as the second parameter. Example usage:
...{{#invoke:ArgRest|main|<nowiki>...{{{named-2-a}}}...{{{named-2-b|default}}}...</nowiki>|named-2-a}}
Afterwards, the module will "fill in" parameters with larger numbers than the ones originally given; i.e. in the above example, the module would allow the containing template to receive parameters {{{named-3-a}}}
, {{{named-3-b}}}
, {{{named-4-a}}}
, etc.
Note: You MUST wrap the first parameter in <nowiki>
; otherwise, Wikipedia processes all wikitext and HTML syntax before the module receives it, which makes it impossible to use pattern matching due to the resulting pollution. If you do, the module will give this error:
- Lua error in Module:ArgRest at line 9: <nowiki> tags missing from first parameter.
Example
If the (imaginary) template {{PlusMinusLoop}} has the following code:
{{{plus1}}} - {{{minus1}}}{{#invoke:ArgRest|main| + {{plus2}}} - {{{minus2|5}}}|plus2}}
then
{{PlusMinusLoop|plus1{{{=}}}0|minus1{{{=}}}1|plus2{{{=}}}1|minus2{{{=}}}2|plus3{{{=}}}3|plus5{{{=}}}21}}
will yield 0 - 1 + 1 - 2 + 3 - 5
. The - 5
is present because |minus3
defaulted to 5, but 21
never appears because, although |plus5
is defined, |plus4
isn't, so the module halts there.
Limitations
This module currently suffers from a few limitations:
- It cannot handle aliases;
{{{parameter1| {{{alias1|default}}} }}}
will fail to be recognized by the module as a parameter. - It cannot handle parameters with names that contain two or more distinct numbers; the module's pattern matching is ignorant of this possibility, and will treat something like
{{{named-3-1}}
as equivalent to{{{named-3-3}}}
. - It cannot handle multiple parameters that have different numbers; similarly to the above example, all numbers are converted by the module into the same number, so
...{{{1}}}...{{{2}}}...
won't work.