TOML
[Tom's Obvious Minimal Language]
Un format de fichier de configuration
pour les humains
TOML est un format de fichier de configuration minimal facile à lire grâce à une sémantique claire. Il est conçu pour correspondre sans ambiguïté à une table de hachage et doit être facile à représenter dans de nombreux langages.
# Voici un document TOML
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00
[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
data = [ ["delta", "phi"], [3.14] ]
temp_targets = { cpu = 79.5, case = 72.0 }
[servers]
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"
[servers.beta]
ip = "10.0.0.2"
role = "backend"
-
-
TOML est un format de fichier de configuration minimal qui :
- est facile à lire grâce à une semantique claire
- correspond sans ambiguïté à une table de hachage
- est facile à représenter dans de nombreux langages
-
-
- Paire clé/valeur
- Tableau
- Table
- Table "inline"
- Tableau de tables
- Entier & nombre à virgule flottante
- Booléen
- Date & heure, avec offset optionnel
-
-
TOML a déjà des implementations dans la plupart des plus populaires langages de programmation actuels : C, C#, C++, Clojure, Dart, Elixir, Erlang, Go, Haskell, Java, JavaScript, Lua, Objective-C, Perl, PHP, Python, Ruby, Rust, Scala, Swift, … et plein d'autres.
Un tour rapide de TOML
Comments
TOML pense que tous les fichiers de configuration devraient supporter les commentaires.
# Ceci est un commentaire TOML
# Ceci est un commentaire
# TOML multi-ligne
Des chaînes puissantes
Il existe quatre façons d'exprimer des chaînes : basique, basique multi-ligne, littérale et littérale multi-ligne. Les chaînes basiques sont encadrées par des guillemets :
str1 = "Je suis une chaîne de caractères."
str2 = "Vous pouvez me \"citer\"."
str3 = "Name\tJos\u00E9\nLoc\tSF."
Les chaînes basiques multi-ligne sont encadrées par trois guillemets et autorisent les sauts de ligne. Inclure une barre oblique inverse en fin de ligne supprime tous les blancs subséquents :
str1 = """
Les roses sont rouges
Les violettes sont bleues"""
str2 = """\
The quick brown \
fox jumps over \
the lazy dog.\
"""
# str2 est équivalent à :
str3 = "The quick brown fox jumps over the lazy dog."
Les chaînes littérales sont encadrées par des guillemets simples. Aucun échappement n'est effectué, vous obtenez ce que vous voyez :
path = 'C:\Users\nodejs\templates'
path2 = '\\User\admin$\system32'
quoted = 'Tom "Dubs" Preston-Werner'
regex = '<\i\c*\s*>'
Comme il n'y a pas d'échappement possible, il n'est pas possible d'écrire un guillemet simple dans une chaîne littérale encardée par des guillemets simples. C'est là que les chaînes littérales multi-ligne entrent en jeu :
re = '''I [dw]on't need \d{2} apples'''
lines = '''
Le premier saut de ligne est ignoré
dans les chaînes littérales.
Tous les autres caractères blancs
sont conservés.
'''
Les nombres
Entiers, flottants, infini, et même NaN sont tous supportés. Vous pouvez même utiliser la notation scientifique et le séparateur de milliers.
# les entiers
int1 = +99
int2 = 42
int3 = 0
int4 = -17
# hexadécimal avec le préfixe `0x`
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
hex3 = 0xdead_beef
# octal avec le préfixe `0o`
oct1 = 0o01234567
oct2 = 0o755
# binaire avec le préfixe `0b`
bin1 = 0b11010110
# décimal
float1 = +1.0
float2 = 3.1415
float3 = -0.01
# exposant
float4 = 5e+22
float5 = 1e06
float6 = -2E-2
# les deux
float7 = 6.626e-34
# les séparateurs
float8 = 224_617.445_991_228
# l'infini
infinite1 = inf # infini positif
infinite2 = +inf # infini positif
infinite3 = -inf # infini négatif
# Not A Number (NaN)
not1 = nan
not2 = +nan
not3 = -nan
Dates et heures
OML prend en charge les dates, les heures et les dates-heures avec et sans offset.
# date-heure avec décalage
odt1 = 1979-05-27T07:32:00Z
odt2 = 1979-05-27T00:32:00-07:00
odt3 = 1979-05-27T00:32:00.999999-07:00
# dates-heures local
ldt1 = 1979-05-27T07:32:00
ldt2 = 1979-05-27T00:32:00.999999
# date locale
ld1 = 1979-05-27
# heure locale
lt1 = 07:32:00
lt2 = 00:32:00.999999
Plus de précisions
TOML prend en charge encore plus de types et de syntaxes natifs, lisez tout à ce sujet
Commencer à coder
TOML est déjà implémenté dans plus de 40 langages de programmation