2024-04-04 07:27:01 +00:00
|
|
|
---
|
|
|
|
filename: learntoml-it.toml
|
|
|
|
contributors:
|
|
|
|
- ["Alois de Gouvello", "https://github.com/aloisdg"]
|
|
|
|
translators:
|
|
|
|
- ["Christian Grasso", "https://grasso.io"]
|
|
|
|
---
|
|
|
|
|
|
|
|
TOML è l'acronimo di _Tom's Obvious, Minimal Language_. È un linguaggio per la
|
|
|
|
serializzazione di dati, progettato per i file di configurazione.
|
|
|
|
|
|
|
|
È un'alternativa a linguaggi come YAML e JSON, che punta ad essere più leggibile
|
|
|
|
per le persone. Allo stesso tempo, TOML può essere utilizzato in modo abbastanza
|
|
|
|
semplice nella maggior parte dei linguaggi di programmazione, in quanto è
|
|
|
|
progettato per essere tradotto senza ambiguità in una hash table.
|
|
|
|
|
|
|
|
Tieni presente che TOML è ancora in fase di sviluppo, e la sua specifica non è
|
|
|
|
ancora stabile. Questo documento utilizza TOML 0.4.0.
|
|
|
|
|
|
|
|
```toml
|
|
|
|
# I commenti in TOML sono fatti così.
|
|
|
|
|
|
|
|
################
|
|
|
|
# TIPI SCALARI #
|
|
|
|
################
|
|
|
|
|
|
|
|
# Il nostro oggetto root (corrispondente all'intero documento) sarà una mappa,
|
|
|
|
# anche chiamata dizionario, hash o oggetto in altri linguaggi.
|
|
|
|
|
|
|
|
# La key, il simbolo di uguale e il valore devono trovarsi sulla stessa riga,
|
|
|
|
# eccetto per alcuni tipi di valori.
|
|
|
|
key = "value"
|
|
|
|
stringa = "ciao"
|
|
|
|
numero = 42
|
|
|
|
float = 3.14
|
|
|
|
boolean = true
|
|
|
|
data = 1979-05-27T07:32:00-08:00
|
|
|
|
notazScientifica = 1e+12
|
|
|
|
"puoi utilizzare le virgolette per la key" = true # Puoi usare " oppure '
|
|
|
|
"la key può contenere" = "lettere, numeri, underscore e trattini"
|
|
|
|
|
|
|
|
############
|
|
|
|
# Stringhe #
|
|
|
|
############
|
|
|
|
|
|
|
|
# Le stringhe possono contenere solo caratteri UTF-8 validi.
|
|
|
|
# Possiamo effettuare l'escape dei caratteri, e alcuni hanno delle sequenze
|
|
|
|
# di escape compatte. Ad esempio, \t corrisponde al TAB.
|
|
|
|
stringaSemplice = "Racchiusa tra virgolette. \"Usa il backslash per l'escape\"."
|
|
|
|
|
|
|
|
stringaMultiriga = """
|
|
|
|
Racchiusa da tre virgolette doppie all'inizio e
|
|
|
|
alla fine - consente di andare a capo."""
|
|
|
|
|
|
|
|
stringaLiteral = 'Virgolette singole. Non consente di effettuare escape.'
|
|
|
|
|
|
|
|
stringaMultirigaLiteral = '''
|
|
|
|
Racchiusa da tre virgolette singole all'inizio e
|
|
|
|
alla fine - consente di andare a capo.
|
|
|
|
Anche in questo caso non si può fare escape.
|
|
|
|
Il primo ritorno a capo viene eliminato.
|
|
|
|
Tutti gli altri spazi aggiuntivi
|
|
|
|
vengono mantenuti.
|
|
|
|
'''
|
|
|
|
|
|
|
|
# Per i dati binari è consigliabile utilizzare Base64 e
|
|
|
|
# gestirli manualmente dall'applicazione.
|
|
|
|
|
|
|
|
##########
|
|
|
|
# Interi #
|
|
|
|
##########
|
|
|
|
|
|
|
|
## Gli interi possono avere o meno un segno (+, -).
|
|
|
|
## Non si possono inserire zero superflui all'inizio.
|
|
|
|
## Non è possibile inoltre utilizzare valori numerici
|
|
|
|
## non rappresentabili con una sequenza di cifre.
|
|
|
|
int1 = +42
|
|
|
|
int2 = 0
|
|
|
|
int3 = -21
|
|
|
|
|
|
|
|
## Puoi utilizzare gli underscore per migliorare la leggibilità.
|
|
|
|
## Fai attenzione a non inserirne due di seguito.
|
|
|
|
int4 = 5_349_221
|
|
|
|
int5 = 1_2_3_4_5 # VALIDO, ma da evitare
|
|
|
|
|
|
|
|
#########
|
|
|
|
# Float #
|
|
|
|
#########
|
|
|
|
|
|
|
|
# I float permettono di rappresentare numeri decimali.
|
|
|
|
flt1 = 3.1415
|
|
|
|
flt2 = -5e6
|
|
|
|
flt3 = 6.626E-34
|
|
|
|
|
|
|
|
###########
|
|
|
|
# Boolean #
|
|
|
|
###########
|
|
|
|
|
|
|
|
# I valori boolean (true/false) devono essere scritti in minuscolo.
|
|
|
|
bool1 = true
|
|
|
|
bool2 = false
|
|
|
|
|
|
|
|
############
|
|
|
|
# Data/ora #
|
|
|
|
############
|
|
|
|
|
|
|
|
data1 = 1979-05-27T07:32:00Z # Specifica RFC 3339/ISO 8601 (UTC)
|
|
|
|
data2 = 1979-05-26T15:32:00+08:00 # RFC 3339/ISO 8601 con offset
|
|
|
|
|
|
|
|
######################
|
|
|
|
# TIPI DI COLLECTION #
|
|
|
|
######################
|
|
|
|
|
|
|
|
#########
|
|
|
|
# Array #
|
|
|
|
#########
|
|
|
|
|
|
|
|
array1 = [ 1, 2, 3 ]
|
|
|
|
array2 = [ "Le", "virgole", "sono", "delimitatori" ]
|
|
|
|
array3 = [ "Non", "unire", "tipi", "diversi" ]
|
|
|
|
array4 = [ "tutte", 'le stringhe', """hanno lo stesso""", '''tipo''' ]
|
|
|
|
array5 = [
|
|
|
|
"Gli spazi vuoti", "sono", "ignorati"
|
|
|
|
]
|
|
|
|
|
|
|
|
###########
|
|
|
|
# Tabelle #
|
|
|
|
###########
|
|
|
|
|
|
|
|
# Le tabelle (o hash table o dizionari) sono collection di coppie key/value.
|
|
|
|
# Iniziano con un nome tra parentesi quadre su una linea separata.
|
|
|
|
# Le tabelle vuote (senza alcun valore) sono valide.
|
|
|
|
[tabella]
|
|
|
|
|
|
|
|
# Tutti i valori che si trovano sotto il nome della tabella
|
|
|
|
# appartengono alla tabella stessa (finchè non ne viene creata un'altra).
|
|
|
|
# L'ordine di questi valori non è garantito.
|
|
|
|
[tabella-1]
|
|
|
|
key1 = "una stringa"
|
|
|
|
key2 = 123
|
|
|
|
|
|
|
|
[tabella-2]
|
|
|
|
key1 = "un'altra stringa"
|
|
|
|
key2 = 456
|
|
|
|
|
|
|
|
# Utilizzando i punti è possibile creare delle sottotabelle.
|
|
|
|
# Ogni parte suddivisa dai punti segue le regole delle key per il nome.
|
|
|
|
[tabella-3."sotto.tabella"]
|
|
|
|
key1 = "prova"
|
|
|
|
|
|
|
|
# Ecco l'equivalente JSON della tabella precedente:
|
|
|
|
# { "tabella-3": { "sotto.tabella": { "key1": "prova" } } }
|
|
|
|
|
|
|
|
# Gli spazi non vengono considerati, ma è consigliabile
|
|
|
|
# evitare di usare spazi superflui.
|
|
|
|
[a.b.c] # consigliato
|
|
|
|
[ d.e.f ] # identico a [d.e.f]
|
|
|
|
|
|
|
|
# Non c'è bisogno di creare le tabelle superiori per creare una sottotabella.
|
|
|
|
# [x] queste
|
|
|
|
# [x.y] non
|
|
|
|
# [x.y.z] servono
|
|
|
|
[x.y.z.w] # per creare questa tabella
|
|
|
|
|
|
|
|
# Se non è stata già creata prima, puoi anche creare
|
|
|
|
# una tabella superiore più avanti.
|
|
|
|
[a.b]
|
|
|
|
c = 1
|
|
|
|
|
|
|
|
[a]
|
|
|
|
d = 2
|
|
|
|
|
|
|
|
# Non puoi definire una key o una tabella più di una volta.
|
|
|
|
|
|
|
|
# ERRORE
|
|
|
|
[a]
|
|
|
|
b = 1
|
|
|
|
|
|
|
|
[a]
|
|
|
|
c = 2
|
|
|
|
|
|
|
|
# ERRORE
|
|
|
|
[a]
|
|
|
|
b = 1
|
|
|
|
|
|
|
|
[a.b]
|
|
|
|
c = 2
|
|
|
|
|
|
|
|
# I nomi delle tabelle non possono essere vuoti.
|
|
|
|
[] # NON VALIDO
|
|
|
|
[a.] # NON VALIDO
|
|
|
|
[a..b] # NON VALIDO
|
|
|
|
[.b] # NON VALIDO
|
|
|
|
[.] # NON VALIDO
|
|
|
|
|
|
|
|
##################
|
|
|
|
# Tabelle inline #
|
|
|
|
##################
|
|
|
|
|
|
|
|
tabelleInline = { racchiuseData = "{ e }", rigaSingola = true }
|
|
|
|
punto = { x = 1, y = 2 }
|
|
|
|
|
|
|
|
####################
|
|
|
|
# Array di tabelle #
|
|
|
|
####################
|
|
|
|
|
|
|
|
# Un array di tabelle può essere creato utilizzando due parentesi quadre.
|
|
|
|
# Tutte le tabelle con questo nome saranno elementi dell'array.
|
|
|
|
# Gli elementi vengono inseriti nell'ordine in cui si trovano.
|
|
|
|
|
|
|
|
[[prodotti]]
|
|
|
|
nome = "array di tabelle"
|
|
|
|
sku = 738594937
|
|
|
|
tabelleVuoteValide = true
|
|
|
|
|
|
|
|
[[prodotti]]
|
|
|
|
|
|
|
|
[[prodotti]]
|
|
|
|
nome = "un altro item"
|
|
|
|
sku = 284758393
|
|
|
|
colore = "grigio"
|
|
|
|
|
|
|
|
# Puoi anche creare array di tabelle nested. Le sottotabelle con doppie
|
|
|
|
# parentesi quadre apparterranno alla tabella più vicina sopra di esse.
|
|
|
|
|
|
|
|
[[frutta]]
|
|
|
|
nome = "mela"
|
|
|
|
|
|
|
|
[frutto.geometria]
|
|
|
|
forma = "sferica"
|
|
|
|
nota = "Sono una proprietà del frutto"
|
|
|
|
|
|
|
|
[[frutto.colore]]
|
|
|
|
nome = "rosso"
|
|
|
|
nota = "Sono un oggetto di un array dentro mela"
|
|
|
|
|
|
|
|
[[frutto.colore]]
|
|
|
|
nome = "verde"
|
|
|
|
nota = "Sono nello stesso array di rosso"
|
|
|
|
|
|
|
|
[[frutta]]
|
|
|
|
nome = "banana"
|
|
|
|
|
|
|
|
[[frutto.colore]]
|
|
|
|
nome = "giallo"
|
|
|
|
nota = "Anche io sono un oggetto di un array, ma dentro banana"
|
|
|
|
```
|
|
|
|
|
|
|
|
Ecco l'equivalente JSON dell'ultima tabella:
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"frutta": [
|
|
|
|
{
|
|
|
|
"nome": "mela",
|
|
|
|
"geometria": { "forma": "sferica", "nota": "..."},
|
|
|
|
"colore": [
|
|
|
|
{ "nome": "rosso", "nota": "..." },
|
|
|
|
{ "nome": "verde", "nota": "..." }
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"nome": "banana",
|
|
|
|
"colore": [
|
|
|
|
{ "nome": "giallo", "nota": "..." }
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
### Altre risorse
|
|
|
|
|
|
|
|
+ [Repository ufficiale di TOML](https://github.com/toml-lang/toml)
|