Aiuto:Funzioni parser: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Wim bot (discussione | contributi)
Riga 14:
== expr ==
 
La funzione <ttkbd>expr</ttkbd> elabora operazioni matematiche. Gli operatori supportati (in ordine di precedenza) sono:
{| class="wikitable"
! Operatore
Riga 125:
|}
 
I numeri devono essere inseriti in notazione informatica, senza separatori di migliaia e con il punto come separatore decimale, ad es. <ttkbd>12345.67</ttkbd>; 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.
Riga 142:
 
== if ==
La funzione <ttkbd>if</ttkbd> è un costrutto if-then-else. Sintassi:
 
<nowiki>{{</nowiki> #if: ''&lt;condizione>'' | ''&lt;allora testo>'' | ''&lt;altrimenti testo>'' }}
Riga 155:
<nowiki>{{ #if: {{{parametro|}}} | Parametro è indicato. | Parametro non è indicato, o è vuoto. }}</nowiki>
 
Notare che la funzione <ttkbd>if</ttkbd> '''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 <ttkbd>if</ttkbd> è intesa come una funzione <ttkbd>if defined</ttkbd>. Per confrontare delle stringhe, usa <ttkbd>ifeq</ttkbd>. Per confrontare numeri, usa <ttkbd>ifexpr</ttkbd>.
 
Per verificare che sia vera una condizione '''oppure''' un'altra si può scrivere:
Riga 165:
== ifeq ==
 
La funzione <ttkbd>ifeq</ttkbd> confronta due stringhe, e ritorna un'altra stringa che dipende dal risultato del confronto. Sintassi:
 
<nowiki>{{</nowiki> #ifeq: ''&lt;testo 1>'' | ''&lt;testo 2>'' | ''&lt;se sono uguali restituisce questo>'' | ''&lt;altrimenti questo>'' }}
== iferror ==
La funzione <ttkbd>iferror</ttkbd> 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 <ttkbd>class="error"</ttkbd> (che può essere generato da altre funzioni parser come <ttkbd>[[#expr]]</ttkbd> e <ttkbd>[[#time]]</ttkbd> 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>
Riga 176:
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:
 
:<ttkbd><nowiki>{{#iferror: {{#expr: 1 + 2 }} | errore | corretta }}</nowiki></ttkbd> → '''{{#iferror: {{#expr: 1 + 2 }} | errore | corretta }}'''
:<ttkbd><nowiki>{{#iferror: {{#expr: 1 + X }} | errore | corretta }}</nowiki></ttkbd> → '''{{#iferror: {{#expr: 1 + X }} | errore | corretta }}'''
:<ttkbd><nowiki>{{#iferror: {{#expr: 1 + 2 }} | errore }}</nowiki></ttkbd> → '''{{#iferror: {{#expr: 1 + 2 }} | errore }}'''
:<ttkbd><nowiki>{{#iferror: {{#expr: 1 + X }} | errore }}</nowiki></ttkbd> → '''{{#iferror: {{#expr: 1 + X }} | errore }}'''
:<ttkbd><nowiki>{{#iferror: {{#expr: 1 + 2 }} }}</nowiki></ttkbd> → '''{{#iferror: {{#expr: 1 + 2 }} }}'''
:<ttkbd><nowiki>{{#iferror: {{#expr: 1 + X }} }}</nowiki></ttkbd> → '''&zwnj;{{#iferror: {{#expr: 1 + X }} }}'''
:<ttkbd><nowiki>{{#iferror: <strong class="error">a</strong> | errore | corretta }}</nowiki></ttkbd> → '''{{#iferror: <strong class="error">a</strong> | errore | corretta }}'''
 
== ifexpr ==
 
La funzione <ttkbd>ifexpr</ttkbd> risolve un'espressione matematica e restituisce un testo sulla base del risultato.
 
<nowiki>{{</nowiki> #ifexpr: ''&lt;espressione>'' | ''&lt;allora testo>'' | ''&lt;altrimenti testo>'' }}
 
Se l'espressione risulta 0, allora viene restituito ''altrimenti testo'', in caso contrario viene restituito ''allora testo''. La sintassi delle espressioni è la stessa di <ttkbd>expr</ttkbd>.
 
== ifexist ==
 
<ttkbd>ifexist</ttkbd> restituisce uno dei due risultati, basandosi sull'esistenza o meno di una data pagina.
 
:<code><nowiki>{{#ifexist:Biologia|La voce [[biologia]] esiste!|La voce [[biologia]] non esiste.}}</nowiki></code> restituisce ''{{#ifexist:Biologia|La voce [[biologia]] esiste!|La voce [[biologia]] non esiste.}}'' perché [[biologia]] {{#ifexist:Biologia|esiste|non esiste}}.
Riga 247:
=== Maiuscole e minuscole ===
riassunto veloce:
* Prima maiuscola: <code><nowiki>{{ucfirst:}}</nowiki></code> - <ttkbd>{{ucfirst:{{PAGENAME}}}}</ttkbd>
* prima minuscola: <code><nowiki>{{lcfirst:}}</nowiki></code> - <ttkbd>{{lcfirst:{{PAGENAME}}}}</ttkbd>
* TUTTO MAIUSCOLO: <code><nowiki>{{uc:}}</nowiki></code> - <ttkbd>{{uc:{{PAGENAME}}}}</ttkbd>
* tutto minuscolo: <code><nowiki>{{lc:}}</nowiki></code> - <ttkbd>{{lc:{{PAGENAME}}}}</ttkbd>
 
==== lc ====
Riga 275:
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. <ttkbd>12345.67</ttkbd>, come quelli dati in input e restituiti in output da [[#expr|#expr]].
 
Con <ttkbd><nowiki>{{formatnum:1234.56}}</nowiki></ttkbd> si ottiene {{formatnum:1234.56}}
 
Con <ttkbd><nowiki>{{formatnum:1234567.8901234}}</nowiki></ttkbd> 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 <ttkbd><nowiki>{{formatnum:''I numeri sono 1234 e 5678<ref>Prova.</ref>''}}</nowiki></ttkbd> si ottiene {{formatnum:''I numeri sono 1234 e 5678<ref>Prova.</ref>''}}
 
È possibile fare l'operazione contraria aggiungendo R come secondo parametro: con <ttkbd><nowiki>{{formatnum:1 234 567,89|R}}</nowiki></ttkbd> si ottiene {{formatnum:1 234 567,89|R}} (gli spazi non sono spazi normali ma caratteri di spazio unificatore).
 
=== padleft e padright ===
Riga 292:
:<nowiki>{{padleft: stringa | lunghezza | riempimento}}</nowiki>
 
Con <ttkbd><nowiki>{{padleft:ciao|10|+-}}</nowiki></ttkbd> si ottiene <ttkbd>{{padleft:ciao|10|+-}}</ttkbd>
 
<ttkbd>padright</ttkbd> ha lo stesso effetto ma riempie il lato destro. Esempio: <ttkbd><nowiki>{{padright:ciao|10|+-}}</nowiki></ttkbd> genera: <ttkbd>{{padright:ciao|10|+-}}</ttkbd>
 
<ttkbd>padleft</ttkbd> o <ttkbd>padright</ttkbd> può essere sfruttato per ottenere i primi N caratteri di una stringa di lunghezza &#x2265; N: con <ttkbd><nowiki>{{padleft:|3|Tizio}}</nowiki></ttkbd> si ottiene <ttkbd>{{padleft:|3|Tizio}}</ttkbd>
 
=== plural ===
Riga 303:
:<nowiki>{{plural: N | singolare | plurale }}</nowiki>
 
Con <ttkbd><nowiki>{{plural:3|casa|case}}</nowiki></ttkbd> si ottiene <ttkbd>{{plural:3|casa|case}}</ttkbd>
 
Il default con parametro vuoto o non riconosciuto è "plurale". "1" seguito da altre parole e "-1" sono riconosciuti come singolare.
 
== time ==
La funzione <ttkbd>time</ttkbd> è un costrutto per la formattazione del tempo. Sintassi:
 
<nowiki>{{</nowiki> #time: ''formato'' <nowiki>}}</nowiki>
Riga 316:
<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 (<ttkbd>&action=purge</ttkbd> aggiunto all'url) oppure selezionare l'opzione che disabilita il caching delle pagine nelle proprie preferenze.
 
La funzione <ttkbd>#timel</ttkbd> è 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 ====
Riga 324:
 
formato veloce
*<code><nowiki>{{#timel:j F Y}}</nowiki></code> - <ttkbd>{{#timel:j F Y}}</ttkbd>
*<code><nowiki>{{#timel:Y-m-d}}</nowiki></code> - <ttkbd>{{#timel:Y-m-d}}</ttkbd>
*<code><nowiki>{{#timel:l j F Y G:s}}</nowiki></code> - <ttkbd>{{#timel:l j F Y G:s}}</ttkbd>
*<code><nowiki>{{#timel:D j M Y h:s a}}</nowiki></code> - <ttkbd>{{#timel:D j M Y h:s a}}</ttkbd>
*<code><nowiki>{{#timel:Y-m-d H:s}}</nowiki></code> - <ttkbd>{{#timel:Y-m-d H:s}}</ttkbd>
 
{| class="wikitable"
Riga 557:
 
Il primo parametro, come nei percorsi delle cartelle di Windows/Unix, può contenere una combinazione di:
*<ttkbd>.</ttkbd> (percorso attuale)
*<ttkbd>..</ttkbd> (livello superiore)
*<ttkbd>/nome</ttkbd> (nome sottopagina)
Il secondo parametro, se omesso, è il titolo della pagina attuale.
 
Con <ttkbd><nowiki>{{#rel2abs: ../cccc | aaaaa/bbb }}</nowiki></ttkbd> si ottiene <ttkbd>{{#rel2abs: ../cccc | aaaaa/bbb }}</ttkbd>
 
===titleparts===
Riga 571:
Il default è "tutte" per il numero parti e 1 per la parte iniziale. Numeri negativi permettono di contare partendo dal fondo (destra).
 
Con <ttkbd><nowiki>{{#titleparts: aaaa/bbb/cc/ddd/ee | 3 | 2 }}</nowiki></ttkbd> si ottiene <ttkbd>{{#titleparts: aaaa/bbb/cc/ddd/ee | 3 | 2 }}</ttkbd><br>
Con <ttkbd><nowiki>{{#titleparts: http://wikibooks.org/yyy/zz | 3 | 1 }}</nowiki></ttkbd> 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 <ttkbd>tag</ttkbd> 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 <ttkbd><nowiki><ref name="Nome">Contenuto</ref></nowiki></ttkbd> 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.