Aiuto:Funzioni parser
Da Wikipedia, l'enciclopedia libera.
|
|
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 Sì.{{#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).

