Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Check for unknown parameters/doc: Difference between revisions

→‎Example: alphabetize parameters for sanity, as the script does
m 1 revision imported
Line 1: Line 1:
{{Used in system}}
This module may be appended to a template to check for uses of unknown parameters.
{{Module rating|p}}
{{Lua|Module:If preview|noprotcat=yes}}
 
'''Module:Check for unknown parameters''' is used to check for uses of unknown parameters in a template or module. It may be appended to a template at the end or called directly from a module.


== Usage ==
== Usage ==
=== From a template ===
=== Basic usage ===
To sort entries into a tracking category by parameter, use:
<pre>
* {{mlx|Check for unknown parameters|check|unknown{{=}}<nowiki>[</nowiki>[Category:Some tracking category|_VALUE_]]|arg1|arg2|arg3|argN}}
{{#invoke:check for unknown parameters|check
 
|unknown=[[Category:Some tracking category]]
To sort the entries into a tracking category by parameter with a preview error message, use:
|arg1|arg2|arg3|argN}}
* {{mlx|Check for unknown parameters|check|unknown{{=}}<nowiki>[</nowiki>[Category:Some tracking category|_VALUE_]]|preview{{=}}unknown parameter "_VALUE_"|arg1|arg2|...|argN}}
</pre>
 
or to sort the entries in the tracking category by parameter with a preview error message
For an explicit red error message, use:
<pre>
* {{mlx|Check for unknown parameters|check|unknown{{=}}&lt;span class{{=}}"error">Sorry, I don't recognize _VALUE_&lt;/span>|arg1|arg2|...|argN}}
{{#invoke:check for unknown parameters|check
 
|unknown=[[Category:Some tracking category|_VALUE_]]
To use Lua patterns, use:
|preview=unknown parameter "_VALUE_"
* {{mlx|Check for unknown parameters|check|unknown{{=}}<nowiki>[</nowiki>[Category:Some tracking category|_VALUE_]]|preview{{=}}unknown parameter "_VALUE_"|arg1|arg2|...|argN|regexp1{{=}}header[%d]+|regexp2{{=}}date[1-9]}}
|arg1|arg2|...|argN}}
</pre>
or for an explicit red error message
<pre>
{{#invoke:check for unknown parameters|check
|unknown=<span class="error">Sorry, I don't recognize _VALUE_</span>
|arg1|arg2|...|argN}}
</pre>
Here, <code>arg1</code>, <code>arg2</code>, ..., <code>argN</code>, are the known parameters. Unnamed (positional) parameters can be added too: <code><nowiki>|1|2|argname1|argname2|...</nowiki></code>. Any parameter which is used, but not on this list, will cause the module to return whatever is passed with the <code>unknown</code> parameter.  The <code>_VALUE_</code> keyword, if used, will be changed to the name of the parameter. This is useful for either sorting the entries in a tracking category, or for provide more explicit information.


===From a module===
By default, the module makes no distinction between a defined-but-blank parameter and a non-blank parameter. That is, both unlisted {{para|foo|x}} and {{para|foo}} are reported. To only track non-blank parameters use {{para|ignoreblank|1}}.
To call from a module, use:
<syntaxhighlight lang="lua">
local checkForUnknownParameters = require("Module:Check for unknown parameters")
local result = checkForUnknownParameters._check(validArgs, args)
</syntaxhighlight>


Where the first set of args are the module args below and the second set of args are the parameters that are checked.
By default, the module ignores blank positional parameters. That is, an unlisted {{para|2}} is ignored. To ''include'' blank positional parameters in the tracking use {{para|showblankpositional|1}}.


== Parameters ==
=== Lua patterns ===
* <code>arg1</code>, <code>arg2</code>, ..., <code>argN</code>, are the known parameters.
This module supports [[Extension:Scribunto/Lua reference manual#Patterns|Lua patterns]] which are useful when there are many known parameters which use a systematic pattern.  For example, [[:en:template:infobox3cols]] uses
* Unnamed (positional) parameters can be added too: <code>|1|2|arg1|arg2|...</code>.
<pre>
* [[:mw:Extension:Scribunto/Lua reference manual#Patterns|Lua patterns]] (similar to [[regular expression]]s) usage with parameters is also supported (such as: {{para|regexp1|header[%d]+}}, {{para|regexp2|date[1-9]}}, {{para|regexp3|data[%d]+[abc]?}}). This is useful when there are many known parameters which use a systematic pattern.
| regexp1 = header[%d][%d]*
* {{para|unknown}} – what happens when an uknown parameter is used. Typically use either a tracking category to place pages that use unknown parameters, or an error.
| regexp2 = label[%d][%d]*
* {{para|preview}} – the text to be displayed when in preview mode and an unknown parameter is used.
| regexp3 = data[%d][%d]*[abc]?
* The <code>_VALUE_</code> keyword, if used, will be changed to the name of the parameter. This is useful for either sorting the entries in a tracking category, or for provide more explicit information.
| regexp4 = class[%d][%d]*[abc]?
* {{para|ignoreblank|1}} – by default, the module makes no distinction between a defined-but-blank parameter and a non-blank parameter. That is, both unlisted {{Para|foo|x}} and {{Para|foo}} are reported. To only track non-blank parameters use {{para|ignoreblank|1}}.
| regexp5 = rowclass[%d][%d]*
* {{para|showblankpositional|1}} – by default, the module ignores blank positional parameters. That is, an unlisted {{para|2}} is ignored. To {{em|include}} blank positional parameters in the tracking use {{para|showblankpositional|1}}.
| regexp6 = rowstyle[%d][%d]*
| regexp7 = rowcellstyle[%d][%d]*
</pre>
to match all parameters of the form <code>headerNUM</code>, <code>labelNUM</code>, <code>dataNUM</code>, <code>dataNUMa</code>, <code>dataNUMb</code>, <code>dataNUMc</code>, ..., <code>rowcellstyleNUM</code>, where NUM is a string of digits.


== Example ==
== Example ==
<syntaxhighlight lang="wikitext">
<pre>
{{Infobox
{{Infobox
| above = {{{name|}}}
| above = {{{name|}}}
Line 54: Line 56:
   end infobox, start tracking
   end infobox, start tracking
-->{{#invoke:Check for unknown parameters|check
-->{{#invoke:Check for unknown parameters|check
| unknown = {{Main other|[[Category:Some tracking category|_VALUE_]]}}
| unknown = {{main other|[[Category:Some tracking category|_VALUE_]]}}
| preview = unknown parameter "_VALUE_" | height | name | website | weight
| preview = unknown parameter "_VALUE_"
| name
| height | weight
| website
}}
}}
</syntaxhighlight>
</pre>
 
==Call from within Lua code==
See the end of [[Module:Rugby box]] for a simple example or [[Module:Infobox3cols]] or [[Module:Flag]] for more complicated examples.
 
==See also==
* {{Clc|Unknown parameters}} (category page can have header {{tl|Unknown parameters category}})
* [[Module:Params]] – for complex operations involving parameters
* [[Template:Checks for unknown parameters]] – adds documentation to templates using this module
* [[Module:Check for deprecated parameters]] – similar module that checks for deprecated parameters
* [[Module:Check for clobbered parameters]] – module that checks for conflicting parameters
* [[Module:TemplatePar]] – similar function (originally from dewiki)
* [[Template:Parameters]] and [[Module:Parameters]] – generates a list of parameter names for a given template
* [[Project:TemplateData]] based template parameter validation
* [[Module:Parameter validation]] checks a lot more
* [[User:Bamyers99/TemplateParametersTool]] - A tool for checking usage of template parameters
 
<includeonly>{{Sandbox other||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Modules that add a tracking category]]
 
}}</includeonly>

Revision as of 04:00, 30 June 2024

This module may be appended to a template to check for uses of unknown parameters.

Usage

Basic usage

{{#invoke:check for unknown parameters|check
|unknown=[[Category:Some tracking category]]
|arg1|arg2|arg3|argN}}

or to sort the entries in the tracking category by parameter with a preview error message

{{#invoke:check for unknown parameters|check
|unknown=[[Category:Some tracking category|_VALUE_]]
|preview=unknown parameter "_VALUE_"
|arg1|arg2|...|argN}}

or for an explicit red error message

{{#invoke:check for unknown parameters|check
|unknown=<span class="error">Sorry, I don't recognize _VALUE_</span>
|arg1|arg2|...|argN}}

Here, arg1, arg2, ..., argN, are the known parameters. Unnamed (positional) parameters can be added too: |1|2|argname1|argname2|.... Any parameter which is used, but not on this list, will cause the module to return whatever is passed with the unknown parameter. The _VALUE_ keyword, if used, will be changed to the name of the parameter. This is useful for either sorting the entries in a tracking category, or for provide more explicit information.

By default, the module makes no distinction between a defined-but-blank parameter and a non-blank parameter. That is, both unlisted |foo=x and |foo= are reported. To only track non-blank parameters use |ignoreblank=1.

By default, the module ignores blank positional parameters. That is, an unlisted |2= is ignored. To include blank positional parameters in the tracking use |showblankpositional=1.

Lua patterns

This module supports Lua patterns which are useful when there are many known parameters which use a systematic pattern. For example, en:template:infobox3cols uses

| regexp1 = header[%d][%d]*
| regexp2 = label[%d][%d]*
| regexp3 = data[%d][%d]*[abc]?
| regexp4 = class[%d][%d]*[abc]?
| regexp5 = rowclass[%d][%d]*
| regexp6 = rowstyle[%d][%d]*
| regexp7 = rowcellstyle[%d][%d]*

to match all parameters of the form headerNUM, labelNUM, dataNUM, dataNUMa, dataNUMb, dataNUMc, ..., rowcellstyleNUM, where NUM is a string of digits.

Example

{{Infobox
| above = {{{name|}}}

| label1 = Height
| data1 = {{{height|}}}

| label2 = Weight
| data2 = {{{weight|}}}

| label3 = Website
| data3 = {{{website|}}}
}}<!-- 
  end infobox, start tracking
-->{{#invoke:Check for unknown parameters|check
| unknown = {{main other|[[Category:Some tracking category|_VALUE_]]}}
| preview = unknown parameter "_VALUE_"
| name
| height | weight
| website
}}