Markup Expressions

authors (advanced)

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

  1. La stringa da processare: va sempre racchiusa tra virgolette
  2. La posizione iniziale della sottostringa. I caratteri sono contati in base zero (cioé, il primo carattere viene referenziato come carattere "0")
  3. 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")}
 2024-11-14
 2024-11-14 01:50
 2024
 01:50:19
 2024-11-15
 2024-11-13
 2024-11-21
 12/14/24
 Mon18 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-14"
     %s                # timestamp Unix      "1731567019"
     %H:%M:%S          # orario hh:mm:ss     "01:50:19"
     %m/%d/%Y          # data mm/dd/yyyy     "11/14/2024"
     "%A, %B %d, %Y"   # con parole          "Thursday, November 14, 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)}
 1568211143
 95

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:)

  • {=$Name} ({$$PageCount})

  • AccessKeys (1)
  • AdminTask (2)
  • AnalyzeResults (3)
  • AQ (4)
  • Audiences (5)
  • AuthoringPhilosophy (6)
  • AuthorTracking (7)
  • AuthUser (8)
  • AvailableActions (9)
  • BackupAndRestore (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:


Traduzione di PmWiki.MarkupExpressions - Pagina originale: PmWikiIt.MarkupExpressions - Backlinks
Ultime modifiche:
PmWikiIt.MarkupExpressions: 2015-06-29
PmWiki.MarkupExpressions: 2022-10-29