Module:Unsubst/doc: Difference between revisions
Created page with "<!-- Categories where indicated at the bottom of this page, please. --> {{High-risk| 3841439 |all-pages = yes}} {{Module rating|protected}} Helper module to facilitate a subs..." |
Edit module documentation to remove redlinks Tag: 2017 source edit |
||
Line 1: | Line 1: | ||
<!-- | {{Documentation subpage}}<!-- Please place category links where indicated at the bottom of this page. Thank you. --> | ||
This is a helper module to facilitate a substituted template's transformation into a normal template transclusion. | |||
Maintenance templates, such as {{Template link general|plaincode=on|Citation needed}} or {{Template link general|plaincode=on|More citations needed}}, should never be substituted. A trick to avoid that is to make a template substitute to its transcluded form. | |||
Maintenance templates, such as {{ | |||
== Usage == | |||
To turn a template into a self-substituting template, wrap the existing template code with: | To turn a template into a self-substituting template, wrap the existing template code with: | ||
<pre> | <pre style="margin-left: 3em; max-width: 33vw; overflow: auto;"> | ||
{{SAFESUBST:<noinclude />#invoke:Unsubst||$B= | {{SAFESUBST:<noinclude />#invoke:Unsubst||$B= | ||
[ … existing template code … ] | |||
}} | }} | ||
</pre> | </pre> | ||
The wikitext to display when not substed must be given as | The wikitext to display when not substed must be given as {{Code|$B}}. All other parameters passed to the {{Code|#invoke}} will be copied to the generated template invocation as default values. If the value of any of these default parameters is {{Code|__DATE__}}, that value in the generated template invocation will be the current month and year. | ||
Some templates have a {{Tag|noinclude|o}} but no matching {{Tag|noinclude|c}} at the end of the template. In such cases, the missing {{Tag|noinclude|c}} must be added before the ending {{Code|}}}}. | |||
<pre> | === Advanced === | ||
<pre style="margin-left: 3em; max-width: 60vw; overflow: auto;"> | |||
{{SAFESUBST:<noinclude />#invoke:Unsubst||$params=[ parameters ]|$aliases=[ aliases ]|$flags=[ flags ]|$B= | {{SAFESUBST:<noinclude />#invoke:Unsubst||$params=[ parameters ]|$aliases=[ aliases ]|$flags=[ flags ]|$B= | ||
[ … existing template code … ] | |||
}} | }} | ||
</pre> | </pre> | ||
Due to Lua limitations, parameters are normally ordered randomly when the template is substituted. {{ | Due to Lua limitations, parameters are normally ordered randomly when the template is substituted. {{Para|$params}} can be used in {{Code|#invoke:Unsubst}} to list template parameters in order, comma-delimited (e.g. {{Code|egg,bacon,sausage,cheese,spam}}). Numbered parameters should be before others in the list, then any remaining parameters are tacked onto the end of the generated invocation. | ||
Parameter aliases can be listed in {{ | Parameter aliases can be listed in {{Para|$aliases}} (and shouldn't be listed in {{Para|$params}}), and will be replaced automatically. Each alias and its replacement should be formatted as {{Code|alias>replacement}}, and each of those pairs should be comma-delimited as well (e.g. {{Code|œuf>egg,melt>cheese}}). Note that this parameter can function with or without {{Para|$params}}. | ||
The {{Para|$flags}} parameter can be used to modify other facets of the module's behaviour, and again, entries are comma-delimited. Valid flags are {{Code|override}} (allows parameters in the {{Code|#invoke:}} to take precedence over parameters in the original template invocation); {{Code|keep-whitespace}} (prevents whitespace from being trimmed from unnamed parameters) and {{Code|remove-empty}} (removes empty parameters). | |||
These parameters can be manipulated using parser functions to provide more complicated options (note that in the parameters any parser function | These parameters can be manipulated using parser functions to provide more complicated options (note that in the parameters, any parser function or template or module invocation should also have {{Code|<nowiki>SAFESUBST:<noinclude /></nowiki>}}). | ||
== Example == | |||
Consider a template Template:Example containing the following code: | Consider a template {{Kbd|Template:Example}} containing the following code: | ||
<pre> | <pre style="max-width: 38.4vw; overflow: auto;"> | ||
{{SAFESUBST:<noinclude />#invoke:Unsubst||foo=bar |date=__DATE__ |$B= | {{SAFESUBST:<noinclude />#invoke:Unsubst||foo=bar |date=__DATE__ |$B= | ||
[ … Template code goes here … ] | |||
}} | }} | ||
</pre> | </pre> | ||
{| class="wikitable" | {| class="wikitable" style="min-width: 40vw; text-align: center;" | ||
! Original !! Result | ! Original !! Result | ||
|- | |- | ||
| {{ | | {{Tlsc|example}} || {{Template link general|code=on|nolink=on|Example|foo=bar|date{{=}}{{#time:F Y}}}} | ||
|- | |- | ||
| {{ | | {{Tlsc|example|foo{{=}}X}} || {{Template link general|code=on|nolink=on|Example|foo{{=}}X|date{{=}}{{#time:F Y}}}} | ||
|- | |- | ||
| {{ | | {{Tlsc|example|baz{{=}}X}} || {{Template link general|code=on|nolink=on|Example|foo=bar|baz{{=}}X|date{{=}}{{#time:F Y}}}} | ||
|- | |- | ||
| {{ | | {{Tlsc|example|date{{=}}January 2001}} || {{Template link general|code=on|nolink=on|Example|foo{{=}}bar|date{{=}}January 2001}} | ||
|} | |} | ||
<includeonly>{{ | <includeonly>{{Sandbox other|||<!-- Please place category links below this line. Thank you. --> | ||
| <!-- | [[Category:Metatemplates]] | ||
[[Category: | |||
[[Category:Modules that add a tracking category]] | [[Category:Modules that add a tracking category]] | ||
}}</includeonly> | }}</includeonly> |
Latest revision as of 21:11, 23 November 2024
This is a documentation subpage for Module:Unsubst. It may contain usage information, categories and other content that is not part of the original module page. |
This is a helper module to facilitate a substituted template's transformation into a normal template transclusion.
Maintenance templates, such as {{Citation needed}}
or {{More citations needed}}
, should never be substituted. A trick to avoid that is to make a template substitute to its transcluded form.
Usage
To turn a template into a self-substituting template, wrap the existing template code with:
{{SAFESUBST:<noinclude />#invoke:Unsubst||$B= [ … existing template code … ] }}
The wikitext to display when not substed must be given as $B
. All other parameters passed to the #invoke
will be copied to the generated template invocation as default values. If the value of any of these default parameters is __DATE__
, that value in the generated template invocation will be the current month and year.
Some templates have a <noinclude>
but no matching </noinclude>
at the end of the template. In such cases, the missing </noinclude>
must be added before the ending }}
.
Advanced
{{SAFESUBST:<noinclude />#invoke:Unsubst||$params=[ parameters ]|$aliases=[ aliases ]|$flags=[ flags ]|$B= [ … existing template code … ] }}
Due to Lua limitations, parameters are normally ordered randomly when the template is substituted. |$params=
can be used in #invoke:Unsubst
to list template parameters in order, comma-delimited (e.g. egg,bacon,sausage,cheese,spam
). Numbered parameters should be before others in the list, then any remaining parameters are tacked onto the end of the generated invocation.
Parameter aliases can be listed in |$aliases=
(and shouldn't be listed in |$params=
), and will be replaced automatically. Each alias and its replacement should be formatted as alias>replacement
, and each of those pairs should be comma-delimited as well (e.g. œuf>egg,melt>cheese
). Note that this parameter can function with or without |$params=
.
The |$flags=
parameter can be used to modify other facets of the module's behaviour, and again, entries are comma-delimited. Valid flags are override
(allows parameters in the #invoke:
to take precedence over parameters in the original template invocation); keep-whitespace
(prevents whitespace from being trimmed from unnamed parameters) and remove-empty
(removes empty parameters).
These parameters can be manipulated using parser functions to provide more complicated options (note that in the parameters, any parser function or template or module invocation should also have SAFESUBST:<noinclude />
).
Example
Consider a template Template:Example containing the following code:
{{SAFESUBST:<noinclude />#invoke:Unsubst||foo=bar |date=__DATE__ |$B= [ … Template code goes here … ] }}
Original | Result |
---|---|
{{subst:example}} |
{{Example|date=November 2024}}
|
{{subst:example|foo=X}} |
{{Example|foo=X|date=November 2024}}
|
{{subst:example|baz=X}} |
{{Example|baz=X|date=November 2024}}
|
{{subst:example|date=January 2001}} |
{{Example|foo=bar|date=January 2001}}
|