Aiuto:Funzioni parser: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Markup
aggiorno con http://it.wikipedia.org/w/index.php?title=Aiuto:Funzioni_parser&oldid=69297958
Riga 1:
{{policy da aggiornare|Aiuto:Funzioni parser}}
{{markup}}
{{Indice aiuto}}
Questa pagina descrive le funzioni [[w:Parsing|parser]] che possono essere inserite nel wikicodice per elaborare stringhe e numeri. Sono utili in particolare nella creazione di [[aiuto:template|template]]. Le funzioni parser possono utilizzare anche le [[aiuto:variabili|variabili]] di [[w:MediaWiki|MediaWiki]].
 
Alcune sono fornite dall'estensione MediaWiki ''[[mw:Help:Extension:ParserFunctions/it|ParserFunctions]]'' e hanno sintassi:
Questa estensione [[w:MediaWiki|MediaWiki]] è una raccolta di funzioni [[w:Parsing|parser]]. Sintassi:
:<nowiki>{{</nowiki>#nomefunzione: argomento 1 | argomento 2 | argomento 3...}}
Altre sono funzioni base di MediaWiki e generalmente hanno sintassi:
:<nowiki>{{</nowiki>nomefunzione: argomento }}
 
:Gli spazi attorno a <nowiki>{{</nowiki>, }} e | non sono rilevanti nella sintassi, quindi ad esempio {{ #functionnamenomefunzione: argomento 1 | argomento 2 |}} è equivalente a {{#nomefunzione:argomento 3...1|argomento 2}}.
 
Funzioni più complesse di queste possono essere realizzate tramite i [[aiuto:Moduli|moduli]].
Questa estensione supporta le funzioni: <tt>expr</tt>, <tt>if</tt>, <tt>ifeq</tt>, <tt>ifexpr</tt> e <tt>switch</tt>.
 
== expr ==
 
La funzione <tt>expr</tt> elabora operazioni matematiche. Gli operatori supportati (in ordine di precedenza) sono:
{| class="wikitable"
:{| {{prettytable}}
! ''Operatore''
! ''Operazione''
! ''Esempio''
|-
! -
| Negazione unaria
|<nowiki>{{#expr: - 7}}</nowiki> = {{#expr: - 7}}
|-
! exp
| Esponenziale
|<nowiki>{{#expr: exp 3}}</nowiki> = {{#expr: exp 3}}
|-
! ln
| Logaritmo naturale
|<nowiki>{{#expr: ln 100}}</nowiki> = {{#expr: ln 100}}
|-
! abs
| Valore assoluto
|<nowiki>{{#expr: abs -2}}</nowiki> = {{#expr: abs -2}}
|-
! trunc
| Arrotondamento per difetto
|<nowiki>{{#expr: trunc 1.5}}</nowiki> = {{#expr: trunc 1.5}}<br><nowiki>{{#expr: trunc -1.5}}</nowiki> = {{#expr: trunc -1.5}}
|-
! floor
| Arrotondamento verso il basso
|<nowiki>{{#expr: floor 1.5}}</nowiki> = {{#expr: floor 1.5}}<br><nowiki>{{#expr: floor -1.5}}</nowiki> = {{#expr: floor -1.5}}
|-
! ceil
| Arrotondamento verso l'alto
|<nowiki>{{#expr: ceil 1.5}}</nowiki> = {{#expr: ceil 1.5}}<br><nowiki>{{#expr: ceil -1.5}}</nowiki> = {{#expr: ceil -1.5}}
|-
! sin, cos, tan
| Funzioni trigonometriche (in radianti)
|<nowiki>{{#expr: sin 1}}</nowiki> = {{#expr: sin 1}}
|-
! asin, acos, atan
| Funzioni trigonometriche inverse
|<nowiki>{{#expr: asin 0.5}}</nowiki> = {{#expr: asin 0.5}}
|-
! not
| NOT logico
|<nowiki>{{#expr: not 7}}</nowiki> = {{#expr: not 7}}
|-
! ^
| Elevamento a potenza
|<nowiki>{{#expr: 30 ^ 7}}</nowiki> = {{#expr: 30 ^ 7}}
|-
! *
|| Moltiplicazione
||<nowiki>{{#expr: 30 * 7}}</nowiki> = {{#expr: 30 * 7}}
|-
! / <span style="font-weight: normal">oroppure</span> div
|| Divisione
||<nowiki>{{#expr: 30 / 7}}</nowiki> = {{#expr: 30 / 7}}
|-
! mod
| Modulo, restituisce il resto di una divisione
|<nowiki>{{#expr: 30 mod 7}}</nowiki> = {{#expr: 30 mod 7}}
|-
! +
|| Addizione
||<nowiki>{{#expr: 30 + 7}}</nowiki> = {{#expr: 30 + 7}}
|-
! -
|| Sottrazione (o negazione)
||<nowiki>{{#expr: 30 - 7}}</nowiki> = {{#expr: 30 - 7}}
|-
! mod
|| Modulo, restituisce il resto di una divisione
||<nowiki>{{#expr: 30 mod 7}}</nowiki> = {{#expr: 30 mod 7}}
|-
! round
|| Arrotonda ilal numero apiù sinistravicino.<br>Il consecondo operando è il numero di decimali;<br />se diè cifrenegativo, decimaliarrotonda indicato dal numeroa a10, destra100...
||<nowiki>{{#expr: 301.2345 round 2}}</nowiki> 7= {{#expr: 1.2345 round 72}}<br><nowiki>{{#expr: 1.2378 round 2}}</nowiki> = {{#expr: 301.2378 round 2}}<br><nowiki>{{#expr: 5432 round -2}}</nowiki> = {{#expr: 75432 round 7-2}}
|-
! =
|| Uguaglianza
||<nowiki>{{#expr: 30 = 7}}</nowiki> = {{#expr: 30 = 7}}
|-
! <> <span style="font-weight: normal">oroppure</span> !=
|| Disuguaglianza
||<nowiki>{{#expr: 30 <> 7}}</nowiki> = {{#expr: 30 <> 7}}
|-
! <
|| Minore
||<nowiki>{{#expr: 30 < 7}}</nowiki> = {{#expr: 30 < 7}}
|-
! >
|| Maggiore
||<nowiki>{{#expr: 30 > 7}}</nowiki> = {{#expr: 30 > 7}}
|-
! <=
|| Minore o uguale
||<nowiki>{{#expr: 30 <= 7}}</nowiki> = {{#expr: 30 <= 7}}
|-
! >=
|| Maggiore o uguale
||<nowiki>{{#expr: 30 >= 7}}</nowiki> = {{#expr: 30 >= 7}}
|-
! and
|| AND logico
||<nowiki>{{#expr: 30 and 7}}</nowiki> = {{#expr: 30 and 7}}
|-
! or
|| OR logico
||<nowiki>{{#expr: 30 or 7}}</nowiki> = {{#expr: 30 or 7}}
|-
! not
|| NOT logico
||<nowiki>{{#expr: not 7}}</nowiki> = {{#expr: not 7}}
|-
! ( )
|| Parentesi
||<nowiki>{{#expr: (30 + 7) * 7 }}</nowiki> = {{#expr: (30 + 7) * 7 }}
|}
 
Gli operatori booleani considerano 0 come falso e 1 come vero.
I numeri devono essere inseriti in notazione informatica, senza separatori di migliaia e con il punto come separatore decimale, ad es. <tt>12345.67</tt>; vengono restituiti allo stesso modo in uscita. Gli spazi tra gli operatori non sono obbligatori.
 
Gli [[w:operatore booleano|operatori booleani]] considerano 0 come falso e ogni numero diverso da zero come vero. In uscita il vero viene restituito come 1.
 
Sono disponibili le costanti "e" (numero di Eulero) e "pi" (pi greco).
 
Esempio:
 
<code> <nowiki>{{ #expr: (100 - 32) / 9 * 5 round 0 }}</nowiki></code>

restituisce ''':

{{ #expr: (100 - 32) / 9 * 5 round 0 }}'''

che è 100 °F in &deg;°C, arrotondato al numero intero più vicino.
 
== if ==
Line 102 ⟶ 156:
 
Notare che la funzione <tt>if</tt> '''non''' supporta il segno "=" o espressioni matematiche. <nowiki>{{#if: 1 = 2|sì|no}}</nowiki> restituirà "sì", perché la stringa "1 = 2" non è vuota. La funzione <tt>if</tt> è intesa come una funzione <tt>if defined</tt>. Per confrontare delle stringhe, usa <tt>ifeq</tt>. Per confrontare numeri, usa <tt>ifexpr</tt>.
 
Per verificare che sia vera una condizione '''oppure''' un'altra si può scrivere:
<nowiki>{{#if: {{{A|}}}{{{B|}}} | A o B | né A né B }}</nowiki>
 
Per verificare che siano vere '''entrambe''' le condizioni si può scrivere:
<nowiki>{{#if: {{#if: {{{A|}}} | {{{B|}}} }} | A e B | A vuoto o B vuoto }}</nowiki>
 
== ifeq ==
Line 108 ⟶ 168:
 
<nowiki>{{</nowiki> #ifeq: ''&lt;testo 1>'' | ''&lt;testo 2>'' | ''&lt;se sono uguali restituisce questo>'' | ''&lt;altrimenti questo>'' }}
== iferror ==
La funzione <tt>iferror</tt> prende in ingresso una stringa e restituisce un'altra stringa delle due possibili; l'uscita dipende dalla stringa in ingresso, se questa contiene un oggetto HTML con <tt>class="error"</tt> (che può essere generato da altre funzioni parser come <tt>[[#expr]]</tt> e <tt>[[#time]]</tt> oppure da template) viene restituita la prima, altrimenti la seconda.
 
<nowiki>{{ #iferror:</nowiki> ''<stringa>'' <nowiki>|</nowiki> ''<se la stringa restituisce un errore>'' <nowiki>|</nowiki> ''<se la stringa è corretta>'' <nowiki>}}</nowiki>
 
Una o entrambe le stringhe in uscita possono essere messe. Se viene omessa la stringa da scrivere in caso la stringa in ingresso sia esatta allora viene restituito il valore della stringa in ingresso. Se viene omessa la stringa da scrivere in caso la stringa in ingresso sia errata allora in uscita viene restituita una stringa vuota:
 
:<tt><nowiki>{{#iferror: {{#expr: 1 + 2 }} | errore | corretta }}</nowiki></tt> → '''{{#iferror: {{#expr: 1 + 2 }} | errore | corretta }}'''
:<tt><nowiki>{{#iferror: {{#expr: 1 + X }} | errore | corretta }}</nowiki></tt> → '''{{#iferror: {{#expr: 1 + X }} | errore | corretta }}'''
:<tt><nowiki>{{#iferror: {{#expr: 1 + 2 }} | errore }}</nowiki></tt> → '''{{#iferror: {{#expr: 1 + 2 }} | errore }}'''
:<tt><nowiki>{{#iferror: {{#expr: 1 + X }} | errore }}</nowiki></tt> → '''{{#iferror: {{#expr: 1 + X }} | errore }}'''
:<tt><nowiki>{{#iferror: {{#expr: 1 + 2 }} }}</nowiki></tt> → '''{{#iferror: {{#expr: 1 + 2 }} }}'''
:<tt><nowiki>{{#iferror: {{#expr: 1 + X }} }}</nowiki></tt> → '''&zwnj;{{#iferror: {{#expr: 1 + X }} }}'''
:<tt><nowiki>{{#iferror: <strong class="error">a</strong> | errore | corretta }}</nowiki></tt> → '''{{#iferror: <strong class="error">a</strong> | errore | corretta }}'''
 
== ifexpr ==
Line 126 ⟶ 201:
 
Il primo parametro è il titolo da cercare, il secondo è il risultato da restituire se la pagina esiste e il terzo è il risultato da restituire se la pagina non esiste. Se il primo parametro non è un titolo valido, la funzione restituisce il risultato negativo.
 
=== Esistenza dei file ===
 
<code>ifexist</code> consente anche di testare la disponibilità di un file, in questo caso indipendentemente dal fatto che si trovi in locale o su [[Commons:|Commons]], indicando il file con il namespace virtuale '''<code>Media:</code>'''
 
Al contrario, con <code>File:</code>, <code>Immagine:</code> o <code>Image:</code> si testa l'esistenza in locale della pagina di descrizione del file.
 
Così:
: <code><nowiki>{{#ifexist: </nowiki>'''Media:'''<nowiki>Example.png | il file esiste su Commons o in locale | il file non esiste né su Commons né in locale }}</nowiki></code>
: restituisce "{{#ifexist: Media:Example.png | il file esiste su Commons o in locale | il file non esiste né su Commons né in locale }}"
 
Invece:
: <code><nowiki>{{#ifexist: File:Example.png | esiste una pagina locale | non esiste una pagina locale }}</nowiki></code>
: restituisce "{{#ifexist: File:Example.png | esiste una pagina locale | non esiste una pagina locale }}"
 
== switch ==
Line 153 ⟶ 242:
Nota che valore<sup>1</sup> e valore<sup>2</sup> non contengono il simbolo uguale. Se si trovasse una corrispondenza con essi, verrebbe restituito il risultato assegnato a valore<sup>3</sup> (risultato<sup>3</sup>).
 
 
==Numeri==
== Formattazione ==
Nelle espressioni è consentito usare il punto decimale, e i numeri non interi restituiti dalle espressioni hanno un punto decimale. Le virgole non sono né accettate in ''input'', né prodotte in ''output''. Questo è valido anche se <nowiki>{{NUMBEROFARTICLES}}</nowiki> usa la virgola per le migliaia, e in alcune versioni locali di MediaWiki il punto.
 
=== Maiuscole e minuscole ===
riassunto veloce:
* Prima maiuscola: <code><nowiki>{{ucfirst:}}</nowiki></code> - <tt>{{ucfirst:{{PAGENAME}}}}</tt>
* prima minuscola: <code><nowiki>{{lcfirst:}}</nowiki></code> - <tt>{{lcfirst:{{PAGENAME}}}}</tt>
* TUTTO MAIUSCOLO: <code><nowiki>{{uc:}}</nowiki></code> - <tt>{{uc:{{PAGENAME}}}}</tt>
* tutto minuscolo: <code><nowiki>{{lc:}}</nowiki></code> - <tt>{{lc:{{PAGENAME}}}}</tt>
 
==== lc ====
Acronimo di ''lower case'' (tutto minuscolo): trasforma un testo in caratteri minuscoli.
 
Con <nowiki>{{lc:AbCdEf}}</nowiki> si ottiene {{lc:AbCdEf}}.<br />
Con <nowiki>{{lc:Ä Β Ç}}</nowiki> si ottiene {{lc:Ä Β Ç}}, atteso ä β ç.
 
==== uc ====
Acronimo di ''upper case'' (tutto maiuscolo): trasforma un testo in caratteri maiuscoli.
 
Con <nowiki>{{uc:AbCdEf}}</nowiki> si ottiene {{uc:AbCdEf}}.<br />
Con <nowiki>{{uc:ä β ß}}</nowiki> si ottiene {{uc:ä β ß}}.
 
==== lcfirst ====
Acronimo di ''lower case first'' (prima minuscola): trasforma in minuscolo il primo carattere di un testo: con <nowiki>{{lcfirst:Ab Cd}}</nowiki> si ottiene {{lcfirst:Ab Cd}}.
 
==== ucfirst ====
Acronimo di ''upper case first'' (prima maiuscola): trasforma in maiuscolo il primo carattere di un testo: con <nowiki>{{ucfirst:aB cD}}</nowiki> si ottiene {{ucfirst:aB cD}}.
 
=== formatnum ===
Aggiunge la [[w:Separatore decimale|virgola dei decimali]] e i [[w:Separatore decimale#Raggruppamento delle cifre|separatori delle migliaia]] a un numero puro.
 
I separatori delle migliaia vengono inseriti solo nella parte intera (prima della virgola), non nella parte frazionaria (dopo la virgola).
 
Il numero dato in input deve essere inserito in notazione informatica, senza separatori di migliaia e con il punto come separatore decimale, ad es. <tt>12345.67</tt>, come quelli dati in input e restituiti in output da [[#expr|#expr]].
 
Con <tt><nowiki>{{formatnum:1234.56}}</nowiki></tt> si ottiene {{formatnum:1234.56}}
 
Con <tt><nowiki>{{formatnum:1234567.8901234}}</nowiki></tt> si ottiene {{formatnum:1234567.8901234}}
 
L'eventuale presenza di [[aiuto:note|note]] insieme al numero non dà problemi, vengono ignorate e restituite così come sono. Anche i caratteri non numerici, esclusi i separatori, vengono ignorati e mantenuti.
 
Con <tt><nowiki>{{formatnum:''I numeri sono 1234 e 5678<ref>Prova.</ref>''}}</nowiki></tt> si ottiene {{formatnum:''I numeri sono 1234 e 5678<ref>Prova.</ref>''}}
 
È possibile fare l'operazione contraria aggiungendo R come secondo parametro: con <tt><nowiki>{{formatnum:1 234 567,89|R}}</nowiki></tt> si ottiene {{formatnum:1 234 567,89|R}} (gli spazi non sono spazi normali ma caratteri di spazio unificatore).
 
=== padleft e padright ===
Aggiunge dei caratteri di riempimento sulla sinistra, rendendo la stringa di lunghezza fissa. Sintassi:
 
:<nowiki>{{padleft: stringa | lunghezza | riempimento}}</nowiki>
 
Con <tt><nowiki>{{padleft:ciao|10|+-}}</nowiki></tt> si ottiene <tt>{{padleft:ciao|10|+-}}</tt>
 
<tt>padright</tt> ha lo stesso effetto ma riempie il lato destro. Esempio: <tt><nowiki>{{padright:ciao|10|+-}}</nowiki></tt> genera: <tt>{{padright:ciao|10|+-}}</tt>
 
<tt>padleft</tt> o <tt>padright</tt> può essere sfruttato per ottenere i primi N caratteri di una stringa di lunghezza &#x2265; N: con <tt><nowiki>{{padleft:|3|Tizio}}</nowiki></tt> si ottiene <tt>{{padleft:|3|Tizio}}</tt>
 
=== plural ===
Mostra una stringa diversa a seconda se l'argomento è "1" o un numero maggiore.
 
:<nowiki>{{plural: N | singolare | plurale }}</nowiki>
 
Con <tt><nowiki>{{plural:3|casa|case}}</nowiki></tt> si ottiene <tt>{{plural:3|casa|case}}</tt>
 
Il default con parametro vuoto o non riconosciuto è "plurale". "1" seguito da altre parole e "-1" sono riconosciuti come singolare.
 
== time ==
La funzione <tt>time</tt> è un costrutto per la formattazione del tempo. Sintassi:
 
<nowiki>{{</nowiki> #time: ''formato'' <nowiki>}}</nowiki>
 
o
 
<nowiki>{{</nowiki> #time: ''formato'' | ''time'' <nowiki>}}</nowiki>
 
Se non è specificato un valore per ''time'' viene usata la data e ora della conversione in HTML della pagina (nel [[w:tempo coordinato universale|tempo coordinato universale]]). Attenzione che a causa del meccanismo di caching questo valore può differire notevolmente dal momento in cui la pagina viene visualizzata. Per aggiornare il valore è necessario salvare la pagina (senza averla modificata, ovvero facendo un "edit nullo"), o visualizzarla richiedendo la ripulitura della cache (<tt>&action=purge</tt> aggiunto all'url) oppure selezionare l'opzione che disabilita il caching delle pagine nelle proprie preferenze.
 
La funzione <tt>#timel</tt> è analoga a #time, ma utilizza il fuso orario locale di it.wiki ([[w:UTC+1|UTC+1]] con eventuale ora legale) anziché il tempo coordinato universale.
 
==== Parametro formato ====
Il parametro ''formato'' è una stringa che utilizza una sintassi simile a quella usata nelle date in PHP<ref>http://www.php.net/date</ref>.
 
formato veloce
*<code><nowiki>{{#timel:j F Y}}</nowiki></code> - <tt>{{#timel:j F Y}}</tt>
*<code><nowiki>{{#timel:Y-m-d}}</nowiki></code> - <tt>{{#timel:Y-m-d}}</tt>
*<code><nowiki>{{#timel:l j F Y G:s}}</nowiki></code> - <tt>{{#timel:l j F Y G:s}}</tt>
*<code><nowiki>{{#timel:D j M Y h:s a}}</nowiki></code> - <tt>{{#timel:D j M Y h:s a}}</tt>
*<code><nowiki>{{#timel:Y-m-d H:s}}</nowiki></code> - <tt>{{#timel:Y-m-d H:s}}</tt>
 
{| class="wikitable"
|-
! rowspan=2|Parametro
! rowspan=2|Descrizione
! colspan=2|output equivalente con
! colspan=2|[[Aiuto:variabili|Variabili equivalenti]]
|-
! #''time''
! #''timel''
! Orario [[w:UTC|UTC]]
! Orario locale
|--------------
! colspan=6 | Anno
|--------------
| Y
| in '''4''' cifre
| {{#time:Y}} || {{#timel:Y}}
| <nowiki>{{CURRENTYEAR}}</nowiki> || <nowiki>{{LOCALYEAR}}</nowiki>
|-
| y
| in '''2''' cifre
| {{#time:y}} || {{#timel:y}}
| - || -
|-
| L
| 1 se bisestile, 0 altrimenti
| {{#time:L}} || {{#timel:L}}
| - || -
|--------------
! colspan=6 | Mese
|--------------
| F
| Nome completo
| {{#time:F}} || {{#timel:F}}
| <nowiki>{{CURRENTMONTHNAME}}</nowiki> ||<nowiki>{{LOCALMONTHNAME}}</nowiki>
|-
| M
| Nome abbreviato
| {{#time:M}} || {{#timel:M}}
| <nowiki>{{CURRENTMONTHABBREV}}</nowiki> || <nowiki>{{LOCALMONTHABBREV}}</nowiki>
|-
| m
| Numero del mese (01 - 12)
| {{#time:m}} || {{#timel:m}}
| <nowiki>{{CURRENTMONTH}}</nowiki> || <nowiki>{{LOCALTMONTH}}</nowiki>
|-
| n
| Numero del mese (1 - 12)
| {{#time:n}} || {{#timel:n}}
| ||
|-
| t
| Numero di giorni del mese
| {{#time:t}} || {{#timel:t}}
| ||
|--------------
! colspan=6 | Giorno
|--------------
| d
| Giorno del mese<br/>(01 - 31).
| {{#time:d}} || {{#timel:d}}
| <nowiki>{{CURRENTDAY2}}</nowiki> || <nowiki>{{LOCALDAY2}}</nowiki>
|-
| j
| Giorno del mese (1 - 31).
| {{#time:j}} || {{#timel:j}}
| <nowiki>{{CURRENTDAY}}</nowiki> || <nowiki>{{LOCALDAY}}</nowiki>
|-
| z
| Giorno dell'anno (1 - 365)
| {{#time:z}} || {{#timel:z}}
| ||
|--------------
| l
| Nome completo
| {{#time:l}} || {{#timel:l}}
| <nowiki>{{CURRENTDAYNAME}}</nowiki> || <nowiki>{{LOCALDAYNAME}}</nowiki>
|-
| D
| Nome abbreviato
| {{#time:D}} || {{#timel:D}}
| ||
|-
| N
| Giorno della settimana [[ISO 8601]]<br/>(1 (Lunedì) - 7 (Domenica))
| {{#time:N}} || {{#timel:N}}
| <nowiki>{{CURRENTWEEK}}</nowiki> || <nowiki>{{LOCALWEEK}}</nowiki>
|-
| w
| Giorno della settimana <br/>(0 (Domenica) - 6 (Sabato))
| {{#time:w}} || {{#timel:w}}
| ||
|--------------
! colspan=6 | Settimane
|--------------
| W
| Settimana dell'anno <br/>(1 - 52)
| {{#time:W}} || {{#timel:W}}
| <nowiki>{{CURRENTWEEK}}</nowiki> || <nowiki>{{LOCALWEEK}}</nowiki>
|--------------
! colspan=6 | Orario
|--------------
| H:s
| Ora:minuti (00:00 - 23:59)
| {{#time:H:s}} || {{#timel:H:s}}
| <nowiki>{{CURRENTTIME}}</nowiki> || <nowiki>{{LOCALTIME}}</nowiki>
|-
| H
| Ora formato 24 ore (00 - 23)
| {{#time:H}} || {{#timel:H}}
| <nowiki>{{CURRENTHOUR}}</nowiki> || <nowiki>{{LOCALHOUR}}</nowiki>
|-
| G
| Ora formato 24 ore (0 - 23)
| {{#time:G}} || {{#timel:G}}
| ||
|-
| h
| Ora formato 12 ore (01 - 12)
| {{#time:h}} || {{#timel:h}}
| ||
|-
| g
| Ora formato 12 ore (1 - 12)
| {{#time:g}} || {{#timel:g}}
| ||
|--------------
| a
| am o pm
| {{#time:a}} || {{#timel:a}}
| ||
|-
| A
| AM o PM
| {{#time:A}} || {{#timel:A}}
| ||
|--------------
| i
| Il minuto (00 - 59)
| {{#time:i}} || {{#timel:i}}
| ||
|--------------
| s
| Il secondo (00 - 59)
| {{#time:s}} || {{#timel:s}}
| ||
|}
<!--
|--------------
| c
| La data in formato [[ISO 8601]]
| {{#time:c}}
|--------------
| r
| La data in formato [[RFC 2822]]
| {{#time:r}}
|--------------
| U
| Secondi dal Gennaio 1 1970 00:00:00 GMT
| {{#time:U}}
|} -->
<!--
I seguenti codici di formattazione rappresentano un'estensione della sintassi PHP:
 
{| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;"
! Parametro
! Descrizione
|--------------
| xn
| Format the next numeric code as a raw ASCII number. For example, in the Hindi language, {{ #time:H, xnH}} produces {{ #time:H, xnH}}.
|--------------
| xN
| Toggle a permanent raw number formatting flag. Like xn, except it lasts until the end of the string or until the same code appears again.
|--------------
| xr
| Formato che trasforma dal formato numerico al codice romano. Lavora solo con numeri fino a 3000. (Esempio <nowiki>{{</nowiki>#time:xrY/xrY/xrY|1/1/1827<nowiki>}}</nowiki> ritorna {{ #time:xrY/xrY/xrY|1/1/1827}} )
|--------------
| xg
| Output the genitive form of the month name, for languages which make such a distinction between genitive and nominative.
|--------------
| xx
| A literal "x"
|}
-->
I caratteri non riconosciuti vengono lasciati inalterati. Esistono due tecniche per evitare l'elaborazione di caratteri inseriti in stringhe di descrizione:
* racchiudere gli stessi fra doppi apici (i singoli apici non verranno considerati)
** Corretto: <nowiki>{{</nowiki> #time: "Attualmente è" F<nowiki>}}</nowiki> → {{ #time: "Attualmente è" F}}
** Errato: <nowiki>{{</nowiki> #time: Attualmente è F<nowiki>}}</nowiki> → {{ #time: Attualmente è F}}
** Singoli apici: <nowiki>{{</nowiki> #time:G:i's"<nowiki>}}</nowiki> → {{#time:G:i's"}}
* Utilizzare il carattere di escape "\".
**<nowiki>{{</nowiki> #time:\H<nowiki>}}</nowiki> → {{#time:\H}}
**<nowiki>{{</nowiki> #time:\"<nowiki>}}</nowiki> → {{#time:\"}}
<!--
 
More format codes may be added in the future, as demanded by the users of this extension. This may come in the form of either a more complete implementation of PHP's format codes, or additional "x" codes.
-->
 
==== Parametro time ====
Il formato del parametro ''time'' è identico a quello usato dalla funzione PHP strtotime().
Supporta date sia assolute sia relative. Le date devono essere espresse in formato inglese ovvero
"December 11" e non "11 Dicembre" e "+10 hours" e non "+10 ore". Questa caratteristica può essere usata per la gestione delle "timezone" ovvero per la conversione dall'orario [[w:UTC|UTC]] usato per default all'orario [[w:CET|CET]] o [[w:CEST|CEST]] usato in Italia. Per ulteriori informazioni vedere [http://www.gnu.org/software/tar/manual/html_node/tar_109.html the GNU tar manual].
 
==== Esempi ====
*<nowiki>{{#time:G:i's"|+1 hours}}</nowiki> → {{#time:G:i's"|+1 hours}} restituisce l'ora CET (ora solare)
*<nowiki>{{#time:G:i's"|+2 hours}}</nowiki> → {{#time:G:i's"|+2 hours}} restituisce l'ora CEST (ora legale)
*<nowiki>{{#time:j F Y|-14 days}}</nowiki> restituisce {{#time:j F Y|-14 days}} (14 giorni fa)
*<nowiki>{{#time:H:i|+6 hours}}</nowiki> restituisce {{#time:H:i|+6 hours}} (6 ore più [[w:UTC|UTC]])
*<nowiki>{{#time:H:i|8:15 +6 hours}}</nowiki> restituisce {{#time:H:i|8:15 +6 hours}}
*<nowiki>{{#time:m/Y|-1 months}}</nowiki> restituisce {{#time:m/Y|-1 months}} (1 mese fa)
*<nowiki>{{#time:d/m|25 dicembre}}</nowiki> restituisce {{#time:d/m|25 Dicembre}} (25 dicembre)
*<nowiki>{{#time:d/m|December 25}}</nowiki> restituisce {{#time:d/m|December 25}} (25 dicembre)
 
==== Intervallo di validità ====
{{Vedi pedia|Bug dell'anno 2038}}
L'intervallo di date che vengono correttamente gestite da questa funzione va dal 1970-1-1 00:00:01 fino al 2038-1-19 03:14:07 (da 1 a 2<sup>31</sup> secondi dall'inizio del 1970).
 
==Percorsi==
 
=== urlencode ===
Converte il testo in formato compatibile con URL sostituendo gli spazi con "+" e gli altri caratteri di formattazione url coi loro equivalenti: con <nowiki>{{urlencode:hello world ?&=#/:}}</nowiki> si ottiene {{urlencode:hello world ?&=#/:}}.
 
===rel2abs===
Converte un percorso, sia esso un URL o il titolo di una sottopagina di Wikibooks, da relativo a assoluto. Sintassi:
 
:<nowiki>{{#rel2abs: percorso relativo | percorso base }}</nowiki>
 
Il primo parametro, come nei percorsi delle cartelle di Windows/Unix, può contenere una combinazione di:
*<tt>.</tt> (percorso attuale)
*<tt>..</tt> (livello superiore)
*<tt>/nome</tt> (nome sottopagina)
Il secondo parametro, se omesso, è il titolo della pagina attuale.
 
Con <tt><nowiki>{{#rel2abs: ../cccc | aaaaa/bbb }}</nowiki></tt> si ottiene <tt>{{#rel2abs: ../cccc | aaaaa/bbb }}</tt>
 
===titleparts===
Estrae da un percorso, sia esso un URL o il titolo di una sottopagina di Wikibooks, le componenti di diverso livello separate da "/". Sintassi:
 
:<nowiki>{{#titleparts: percorso | numero parti | parte iniziale }}</nowiki>
 
Il default è "tutte" per il numero parti e 1 per la parte iniziale. Numeri negativi permettono di contare partendo dal fondo (destra).
 
Con <tt><nowiki>{{#titleparts: aaaa/bbb/cc/ddd/ee | 3 | 2 }}</nowiki></tt> si ottiene <tt>{{#titleparts: aaaa/bbb/cc/ddd/ee | 3 | 2 }}</tt><br>
Con <tt><nowiki>{{#titleparts: http://wikibooks.org/yyy/zz | 3 | 1 }}</nowiki></tt> si ottiene {{#titleparts: http://wikibooks.org/yyy/zz | 3 | 1 }} (le // contano come due livelli)
 
Supporta un massimo di 25 livelli e 255 caratteri e non funziona con alcuni caratteri. Si consiglia di usarlo solo con i percorsi e non per altri "trucchi".
 
==tag==
La funzione <tt>tag</tt> genera un tag XML specifico del wikicodice, come <nowiki><ref> o <gallery></nowiki>, compreso il tag di chiusura. Sintassi:
<nowiki>{{#tag: <nome tag> | <contenuto> | <attributo1>=<valore1> | <attributo2>=<valore2> ... }}</nowiki>
Esempio:
<nowiki>{{#tag:ref|Contenuto|name=Nome}}</nowiki>
È equivalente a <tt><nowiki><ref name="Nome">Contenuto</ref></nowiki></tt> e restituisce: {{#tag:ref|Contenuto|name=Nome}}
 
La funzione è utile in particolare quando un template deve generare un tag che contiene a sua volta wikicodice complesso, perché assicura che il tag sia processato dopo il suo contenuto (altrimenti il contenuto potrebbe non funzionare). Assicura anche che eventuali tag presenti nel codice non eseguito (ad esempio la parte negata di un #if) non vengano erroneamente processati.
 
==Altro==
;invoke: vedi [[Aiuto:Moduli]]
;property: vedi [[w:Aiuto:Wikidata|Aiuto:Wikidata]] (su it.Wikipedia)
;gender: Funzione usata in genere nei template di avviso per utenti. Dato un nome utente, restituisce una stringa diversa a seconda del sesso dell'utente, se specificato nelle sue preferenze. Sintassi:<br> <nowiki>{{gender: nome | maschio | femmina | sconosciuto }}</nowiki><br>Se non si specifica un testo per "sconosciuto", il default è maschio. Se il nome è vuoto usa l'utente corrente.
 
<!-- TESTO COMMENTATO
 
Line 172 ⟶ 607:
* [http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/ParserFunctions/ ParserFunctions in MediaWiki SVN]
FINE TESTO COMMENTATO -->
== Altri progetti ==
Per informazioni tecniche complete e aggiornate vedi le pagine su mediawiki.org (in inglese):
{{ip|mw=Help:Extension:ParserFunctions|etichetta=Estensione:Funzioni parser}}
{{ip|mw=Help:Magic words#Parser functions}}
 
== Collegamenti esterni ==
* {{en}} [[m:ParserFunctions|La pagina completa su meta]]
* {{en}} [http://mail.wikipedia.org/pipermail/wikitech-l/2006-April/thread.html#34685 La discussione sulle ParserFunctions nell'archivio della lista Wikitech-l]
* {{en}} [http://mail.wikipedia.org/pipermail/wikitech-l/2006-April/034892.html ParserFunctions trial]
*{{en}} [[:en:Category:Templates using ParserFunctions]]
 
[[Categoria:Aiuto|ParserFunctions]]