Module:Unsubst/doc: Difference between revisions

From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content added Content deleted
(Remove now-unused $N from doc, except for a mention that it is no longer needed and may be removed from templates.)
m (20 revisions imported)
 
(26 intermediate revisions by 19 users not shown)
Line 1: Line 1:
<!-- Categories and interwikis go at the bottom of this page. -->
<!-- Categories where indicated at the bottom of this page, please. -->
{{High-risk| 3841439 |all-pages = yes}}
{{Module rating|protected}}


Helper module to facilitate a substituted template transform into a template transclusion.
Helper module to facilitate a substituted template transform into a template transclusion.


Maintenance templates, such as {{tl|Citation needed}} or {{tl|Refimprove}}, should never be substituted. A trick to avoid that is to make a template substitute to its transcluded form.
Maintenance templates, such as {{tl|Citation needed}} or {{tl|Refimprove}}, should never be substituted. A trick to avoid that is to make a template substitute to its transcluded form.

Infoboxes should use [[Module:Unsubst-infobox]], as should any other templates with parameters listed in block format by default.


=== Usage ===
=== Usage ===
Line 9: Line 13:
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>
{{ {{{|safesubst:}}}#invoke:Unsubst||$B=
{{SAFESUBST:<noinclude />#invoke:Unsubst||$B=


[ ... existing template code ... ]
[ ... existing template code ... ]
Line 16: Line 20:
</pre>
</pre>


The wikitext to display when not substed must be given as "$B". A parameter "$N" may also be seen in some templates; this was required in an older version of the module, but is no longer necessary and may be removed.
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 <code>__DATE__</code>, 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>{{))}}</code>.
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.


==== Advanced ====
Some templates have a <nowiki><noinclude></nowiki> but no matching <nowiki></noinclude></nowiki> at the end of the template. In such cases the missing <nowiki></noinclude></nowiki> must be added before the ending <code><nowiki>}}</nowiki></code>.

<pre>
{{SAFESUBST:<noinclude />#invoke:Unsubst||$params=[ parameters ]|$aliases=[ aliases ]|$flags=[ flags ]|$B=

[ ... existing template code ... ]

}}
</pre>

Due to Lua limitations, parameters are normally ordered randomly when the template is substituted. {{para|$params}} can be used in #invoke:Unsubst to list template parameters in order, comma-separated (e.g. <code>egg,bacon,sausage,cheese,spam</code>). Numbered parameters should be before others in the list. Any remaining parameters are tacked onto the end of the generated invocation.

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</code>, and each of those pairs should be comma-separated (e.g. <code>œuf>egg,melt>cheese</code>). Note that this parameter can function with or without {{para|$params}}.

Parameter {{para|$flags}} can be used to modify other facets of the module's behaviour; entries are comma-separated. Valid flags are <code>override</code> (allows parameters in the #invoke: to take precedence over parameters in the original template invocation); <code>keep-whitespace</code> (prevents whitespace from being trimmed from unnamed parameters); and <code>remove-empty</code> (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 <code><nowiki>SAFESUBST:<noinclude /></nowiki></code>).

Parameter {{para|$template-name}} will override the subst'd templates name with the template name assigned to this parameter.


=== Example ===
=== Example ===
Consider a template Template:Example containing the following code:
Consider a template Template:Example containing the following code:
<pre>
<pre>
{{ {{{|safesubst:}}}#invoke:Unsubst||foo=bar |date=__DATE__ |$B=
{{SAFESUBST:<noinclude />#invoke:Unsubst||foo=bar |date=__DATE__ |$B=


[ ... Template code goes here ... ]
[ ... Template code goes here ... ]
Line 35: Line 57:
! Original !! Result
! Original !! Result
|-
|-
| <nowiki>{{subst:example}}</nowiki> || <nowiki>{{Example|foo=bar|date=</nowiki>{{#time:F Y}}}}
| {{tlsc|example}} || {{tlc|Example|foo=bar|date{{=}}{{#time:F Y}}}}
|-
|-
| <nowiki>{{subst:example|foo=X}}</nowiki> || <nowiki>{{Example|foo=X|date=</nowiki>{{#time:F Y}}}}
| {{tlsc|example|foo{{=}}X}} || {{tlc|Example|foo{{=}}X|date{{=}}{{#time:F Y}}}}
|-
|-
| <nowiki>{{subst:example|baz=X}}</nowiki> || <nowiki>{{Example|foo=bar|baz=X|date=</nowiki>{{#time:F Y}}}}
| {{tlsc|example|baz{{=}}X}} || {{tlc|Example|foo=bar|baz{{=}}X|date{{=}}{{#time:F Y}}}}
|-
|-
| <nowiki>{{subst:example|date=January 2001}}</nowiki> || <nowiki>{{Example|foo=bar|date=January 2001}}</nowiki>
| {{tlsc|example|date{{=}}January 2001}} || {{tlc|Example|foo{{=}}bar|date{{=}}January 2001}}
|}
|}


<includeonly>{{sandbox other||

| <!-- Categories below this line, please; interwikis at Wikidata -->
<includeonly>
[[Category:Wikipedia metatemplates]]
<!-- Categories and interwikis go here: -->
[[Category:Wikipedia metatemplates|{{PAGENAME}}]]
[[Category:Modules that add a tracking category]]
}}</includeonly>

</includeonly>

Latest revision as of 17:28, January 24, 2022


Helper module to facilitate a substituted template transform into a template transclusion.

Maintenance templates, such as {{Citation needed}} or {{Refimprove}}, should never be substituted. A trick to avoid that is to make a template substitute to its transcluded form.

Infoboxes should use Module:Unsubst-infobox, as should any other templates with parameters listed in block format by default.

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-separated (e.g. egg,bacon,sausage,cheese,spam). Numbered parameters should be before others in the list. 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-separated (e.g. œuf>egg,melt>cheese). Note that this parameter can function with or without |$params=.

Parameter |$flags= can be used to modify other facets of the module's behaviour; entries are comma-separated. 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 />).

Parameter |$template-name= will override the subst'd templates name with the template name assigned to this parameter.

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
Template:Tlsc {{Example|date=May 2024}}
Template:Tlsc {{Example|foo=X|date=May 2024}}
Template:Tlsc {{Example|baz=X|date=May 2024}}
Template:Tlsc {{Example|foo=bar|date=January 2001}}