MarkupExpressions
Espressioni di Markup
Questo tipo di markup {(...)}
consente l’effettuazione al proprio interno di una quantità di operazioni di formattazione su stringhe. Le operazioni definite in questa ricetta includono substr, ftime, strlen, rand, mod, toupper / tolower, ucfirst, ucwords, pagename e asspaced.
Le espressioni di markup possono essere annidate, usando il markup {(...(...)...)}
.
substr
L’espressione "substr" estrae una porzione della stringa data. I suoi argomenti sono
- La stringa da processare: va sempre racchiusa tra virgolette
- La posizione iniziale della sottostringa. I caratteri sono contati in base zero (cioé, il primo carattere viene referenziato come carattere "0")
- Il numero di caratteri da estrarre
{(substr "PmWiki" 2 3)} {(substr "PmWiki" 2)} {(substr "PmWiki" 0 1)} {(substr "PmWiki" 0 -3)} {(substr "PmWiki" -3)} | Wik Wiki P PmW iki |
Per ottenere gli n' ultimi caratteri di una stringa si usi la notazione {(substr "string" -n)}
Per eliminare gli ultimi n' caratteri di una stringa si usi la notazione (substr "string" 0 -n)}
ftime
Le espressioni "ftime" si usano per formattare date e orari. La forma generica è
{(ftime "fmt" "when")}
{(ftime fmt="fmt" when="when")}
dove fmt la stringa di formattazione e when è la data da formattare. Gli argomenti possono essere passati in un ordine qualsiasi e opzionalmente si possono usare le etichette "fmt=" e "when=".
Esempi:
{(ftime)} {(ftime fmt="%F %H:%M")} {(ftime %Y)} {(ftime fmt=%T)} {(ftime when=tomorrow)} {(ftime fmt="%Y-%m-%d" yesterday)} {(ftime "+1 week" %F)} {(ftime fmt=%D "+1 month")} {(ftime fmt="%a%e %b" when="next week")} | November 22, 2024, at 05:53 AM 2024-11-22 05:53 2024 05:53:03 November 23, 2024, at 12:00 AM 2024-11-21 2024-11-29 12/22/24 Mon25 Nov |
Il parametro fmt consiste di quanto viene passato mediante "fmt=", del primo parametro che contiene un carattere '%', o anche del default del sito. I codici di formattazione sono descritti in http://php.net/strftime. Oltre a questi, '%F' produce date nel formato ISO-8601, e '%s' produce timestamp Unix. Alcune delle più comuni stringhe di formattazione sono:
%F # date ISO-8601 "2024-11-22" %s # timestamp Unix "1732279983" %H:%M:%S # orario hh:mm:ss "05:53:03" %m/%d/%Y # data mm/dd/yyyy "11/22/2024" "%A, %B %d, %Y" # con parole "Friday, November 22, 2024"
Il parametro when è in grado di comprendere svariati tipi di formati. Consiste di quanto viene passato mediante "when=", o della parte rimanente del parametro dopo che si è determinao il parametro format. Alcuni esempi:
2007-04-11 # date ISO-8601 20070411 # date senza caratteri intermedi 2007-03 # mesi @1176304315 # timestamp Unix (in secondi dal 1-Gen-1970 00:00 UTC) now # data e ora correnti today # oggi alle 00:00:00 yesterday # ieri alle @ 00:00:00 "next Monday" # date relative "last Thursday" # date relative "-3 days" # tre giorni fa "+2 weeks" # due settimane ad ora
Nota: Per convertire i timestamp Unix li si deve dotare del prefisso @, in questo modo, "{(ftime "%A, %B %d, %Y" @1231116927)}"
.
Il parametro when usa la funzione PHP strtotime per convertire le stringhe data conformemente ai formati di input delle date GNU; al momento della scrittura di queste istruzioni vengono supportati solo i formati di data in lingua inglese.
Si può usare la variabile $FTimeFmt
per modificare il formato di default usato dalla funzione "ftime": quello predefinito in $TimeFmt
è $TimeFmt
.
strlen
L’espressione "strlen" restituisce la lunghezza di una stringa: le va passata come argomento la stringa da misurare.
{(strlen "{$:Summary}")} | 39 |
rand
L’espressione "rand" restituisce un intero casuale. Il primo argomento rappresenta il limite inferiore, ed il secondo il limite superiore che il numero restituito può assumere. Se richiamata senza argomenti rand() restituisce un intero pseudo-random compreso tra 0 e RAND_MAX. Se si desidera un numero casuale compreso ta 5 e 15 si usi l’espressione (rand 5 15).
{(rand)} {(rand 1 99)} | 688687061 36 |
mod
L’espressione avanzata "mod" restituisce il modulo (resto) della divisione di due numeri. Può essere usato nei Modelli PageList? avanzati insieme a {$$PageCount}
per inserire del markup in ogni elemento (modulo), per esempio per creare delle righe di colore alternato in una tabella, o per inserirvi interruzioni di riga. (Vedere anche PageLists?, Stili wiki e ConditionalMarkup?)
>>comment<< %define=bg1 item bgcolor=#f88% %define=bg2 item bgcolor=#ff8% %define=bg0 item bgcolor=#8f8% [[#altrows]] * %bg{(mod {$$PageCount} 3)}% {=$Name} ({$$PageCount}) [[#altrowsend]] >><< (:pagelist fmt=#altrows group=PmWiki count=10:) |
|
toupper / tolower
Le espressioni "toupper" e "tolower" convertono una stringa rispettivamente in maiuscolo e minuscolo: va passata loro come argomento la stringa da convertire.
{(toupper "{$:Summary}")} {(tolower "{$:Summary}")} | OPERAZIONI DI FORMATTAZIONE SU STRINGHE operazioni di formattazione su stringhe |
ucfirst / ucwords
L’espressione "ucfirst" converte in maiuscolo il primo carattere di una stringa specificata, and "ucwords", the first character of each word: le va passata come argomento la stringa da processare.
{(ucfirst "{$:Summary}")} {(ucwords "{$:Summary}")} | Operazioni di formattazione su stringhe Operazioni Di Formattazione Su Stringhe |
pagename
L’espressione "pagename" costruisce il nome della pagina a partire dalla stringa specificata come argomento.
{(pagename "{$:Summary}")} | PmWikiIt.OperazioniDiFormattazioneSuStringhe |
asspaced
L’espressione "asspaced" formatta le wikiword: le va passata come argomento la stringa da processare.
{(asspaced "{$FullName}")} | Pm Wiki It.Markup Expressions |
Annidamento di espressioni
Le espressioni di markup possono essere annidate. Le parentesi graffe vanno omesse nelle espressioni interne::
{(tolower (substr "Hello World" 2))} | llo world |
Note
- Nelle versioni di PmWiki fino alla 2.2.33, le espressioni per il trattamento delle stringhe potrebbero non funzionare correttamente con caratteri UTF-8 multibyte. Le versioni più recenti dovrebbero invece comportarsi correttamente.
Vedere anche:
- PageVariables?, PageTextVariables?
- ConditionalMarkup?
- + — esempi di espressioni di markup personalizzate
- +
Traduzione di PmWiki.MarkupExpressions -
Pagina originale: PmWikiIt.MarkupExpressions -
Backlinks
Ultime modifiche:
PmWikiIt.MarkupExpressions: June 29, 2015, at 02:00 PM
PmWiki.MarkupExpressions: October 29, 2022, at 08:58 PM