Template:Template usage: Difference between revisions
Appearance
version 3 rewrite: simpler code, more parameter flexibility |
|||
| Line 1: | Line 1: | ||
<!-- Curly brackets matching should ignore [^}], \{{!}}; insource:/\{} is OK. | <!-- Curly brackets matching should ignore [^}], \{{!}}; insource:/\{} is OK. | ||
--><onlyinclude>{{ | --><onlyinclude><onlyinclude><!-- | ||
{{ | Make a search link. | ||
| <!-- | -->{{plain link | ||
|url = | |||
{{fullurl:Special:Search|search=<!-- | |||
-->{{urlencode:<!-- encodes spaces, so let's avoid unecessary spaces. | |||
Build this query: | |||
hastemplate: template insource:/\{\{ *[Tt]emplate *\| *[^}]*pattern/ | |||
Add the ever present "hastemplate:" filter and a space | |||
-->hastemplate:"{{{template|{{{1|Template usage}}}}}}" <!-- | |||
Add the "insource:/\{\{ *" | |||
-->insource:/\{\{ *<!-- | |||
Add the "[Tt]". | |||
Save from an expensive, /regexp/i. | |||
-->[{{#invoke:String|sub<!-- saw first [ of a "[Tt]" --> | |||
|{{uc:{{{template|{{{1|Template usage}}}}}}}}|1|1}}{{#invoke:String|sub | |||
|{{lc:{{{template|{{{1|Template usage}}}}}}}}|1|1}}]{{#invoke:String|sub | |||
<!-- ^ | |||
You saw ]. | |||
Add "emplate", the rest of the template name, starting from char 2.--> | |||
|{{{template|{{{1|Template usage}}}}}}|2}}<!-- | |||
Add the tricky regexp part. | |||
--> *\{{!}} *[^}]*<!-- optional space " *" around initial pipe | |||
initial pipe is \|, i.e. \{{!}} | |||
Trickiest part: [character class] inverted with ^: [^any char NOT }] | |||
Zero or more (*) of those "non-curly brackets". | |||
All this stuff always matches, shows in bold in the search results | |||
Add the users regexp pattern part and closing /. | |||
-->{{{pattern|{{{2|''regexp''}}}}}}/<!-- | |||
Add "prefix:" You see the space before it. | |||
--> prefix:<!-- | |||
-->{{#switch:<!-- add namespace "numbers and letters" recognition --> | |||
{{{prefix|{{{3|}}}}}} | |||
|#default = {{{prefix|{{{3|{{FULLPAGENAME}}}}}}}} | |||
| | |||
|n = {{NAMESPACE}} | |n = {{NAMESPACE}} | ||
|0|: = : | |0|: = : | ||
| Line 159: | Line 65: | ||
|118 = {{ns:118}}: | |118 = {{ns:118}}: | ||
|119 = {{ns:119}}: | |119 = {{ns:119}}: | ||
}} | |446 = {{ns:446}}: | ||
|447 = {{ns:447}}: | |||
|711 = {{ns:711}}: | |||
|710 = {{ns:710}}: | |||
|828 = {{ns:828}}: | |||
|829 = {{ns:829}}: | |||
|2600 = {{ns:2600}}: | |||
}} | }} | ||
}}<!-- End urlencode. --> | |||
}}<!-- End fullurl | |||
url done | |||
Now for name param of plainlinks. | |||
Appearance of link looks just like the query, unless labeled. | |||
So we're rebuilding the query just for show this time. --> | |||
|name = <!-- for commentary see duplicate above --> | |||
{{#if: | |||
{{{label|{{{4|}}}}}} | |||
|{{{label|{{{4}}}}}} | |||
|{{#if: | |||
{{{prefix|{{{3|}}}}}} | |||
|hastemplate:"{{{template|{{{1|Template usage}}}}}}" <!-- | |||
-->insource:/\{\{ *<!-- | |||
-->[{{#invoke:String|sub<!-- saw first [ of a "[Tt]" --> | |||
|{{uc:{{{template|{{{1|Template usage}}}}}}}}|1|1}}{{#invoke:String|sub | |||
|{{lc:{{{template|{{{1|Template usage}}}}}}}}|1|1}}]{{#invoke:String|sub | |||
|{{{template|{{{1|Template usage}}}}}}|2}}<!-- ^ | |||
--> *\{{!}} *[^}]*<!-- optional space " *" around initial pipe | |||
-->{{#invoke:String|replace | |||
|{{#invoke:String|replace | |||
|{{{pattern|{{{2|''regexp''}}}}}}<!-- Given pattern | |||
-->|[|[}}<!-- Replace any/all [ with HTML symbol | |||
-->|]|]}}/<!-- replace any/all ] with there HTML symbol | |||
--> prefix:<!-- | |||
-->{{#switch:<!-- add namespace "numbers and letters" recognition --> | |||
{{{prefix|{{{3|}}}}}} | |||
|#default = {{{prefix|{{{3|{{FULLPAGENAME}}}}}}}} | |||
|n = {{NAMESPACE}} | |||
|0|: = <nowiki />: | |||
|1 = {{ns:1}}: | |||
|2 = {{ns:2}}: | |||
|3 = {{ns:3}}: | |||
|4 = {{ns:4}}: | |||
|5 = {{ns:5}}: | |||
|6 = {{ns:6}}: | |||
|7 = {{ns:7}}: | |||
|8 = {{ns:8}}: | |||
|9 = {{ns:9}}: | |||
|10 = {{ns:10}}: | |||
|11 = {{ns:11}}: | |||
|12 = {{ns:12}}: | |||
|13 = {{ns:13}}: | |||
|14 = {{ns:14}}: | |||
|15 = {{ns:15}}: | |||
|100 = {{ns:100}}: | |||
|101 = {{ns:101}}: | |||
|108 = {{ns:108}}: | |||
|109 = {{ns:109}}: | |||
|118 = {{ns:118}}: | |||
|119 = {{ns:119}}: | |||
|446 = {{ns:446}}: | |||
|447 = {{ns:447}}: | |||
|711 = {{ns:711}}: | |||
|710 = {{ns:710}}: | |||
|828 = {{ns:828}}: | |||
|829 = {{ns:829}}: | |||
|2600 = {{ns:2600}}: | |||
}} | }} | ||
|{{#invoke:String|replace | |{{#invoke:String|replace | ||
|{{#invoke:String|replace | |||
|'''Testing''' <kbd>{{{pattern|{{{2}}}}}}</kbd> '''on this page'''<!-- | |||
-->|[|[}}<!-- Replace any/all [ with HTML symbol | |||
-->|]|]}}<!-- replace any/all ] with there HTML symbol--> | |||
}} | |||
}} | |||
}}<!-- End of plainlinks | |||
--></onlyinclude><noinclude>{{Documentation}}</noinclude> | |||
<noinclude>{{Documentation}}</noinclude> | |||
Revision as of 19:41, 16 July 2015
File:Test Template Info-Icon - Version (2).svg Template documentation[create] [purge]