v1.0.0

TOML

[Tom's Obvious Minimal Language]

Un format de fichier de configuration
pour les humains

# 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 donne la priorité à l'humain

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
TOML a des types natifs utiles
  • Paire clé/valeur
  • Tableau
  • Table
  • Table "inline"
  • Tableau de tables
  • Entier & nombre à virgule flottante
  • Booléen
  • Date & heure, avec offset optionnel
TOML est largement supporté

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