Aiuto:Funzioni parser

Da Wikipedia, l'enciclopedia libera.

(Reindirizzamento da Aiuto:ParserFunctions)

Indice

Sportello informazioni


Questa estensione MediaWiki è una raccolta di funzioni parser. Sintassi:

{{#functionname: argomento 1 | argomento 2 | argomento 3...}}

Questa estensione supporta le funzioni: expr, if, ifeq, ifexpr e switch.

[modifica] expr

La funzione expr elabora operazioni matematiche. Gli operatori supportati (in ordine di precedenza) sono:

Operatore Operazione Esempio
* Moltiplicazione {{#expr: 30 * 7}} = 210
/ oppure div Divisione {{#expr: 30 / 7}} = 4.2857142857143
+ Addizione {{#expr: 30 + 7}} = 37
- Sottrazione (o negazione) {{#expr: 30 - 7}} = 23
mod Modulo, restituisce il resto di una divisione {{#expr: 30 mod 7}} = 2
round Arrotonda il numero a sinistra con il numero
di cifre decimali indicato dal numero a destra
{{#expr: 30 / 7 round 6}} = 4.285714
= Uguaglianza {{#expr: 30 = 7}} = 0
<> oppure != Disuguaglianza {{#expr: 30 <> 7}} = 1
< Minore {{#expr: 30 < 7}} = 0
> Maggiore {{#expr: 30 > 7}} = 1
<= Minore o uguale {{#expr: 30 <= 7}} = 0
>= Maggiore o uguale {{#expr: 30 >= 7}} = 1
and AND logico {{#expr: 30 and 7}} = 1
or OR logico {{#expr: 30 or 7}} = 1
not NOT logico {{#expr: not 7}} = 0
( ) Parentesi {{#expr: (30 + 7) * 7 }} = 259

Gli operatori booleani considerano 0 come falso e 1 come vero.

Esempio:

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

restituisce:

38

che è 100°F in °C, arrotondato al numero intero più vicino.

[modifica] if

La funzione if è un costrutto if-then-else. Sintassi:

{{ #if: <condizione> | <allora testo> | <altrimenti testo> }}

Se la condizione consiste in una stringa vuota o uno spazio bianco, allora è considerata falsa, e viene restituito altrimenti testo. Altrimenti, viene restituito allora testo. altrimenti testo può essere omesso: in tale caso il risultato sarà vuoto se l'espressione è falsa.

Esempio:

                      {{Template|parametro=qualcosa}}  {{Template}} {{Template|parametro=}}
                                     |                        |                |
                                     |                        |                |
                                     |                        |                |
{{ #if: {{{parametro|}}} | Parametro è indicato. | Parametro non è indicato, o è vuoto. }}

Notare che la funzione if non supporta il segno "=" o espressioni matematiche. {{#if: 1 = 2|sì|no}} restituirà "sì", perché la stringa "1 = 2" non è vuota. La funzione if è intesa come una funzione if defined. Per confrontare delle stringhe, usa ifeq. Per confrontare numeri, usa ifexpr.

[modifica] ifeq

La funzione ifeq confronta due stringhe, e ritorna un'altra stringa che dipende dal risultato del confronto. Sintassi:

{{ #ifeq: <testo 1> | <testo 2> | <se sono uguali restituisce questo> | <altrimenti questo> }}

[modifica] ifexpr

La funzione ifexpr risolve un'espressione matematica e restituisce un testo sulla base del risultato.

{{ #ifexpr: <espressione> | <allora testo> | <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 expr.

[modifica] ifexist

ifexist restituisce uno dei due risultati, basandosi sull'esistenza o meno di una data pagina.

{{#ifexist:Biologia|La voce [[biologia]] esiste!|La voce [[biologia]] non esiste.}} restituisce La voce biologia esiste! perché biologia esiste.
{{#ifexist:Aiuto:ParserFunctions|Sì|No}} restituisce .
{{#ifexist:m:Help:Calculation|Sì|Oops}} restituisce Oops sebbene m:Help:Calculation esista, a causa del prefisso di interwiki.

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.

[modifica] switch

La funzione switch confronta una stringa con altre, restituendo una data stringa se trova una corrispondenza. Sintassi:

 {{ #switch: <valore di confronto>
 | <valore1>=<risultato1>
 | <valore2>=<risultato2>
 | ...
 | <valoren>=<risultaton> 
 | <risultato di default>
 }}

switch cercherà tra tutti i valori dati finché non trova una corrispondenza. Quando la corrispondenza viene trovata, viene restituito il risultato assegnato a tale valore (il testo dopo il segno di uguale). Se non viene trovata alcuna corrispondenza, ma l'ultimo elemento non ha il segno di uguale, verrà restituito come valore di default.

È anche possibile assegnare un risultato a più valori, evitando di duplicare testo. Per esempio:

 {{ #switch: <valore di confronto>
 | <valore1>
 | <valore2>
 | <valore3>=<risultato3>
 | ...
 | <valoren>=<risultaton> 
 | <risultato di default>
 }}

Nota che valore1 e valore2 non contengono il simbolo uguale. Se si trovasse una corrispondenza con essi, verrebbe restituito il risultato assegnato a valore3 (risultato3).

[modifica] Numeri

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 la variabile {{NUMBEROFARTICLES}} usa la virgola per le migliaia, e in alcune versioni locali di MediaWiki il punto.

[modifica] Formattazione

riassunto veloce:

  • Prima Maiuscola: {{ucfirst:}} - Funzioni parser
  • prima minuscolo: {{lcfirst:}} - funzioni parser
  • TUTTO MAIUSCOLO: {{uc:}} - FUNZIONI PARSER
  • tutto minuscolo: {{lc:}} - funzioni parser

[modifica] lc

Acronimo di lower case (tutto minuscolo): trasforma un testo in caratteri minuscoli.

Con {{lc:AbCdEf}} si ottiene abcdef.
Con {{lc:Ä Β Ç}} si ottiene ä β ç, atteso ä β ç.

[modifica] uc

Acronimo di upper case (tutto maiuscolo): trasforma un testo in caratteri maiuscoli.

Con {{uc:AbCdEf}} si ottiene ABCDEF.
Con {{uc:ä β ß}} si ottiene Ä Β ß, atteso: Ä Β SS. Non aspettatevi troppo.

[modifica] lcfirst

Acronimo di lower case first (prima minuscola): trasforma in minuscolo il primo carattere di un testo: con {{lcfirst:Ab Cd}} si ottiene ab Cd.

[modifica] ucfirst

Acronimo di upper case first (prima maiuscola): trasforma in maiuscolo il primo carattere di un testo: con {{ucfirst:aB cD}} si ottiene AB cD.

[modifica] urlencode

Converte il testo in formato compatibile con URL sostituendo gli spazi con "+" e gli altri caratteri di formattazione url coi loro equivalenti: con {{urlencode:hello world ?&=#/:}} si ottiene hello+world+%3F%26%3D%23%2F%3A.


[modifica] time

La funzione time è un costrutto per la formattazione del tempo. Sintassi:

{{ #time: formato }}

o

{{ #time: formato | time }}

Se non è specificato un valore per time viene usata la data e ora della conversione in HTML della pagina. 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 ( &action=purge aggiunto all'url) oppure selezionare l'opzione che disabilita il caching delle pagine nelle proprie preferenze.

[modifica] Parametro formato

Il parametro formato è una stringa che utilizza una sintassi simile a quella usata nelle date in PHP [1].

formato veloce

  • {{#timel:j F Y}} - 26 giugno 2009
    • {{#timel: |Y-m-d}} - 2009-06-26
  • {{#timel:l j F Y G:s}} - venerdì 26 giugno 2009 4:38
  • {{#timel:D j M Y h:s a}} - ven 26 giu 2009 04:38 am
    • {{#timel: |Y-m-d H:s}} - 2009-06-26 04:38
Parametro Descrizione output equivalente con Variabili equivalenti
#time #timel Orario UTC 0rario locale
Anno
Y in 4 cifre 2009 2009 {{CURRENTYEAR}} {{LOCALTYEAR}}
y in 2 cifre 09 09 - -
L 1 se bisestile, 0 altrimenti 0 0 - -
Mese
F Nome completo giugno giugno {{CURRENTMONTHNAME}} {{LOCALMONTHNAME}}
M Nome abbreviato giu giu {{CURRENTMONTHABBREV}} {{LOCALMONTHABBREV}}
m Numero del mese (01 - 12) 06 06 {{CURRENTMONTH}} {{LOCALTMONTH}}
n Numero del mese (1 - 12) 6 6
t Numero di giorni del mese 30 {{#time-:t}}
Giorno
d Giorno del mese
(01 - 31).
26 26 {{CURRENTDAY2}} {{LOCALDAY2}}
j Giorno del mese (1 - 31). 26 26 {{CURRENTDAY}} {{LOCALDAY}}
z Giorno dell'anno (1 - 365) 176 176
l Nome completo venerdì venerdì {{CURRENTDAYNAME}} {{LOCALDAYNAME}}
D Nome abbreviato ven ven
N Giorno della settimana ISO 8601
(1 (Lunedì) - 7 (Domenica))
5 5 {{CURRENTWEEK}} {{LOCALWEEK}}
w Giorno della settimana
(0 (Domenica) - 6 (Sabato))
5 5
Settimane
W Settimana dell'anno
(1 - 52)
26 26 {{CURRENTWEEK}} {{LOCALWEEK}}
Orario
H:s Ora:minuti (00:00 - 23:59) 02:38 04:38 {{CURRENTTIME}} {{LOCALTIME}}
H Ora formato 24 ore (00 - 23) 02 04 {{CURRENTHOUR}} {{LOCALHOUR}}
G Ora formato 24 ore (0 - 23) 2 4
h Ora formato 12 ore (01 - 12) 02 04
g Ora formato 12ore (1 - 23) 2 4
a am o pm am am
A AM o PM AM AM
i Il minuto (00 - 59) 36 36
s Il secondo (00 - 59) 38 38

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: {{ #time: "Attualmente è" F}} → Attualmente è giugno
    • Errato: {{ #time: Attualmente è F}} → AM3030uamvenerdì06e630e è giugno
    • Singoli apici: {{ #time:G:i's"}} → 2:36'38"
  • Utilizzare il carattere di escape "\".
    • {{ #time:\H}} → H
    • {{ #time:\"}} → "


[modifica] 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 UTC usato per default all'orario CET o CEST usato in Italia. Per ulteriori informazioni vedere the GNU tar manual.

[modifica] Esempi

  • {{#time:G:i's"|+1 hours}} → 3:36'38" torna l'ora CET (ora solare)
  • {{#time:G:i's"|+2 hours}} → 4:36'38" torna l'ora CEST (ora legale)
  • {{#time:j F Y|-14 days}} ritorna 12 giugno 2009 (14 giorni fa)
  • {{#time:H:i|+6 hours}} ritorna 08:36 (6 ore più UTC)
  • {{#time:H:i|8:15 +6 hours}} ritorna 14:15
  • {{#time:m/Y|-1 months}} ritorna 05/2009 (1 mese fa)
  • {{#time:m/Y|11 dicembre}} ritorna Errore: orario non valido (11 dicembre)
  • {{#time:m/Y|December 11}} ritorna 12/2009 (11 dicembre)

[modifica] Intervallo di validità

Per approfondire, vedi la voce Problema 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 231 secondi dall'inizio del 1970).

[modifica] Vedi anche

[modifica] Collegamenti esterni

Strumenti personali