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

Template:Template demo: Difference between revisions

Template page
(Added (incomplete) support for example captions)
mNo edit summary
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
<includeonly>{{#vardefine: i | 1 }}{{#switch:{{{style|table}}}
<includeonly>{{#lvardef: i | 1 }}{{#switch:{{{style|table}}}
| table = <table class="wikitable">
| table = <table class="wikitable">
<tr>
<tr>
<!-- TODO: Improve the logic for determining if the table should have a caption column -->
{{#if: {{{caption 1|}}}|<th>Example</th>}}
<th>Markup</th>
<th>Markup</th>
<th>Renders as</th>
<th>Renders as</th>
</tr>
</tr>
{{#while:
{{#while:
| {{{{{#var: i }} |}}}
| {{{{{#lvar: i }} |}}}
| <tr><td>{{Demo|sep=</td><td>|nocat=yes|tag=pre|style=margin:0px;border:0px;|{{trim|{{{ {{#var: i}} }}}}}}}</td></tr>
| <tr>
{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
{{#if:{{{caption {{#lvar: i }}|}}}|<th>{{{caption {{#lvar: i }}|}}}</th>}}
<td>{{Demo|sep=</td><td>|nocat=yes|tag=pre|style=margin:0px;border:0px;|{{trim|{{{ {{#lvar: i}} }}}}}}}</td>
</tr>
{{#lvardef: i | {{#expr: {{#lvar: i }} + 1 }} }}
}}</table>
}}</table>
| list = {{#while:
| list = {{#while:
| {{{{{#var: i }} |}}}
| {{{{{#lvar: i }} |}}}
| <div class="bg3wiki-tooltip-box>{{#if:{{{caption {{#var: i}}|}}}|{{{caption {{#var: i}}|}}}<br>}}'''Markup'''{{Demo|sep='''Renders as<br>'''|nocat=yes|style=margin-top:0px;|tag=pre|{{trim|{{{ {{#var: i}} }}}}}}}</div>
| <div class="bg3wiki-tooltip-box>{{#if:{{{caption {{#lvar: i}}|}}}|<p>{{{caption {{#lvar: i}}|}}}</p>}}'''Markup'''{{Demo|sep='''Renders as<br>'''|nocat=yes|style=margin-top:0px;|tag=pre|{{trim|{{{ {{#lvar: i}} }}}}}}}</div>
{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
{{#lvardef: i | {{#expr: {{#lvar: i }} + 1 }} }}
}}
}}
| #default = Unknown style option <code>{{{style|}}}</code>. Expected <code>table</code> (default) or <code>list</code>.
 
| tabbed | tab = {{#tag: tabber | {{#while:
| {{{{{#lvar: i }} |}}}
| {{!}}-{{!}} {{{ caption {{#lvar: i}} | Example {{#lvar: i}} }}} = '''Markup'''{{Demo|sep='''Renders as<br>'''|nocat=yes|style=margin-top:0px;|tag=pre|{{trim|{{{ {{#lvar: i}} }}}}}}}
{{#lvardef: i | {{#expr: {{#lvar: i }} + 1 }} }}
}}}}
 
| #default = Unknown style option <code>{{{style|}}}</code>. Expected <code>table</code> (default), <code>list</code>, or <code>tabbed</code>.
}}</includeonly><noinclude>{{documentation|content=
}}</includeonly><noinclude>{{documentation|content=
This template is designed to easily demo template usage and is intended for use within template documentation pages. It lets you display a set of template examples with the markup and rendered output displayed side-by-side.
This template is designed to easily demo template usage and is intended for use within template documentation pages. It lets you display a set of template examples with the markup and rendered output displayed side-by-side.


== Usage ==
== Usage ==
This template has two styles: a two-column table (<code>style = table</code>) and a list (<code>style = list</code>). The table is appropriate for shorter, inline templates. For larger templates, the list style may be preferred.
This template has three styles: a two-column table (<code>style = table</code>), a list (<code>style = list</code>), or a tabbed(<code>style = tabbed</code>). The table is appropriate for shorter, inline templates. For larger templates, the list style may be preferred. For exceptionally long templates like page generators, tabbed style may be preferred.


As with [https://en.wikipedia.org/wiki/Template:Demo Template:Demo on Wikipedia], the arguments to this template {{em|must}} be wrapped in <code><nowiki><nowiki>...</nowiki</nowiki><nowiki>></nowiki></code> tags or the parameters with be expanded before being passed to this template.
As with {{Wikipedia|Template:Demo}}, the arguments to this template {{em|must}} be wrapped in <code><nowiki><nowiki>...</nowiki</nowiki><nowiki>></nowiki></code> tags or the parameters will be expanded before being passed to this template.


== Examples ==
== Examples ==
Line 45: Line 58:
| <nowiki>{{DamageText|2d4 + 1|Fire}}</nowiki>
| <nowiki>{{DamageText|2d4 + 1|Fire}}</nowiki>
| <nowiki>{{RarityItem|Hat of Fire Acuity}}</nowiki>
| <nowiki>{{RarityItem|Hat of Fire Acuity}}</nowiki>
| <nowiki>{{SAI|Fireball}}</nowiki>
}}
=== Table style with captions ===
If you want to add captions to the examples, you can do so with {{c|caption <number>}} parameters. This switches to a 3 column layout.
==== Input ====
<!-- Can't recursively use this template to demo itself. Sad --->
<pre>
{{Template demo
| style = table
| caption 1 = CharLink demo
| &lt;nowiki>{{CharLink|Shadowheart}}</nowiki>
| caption 2 = DamageText demo
| &lt;nowiki>{{DamageText|2d4 + 1|Fire}}</nowiki>
| caption 3 = RarityItem demo
| &lt;nowiki>{{RarityItem|Hat of Fire Acuity}}</nowiki>
| caption 4 = SAI demo
| &lt;nowiki>{{SAI|Fireball}}</nowiki>
}}
</pre>
==== Output ====
{{Template demo
| style = table
| caption 1 = CharLink demo
| <nowiki>{{CharLink|Shadowheart}}</nowiki>
| caption 2 = DamageText demo
| <nowiki>{{DamageText|2d4 + 1|Fire}}</nowiki>
| caption 3 = RarityItem demo
| <nowiki>{{RarityItem|Hat of Fire Acuity}}</nowiki>
| caption 4 = SAI demo
| <nowiki>{{SAI|Fireball}}</nowiki>
| <nowiki>{{SAI|Fireball}}</nowiki>
}}
}}


=== List style ===
=== List style ===
Select this style with <code>style = list</code>. This should be used to demo templates too large to fit within a table.
Select this style with <code>style = list</code>. This should be used to demo templates too large to fit within a table. You can also optionally caption the examples as with the table style.
<!-- Can't recursively use this template to demo itself. Sad --->
<!-- Can't recursively use this template to demo itself. Sad --->
==== Input ====
==== Input ====
Line 62: Line 106:
}}
}}
</nowiki>
</nowiki>
| caption 2 = This example demonstrates many of the optional style parameters.
| &lt;nowiki>
| &lt;nowiki>
{{Quote fancy
{{Quote fancy
Line 85: Line 130:
}}
}}
</nowiki>
</nowiki>
| caption 2 = You can optionally add additional context or information to examples with {{c|caption <number>}} parameters.
| caption 2 = This example demonstrates many of the optional style parameters.
| <nowiki>
{{Quote fancy
| quote = These levitating eyes transmit all that they see to the one who created them.
| image = Portrait Scrying Eye.png
| link = Scrying Eye
| height = 60px
| rounding = 20%
| font-size = 100%
}}
</nowiki>
}}
 
=== Tabbed style ===
Select this style with <code>style = tabbed</code>. Tabbed style is good for exceptionally long templates such as page generators.
==== Input ====
<pre>
{{Template demo
| style = tabbed
| &lt;nowiki>
{{Quote fancy
| quote = The operations of these huge steel juggernauts are powered by engines of churning hellfire.
| image = Portrait Steel Watcher.png
| link = Adamantine Golem
}}
</nowiki>
| &lt;nowiki>
{{Quote fancy
| quote = These levitating eyes transmit all that they see to the one who created them.
| image = Portrait Scrying Eye.png
| link = Scrying Eye
| height = 60px
| rounding = 20%
| font-size = 100%
}}
</nowiki>
}}
</pre>
 
==== Output ====
{{Template demo
| style = tabbed
| <nowiki>
{{Quote fancy
| quote = The operations of these huge steel juggernauts are powered by engines of churning hellfire.
| image = Portrait Steel Watcher.png
| link = Adamantine Golem
}}
</nowiki>
| <nowiki>
| <nowiki>
{{Quote fancy
{{Quote fancy
Line 127: Line 220:
         "caption 1": {
         "caption 1": {
"label": "Example 1 caption",
"label": "Example 1 caption",
"description": "An additional caption or title for the example if you want to add additional context. Currently, only the list style format supports captions.",
"description": "An additional caption or title for the example if you want to add additional context.",
             "example": "This example demos the {{c|style}} optional parameter.",
             "example": "This example demos the {{c|style}} optional parameter.",
             "type": "string",
             "type": "string",
Line 134: Line 227:
         "caption 2": {
         "caption 2": {
"label": "Example 2 caption",
"label": "Example 2 caption",
"description": "An additional caption or title for the example if you want to add additional context. Currently, only the list style format supports captions.",
"description": "An additional caption or title for the example if you want to add additional context.",
             "example": "This example demos the {{c|style}} optional parameter.",
             "example": "This example demos the {{c|style}} optional parameter.",
             "type": "string",
             "type": "string",
Line 141: Line 234:
         "caption 3": {
         "caption 3": {
"label": "And so on...",
"label": "And so on...",
"description": "An additional caption or title for the example if you want to add additional context. Currently, only the list style format supports captions.",
"description": "An additional caption or title for the example if you want to add additional context.",
             "example": "This example demos the {{c|style}} optional parameter.",
             "example": "This example demos the {{c|style}} optional parameter.",
             "type": "string",
             "type": "string",

Latest revision as of 18:01, 20 February 2025

Template documentation

This template is designed to easily demo template usage and is intended for use within template documentation pages. It lets you display a set of template examples with the markup and rendered output displayed side-by-side.

Usage

This template has three styles: a two-column table (style = table), a list (style = list), or a tabbed(style = tabbed). The table is appropriate for shorter, inline templates. For larger templates, the list style may be preferred. For exceptionally long templates like page generators, tabbed style may be preferred.

As with Template:Demo, the arguments to this template must be wrapped in <nowiki>...</nowiki> tags or the parameters will be expanded before being passed to this template.

Examples

Table style

Select this style with style = table. It is also the default style used if the optional style parameter is omitted. This style should be used for shorter, inline templates that can fit nicely within a two-column table.

Input

{{Template demo
| style = table
| <nowiki>{{CharLink|Shadowheart}}</nowiki>
| <nowiki>{{DamageText|2d4 + 1|Fire}}</nowiki>
| <nowiki>{{RarityItem|Hat of Fire Acuity}}</nowiki>
| <nowiki>{{SAI|Fireball}}</nowiki>
}}

Output

Markup Renders as
{{CharLink|Shadowheart}}
Shadowheart Shadowheart
{{DamageText|2d4 + 1|Fire}}
2d4 + 1Damage TypesFire
{{RarityItem|Hat of Fire Acuity}}
Hat of Fire Acuity
{{SAI|Fireball}}
Fireball Fireball

Table style with captions

If you want to add captions to the examples, you can do so with caption <number> parameters. This switches to a 3 column layout.

Input

{{Template demo
| style = table
| caption 1 = CharLink demo
| <nowiki>{{CharLink|Shadowheart}}</nowiki>
| caption 2 = DamageText demo
| <nowiki>{{DamageText|2d4 + 1|Fire}}</nowiki>
| caption 3 = RarityItem demo
| <nowiki>{{RarityItem|Hat of Fire Acuity}}</nowiki>
| caption 4 = SAI demo
| <nowiki>{{SAI|Fireball}}</nowiki>
}}

Output

Example Markup Renders as
CharLink demo
{{CharLink|Shadowheart}}
Shadowheart Shadowheart
DamageText demo
{{DamageText|2d4 + 1|Fire}}
2d4 + 1Damage TypesFire
RarityItem demo
{{RarityItem|Hat of Fire Acuity}}
Hat of Fire Acuity
SAI demo
{{SAI|Fireball}}
Fireball Fireball

List style

Select this style with style = list. This should be used to demo templates too large to fit within a table. You can also optionally caption the examples as with the table style.

Input

{{Template demo
| style = list
| <nowiki>
{{Quote fancy
| quote = The operations of these huge steel juggernauts are powered by engines of churning hellfire.
| image = Portrait Steel Watcher.png
| link = Adamantine Golem
}}
</nowiki>
| caption 2 = This example demonstrates many of the optional style parameters.
| <nowiki>
{{Quote fancy
| quote = These levitating eyes transmit all that they see to the one who created them.
| image = Portrait Scrying Eye.png
| link = Scrying Eye
| height = 60px
| rounding = 20%
| font-size = 100%
}}
</nowiki>
}}

Output

Markup
{{Quote fancy
| quote = The operations of these huge steel juggernauts are powered by engines of churning hellfire.
| image = Portrait Steel Watcher.png
| link = Adamantine Golem
}}
Renders as
Portrait Steel Watcher.png
The operations of these huge steel juggernauts are powered by engines of churning hellfire.

This example demonstrates many of the optional style parameters.

Markup
{{Quote fancy
| quote = These levitating eyes transmit all that they see to the one who created them.
| image = Portrait Scrying Eye.png
| link = Scrying Eye
| height = 60px
| rounding = 20%
| font-size = 100%
}}
Renders as
Portrait Scrying Eye.png
These levitating eyes transmit all that they see to the one who created them.

Tabbed style

Select this style with style = tabbed. Tabbed style is good for exceptionally long templates such as page generators.

Input

{{Template demo
| style = tabbed
| <nowiki>
{{Quote fancy
| quote = The operations of these huge steel juggernauts are powered by engines of churning hellfire.
| image = Portrait Steel Watcher.png
| link = Adamantine Golem
}}
</nowiki>
| <nowiki>
{{Quote fancy
| quote = These levitating eyes transmit all that they see to the one who created them.
| image = Portrait Scrying Eye.png
| link = Scrying Eye
| height = 60px
| rounding = 20%
| font-size = 100%
}}
</nowiki>
}}

Output

Markup

{{Quote fancy
| quote = The operations of these huge steel juggernauts are powered by engines of churning hellfire.
| image = Portrait Steel Watcher.png
| link = Adamantine Golem
}}
Renders as
Portrait Steel Watcher.png
The operations of these huge steel juggernauts are powered by engines of churning hellfire.

Markup

{{Quote fancy
| quote = These levitating eyes transmit all that they see to the one who created them.
| image = Portrait Scrying Eye.png
| link = Scrying Eye
| height = 60px
| rounding = 20%
| font-size = 100%
}}
Renders as
Portrait Scrying Eye.png
These levitating eyes transmit all that they see to the one who created them.

Template data

Display a list of template examples that displays the source wikitext and rendered result side-by-side. The template supports an arbitrary number of examples as unnamed arguments.

Template parameters

This template prefers block formatting of parameters.

ParameterDescriptionTypeStatus
Example 11

Example markup/wikitext to demo. This parameter must be surrounded by <nowiki> tags to work correctly.

Example
<nowiki>{{SAI|Fire Bolt}}</nowiki>
Contentoptional
Example 22

Example markup/wikitext to demo. This parameter must be surrounded by <nowiki> tags to work correctly.

Example
<nowiki>{{SAI|Fire Bolt}}</nowiki>
Contentoptional
And so on...3

Example markup/wikitext to demo. This parameter must be surrounded by <nowiki> tags to work correctly.

Example
<nowiki>{{SAI|Fire Bolt}}</nowiki>
Contentoptional
Example 1 captioncaption 1

An additional caption or title for the example if you want to add additional context.

Example
This example demos the {{c|style}} optional parameter.
Stringoptional
Example 2 captioncaption 2

An additional caption or title for the example if you want to add additional context.

Example
This example demos the {{c|style}} optional parameter.
Stringoptional
And so on...caption 3

An additional caption or title for the example if you want to add additional context.

Example
This example demos the {{c|style}} optional parameter.
Stringoptional
Stylestyle

Select the layout style appropriate for the template being demoed.

Suggested values
table list
Default
table
Stringoptional