Difference between revisions of "Help:Colon function"
m  | 
				|||
| Line 27: | Line 27: | ||
===URLENCODE===  | ===URLENCODE===  | ||
| − | Converts the text into URL friendly format by replacing spaces with " ": <nowiki>{{urlencode:hello world}}</nowiki> gives {{urlencode:hello world}}  | + | Converts the text into URL friendly format by replacing spaces with "+": <nowiki>{{urlencode:hello world}}</nowiki> gives {{urlencode:hello world}}  | 
==NS==  | ==NS==  | ||
| Line 36: | Line 36: | ||
<code><nowiki>{{ns:project}}</nowiki></code> gives {{ns:project}}.  | <code><nowiki>{{ns:project}}</nowiki></code> gives {{ns:project}}.  | ||
| − | However <code><nowiki>{{ns:{{SITENAME}}}}</nowiki></code> for <code><nowiki>{{SITENAME}}</nowiki></code>={{SITENAME}} doesn't work, on Meta it has the same effect as <code><nowiki>{  | + | However <code><nowiki>{{ns:{{SITENAME}}}}</nowiki></code> for <code><nowiki>{{SITENAME}}</nowiki></code>={{SITENAME}} doesn't work, on Meta it has the same effect as <code><nowiki>{{Meta}}</nowiki><code>, calling an existing [[m:Template:Meta|Template:Meta]].  | 
| + | |||
| + | Similarly <code><nowiki>{{ns:{{ns:8}} talk}}</nowiki></code> fails without underscore: {{ns:{{ns:8}} talk}}. See [[Help:Variable]] for more canonical names like "'''<tt>project</tt>'''" and "'''<tt>talk</tt>'''".  | ||
| + | |||
| + | === NS:1 ===  | ||
| + | |||
| + | <code><nowiki>{{ns:{{ns:0}}_talk}}</nowiki></code> fails: {{ns:{{ns:0}} talk}}. The canonical name for the talk namespace of articles is "'''<tt>talk</tt>'''" and not "'''<tt>_talk</tt>'''". But the following constructs work:  | ||
| + | |||
| + | <code><nowiki>{{ns:01}}</nowiki></code> gives {{ns:01}},  | ||
| + | <code><nowiki>{{ns:+1}}</nowiki></code> gives {{ns:+1}},  | ||
| + | <code><nowiki>{{ns:TALK}}</nowiki></code> gives {{ns:TALK}}, and  | ||
| + | <code><nowiki>{{ns:{{ns:1}}}}</nowiki></code> gives also {{ns:{{ns:1}}}}. Space sensitive, but not case sensitive.  | ||
| + | |||
| + | === NS:0 ===  | ||
| + | |||
| + | <code><nowiki>'''#{{ns:0}}#'''</nowiki></code> gives '''#{{ns:0}}#''', an empty string. This is often handy, less vulnerable than a template '''void''' or similar,  | ||
| + | and less cryptic than [[Help:magic words|magic words]] like <tt><nowiki>__END__</nowiki></tt>.  | ||
| + | |||
| + | In constructs like <code><nowiki>{{ {{#if: {{{T|}}} | {{{T}}} | ns:0}} }}</nowiki></code>, where parameter '''T''' is  | ||
| + | normally the name of a template to be evaluated, but can be undefined or empty, <code><nowiki>{{ns:0}}</nowiki></code>   | ||
| + | is then a clean empty string. Without it <code><nowiki>{{}}</nowiki></code> would result in {{}}.  | ||
| + | |||
| + | Please note that <code><nowiki>{{ns:{{ns:0}}}}</nowiki></code> fails: {{ns:{{ns:0}}}}. NS cannot handle an empty <code><nowiki>{{ns:0}}</nowiki></code> argument.  | ||
| + | |||
| + | ==== {{ns:0}} ====  | ||
| + | |||
| + | An empty section title like above is obtained using, in this case, <code><nowiki>==== {{ns:0}} ====</nowiki></code>. This is dubious, but arguably better than using the same trick to get invisble section headers twice on a page. At least <tt><nowiki>/* {{ns:0}} */</nowiki></tt> makes sense in the edit history, if there's only one section using this particular trick.   | ||
| + | |||
| + | As shown in the table of contents this and similar tricks result in non-functional links. In conjunction with <code><nowiki>__NOTOC__</nowiki></code> it's less harmful, and maybe useful to get edit links for invisible sections with categories and interlanguage links. Other possibilities for different ''invisible'' section headers:  | ||
| + | # <code><nowiki>=== __NOTOC__ ===</nowiki></code>  | ||
| + | # <code><nowiki>=== ===</nowiki></code>  | ||
| + | # <code><nowiki>=== &nbsp; ===</nowiki></code>  | ||
| + | # <code><nowiki>=== &#160; ===</nowiki></code>  | ||
| + | |||
| + | == #language: ==  | ||
| + | <code>{{#language: ''code''}}</code> gives the language name of selected RFC 3066 language codes, otherwise it returns the input value as is. For a complete list see the [http://www.iana.org/assignments/language-subtag-registry IANA registry].  | ||
| + | :{{evaldemo|#language:da}}  | ||
| + | :{{evaldemo|#language:fo}}  | ||
| + | :{{evaldemo|#language:zh}}  | ||
| + | :{{evaldemo|#language:zh-min-nan}}  | ||
| + | :{{evaldemo|#language:ang}}  | ||
| + | :{{evaldemo|#language:tlh}} (missing, incomplete list)  | ||
| + | :{{evaldemo|#language:frr}} (missing, introduced 2006)  | ||
| + | :{{evaldemo|#language:mw}} (no language code as of 2006)  | ||
| + | |||
| + | This function will replace {{tim|n local}} and some of the [[Special:Prefixindex/Template:Lang name -]] templates.  | ||
| + | For actually supported alpha2 and alpha3 codes see {{tim|sttnw}}, the 27*26*26 template calls may take some time.  | ||
| + | |||
| + | ==General features==  | ||
| + | The parameter value can be an expression involving (possibly multilevel): concatenation, applying a template, parser function, or colon function, or using a variable.  | ||
| + | |||
| + | Examples:  | ||
| + | *using {{tim|tc}}, <nowiki>{{uc:{{tc}}}}</nowiki> gives {{uc:in}}.  | ||
| + | *using {{tim|x3}}, <nowiki>{{#expr:{{x3|1}}/3}}</nowiki> gives {{#expr:111/3}}  | ||
| + | |||
| + | ===Substitution===  | ||
| + | |||
| + | :''See also: '''[[Help:Substitution]]'''.''  | ||
| + | |||
| + | Applying "subst:" to a colon function works:  | ||
| + | |||
| + | <nowiki>{{subst:LC:AbC}}</nowiki> gives abc.  | ||
| + | |||
| + | Note that unless a technique like [[Help:Substitution#Optional substitution|optional recursive substitution]]   | ||
| + | is used, substituting a template which uses a colon function does not replace that colon function with its result.  | ||
| + | |||
| + | ===See also===  | ||
| + | *[[Help:Magic words]]  | ||
| + | *[[ParserFunctions]]  | ||
| + | *{{tim|colon function}}  | ||
| + | *{{tim|wikivar}}  | ||
| + | |||
| + | {{h:f|langs=|enname=colon function}}  | ||
Revision as of 07:01, 7 June 2007
A "colon function" is a predefined template with at least one unnamed parameter, separated from the function name by a colon ":" (unlike ordinary templates using "|"). Thus the syntax is:
- {{ function name : parameter value }}
 
The function name is not case-sensitive. Further parameters (if any, depending on the function) are separated by "|".
Contents
Formatting
LC
Makes a text lowercase.
{{lc:AbCdEf}} gives abcdef.
{{lc:Ä Β Ç}} gives ä β ç, expected ä β ç.
UC
Makes a text uppercase.
{{uc:AbCdEf}} gives ABCDEF.
{{uc:ä β ß}} gives Ä Β ß, expected: Ä Β SS. Don't expect too much.
LCFIRST
Makes the first character lowercase: {{lcfirst:Ab Cd}} gives ab Cd.
UCFIRST
Makes the first character uppercase: {{ucfirst:aB cD}} gives AB cD.
URLENCODE
Converts the text into URL friendly format by replacing spaces with "+": {{urlencode:hello world}} gives hello+world
NS
Gives the namespace name for a given namespace number or name:
{{ns:4}} gives lensowiki.
{{ns:{{ns:12}}_talk}} gives Help talk.
{{ns:project}} gives lensowiki.
However {{ns:{{SITENAME}}}} for {{SITENAME}}=lensowiki doesn't work, on Meta it has the same effect as {{Meta}}, calling an existing Template:Meta.
Similarly {{ns:{{ns:8}} talk}} fails without underscore: MediaWiki talk. See Help:Variable for more canonical names like "project" and "talk".
NS:1
{{ns:{{ns:0}}_talk}} fails: Talk. The canonical name for the talk namespace of articles is "talk" and not "_talk". But the following constructs work:
{{ns:01}} gives Talk,
{{ns:+1}} gives Talk,
{{ns:TALK}} gives Talk, and
{{ns:{{ns:1}}}} gives also Talk. Space sensitive, but not case sensitive.
NS:0
'''#{{ns:0}}#''' gives ##, an empty string. This is often handy, less vulnerable than a template void or similar,
and less cryptic than magic words like __END__.
In constructs like {{ {{#if: {{{T|}}} | {{{T}}} | ns:0}} }}, where parameter T is
normally the name of a template to be evaluated, but can be undefined or empty, {{ns:0}} 
is then a clean empty string. Without it {{}} would result in {{}}.
Please note that {{ns:{{ns:0}}}} fails: . NS cannot handle an empty {{ns:0}} argument.
An empty section title like above is obtained using, in this case, ==== {{ns:0}} ====. This is dubious, but arguably better than using the same trick to get invisble section headers twice on a page. At least /* {{ns:0}} */ makes sense in the edit history, if there's only one section using this particular trick. 
As shown in the table of contents this and similar tricks result in non-functional links. In conjunction with __NOTOC__ it's less harmful, and maybe useful to get edit links for invisible sections with categories and interlanguage links. Other possibilities for different invisible section headers:
=== __NOTOC__ === 
=== === 
===   === 
===   ===
#language:
{{#language: code}} gives the language name of selected RFC 3066 language codes, otherwise it returns the input value as is. For a complete list see the IANA registry.
- Template:Evaldemo
 
- Template:Evaldemo
 
- Template:Evaldemo
 
- Template:Evaldemo
 
- Template:Evaldemo
 
- Template:Evaldemo (missing, incomplete list)
 
- Template:Evaldemo (missing, introduced 2006)
 
- Template:Evaldemo (no language code as of 2006)
 
This function will replace template:n local ( talk edit   history links     ) and some of the Special:Prefixindex/Template:Lang name - templates.
For actually supported alpha2 and alpha3 codes see template:sttnw ( talk edit   history links     ), the 27*26*26 template calls may take some time.
General features
The parameter value can be an expression involving (possibly multilevel): concatenation, applying a template, parser function, or colon function, or using a variable.
Examples:
- using template:tc ( talk edit   history links     ), {{uc:{{tc}}}} gives IN.
 
- using template:x3 ( talk edit   history links     ), {{#expr:{{x3|1}}/3}} gives 37
 
Substitution
- See also: Help:Substitution.
 
Applying "subst:" to a colon function works:
{{subst:LC:AbC}} gives abc.
Note that unless a technique like optional recursive substitution 
is used, substituting a template which uses a colon function does not replace that colon function with its result.
See also
http://www.fayeunrauphotography.com/ kjøp cialis 520853 http://www.primetermites.com/ ジェネリックバイアグラ 5575 http://www.witch-ring.com/Generic-Viagra/ Comprando viagra sfnjy http://www.flweaver.com/ online Cialis kmt http://www.blogdemoteros.com/ tadalafil 5271