Rozszerzenia pliku |
.toml |
---|---|
Typ MIME |
Nie zarejestrowany[1] |
Data opracowania |
23 II 2013 |
Ostatnia wersja |
v1.0.0 (11 stycznia, 2021) |
Otwarty format? |
tak |
Strona internetowa |
TOML – format plików konfiguracyjnych. Stworzony został z myślą o łatwości czytania i pisania dzięki oczywistej semantyce, która stawia sobie za cel „minimalizm” i ma na celu jednoznaczne mapowanie do słownika. Jego specyfikacja jest typu open source i jest wspierana przez wkład od społeczności. TOML jest używany w wielu projektach oprogramowania[2][3] i jest zaimplementowany w wielu językach programowania[4]. Nazwa „TOML” to skrót od „Tom's Obvious, Minimal Language”[5], odnoszący się do jego twórcy, Toma Prestona-Wernera.
Składnia TOML składa się głównie z par klucz = "wartość"
, [nazwa sekcji]
i # komentarz
. Składnia TOML nieco przypomina składnię plików INI, ale w przeciwieństwie do nich zawiera formalną specyfikację, podczas gdy format pliku INI posiada wiele konkurencyjnych wariantów.
Jego specyfikacja zawiera listę obsługiwanych typów danych: String, Integer, Float, Boolean, Datetime, Array i Table.
# To jest przykładowy dokument TOML
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # Data
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
# Wcięcia (tab lub spacje) są dozwolone ale nie wymagane
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
# Wewnątrz tablic można łamać linie
hosts = [
"alpha",
"omega"
]
Poniższa tabela opiera się na specyfikacji TOML i jest porównaniem z innymi popularnymi formatami plików konfiguracyjnych (INI, JSON i YAML). Na konferencji SciPy 2017 został zaprezentowany język BespON[6] jako format pliku konfiguracyjnego odpowiedniego dla modelowania i symulacji. Pojawiło się tam także omówienie możliwości wykorzystania do tego celu języka TOML[7].
Format | Formalny standard | Elastyczny standard | Silnie typowany | Łatwa implementacja | Czytelny dla człowieka | Pozwala na komentarze |
---|---|---|---|---|---|---|
JSON | Tak | Nie | Tak | Tak | Tak | Nie |
YAML | Tak | Nie | Tak | Tak | Tak | Tak |
TOML | Tak | Nie | Tak | Tak | Tak | Tak |
INI | Nie | Tak | Nie | Tak | Tak | Tak |
Od pierwszego wydania TOML spotkał się z kilkoma krytykami. Projekt StrictYAML wymienia następujące punkty jako problematyczne w TOML: [8]
Projekt libconfini opublikował od tego czasu bardziej obszerną krytykę TOML z prowadzoną perspektywy INI, [9] wymieniając (między innymi) następujące punkty jako problematyczne:
application/toml
, ale nigdy nie został oficjalnie zarejestrowany IANA's Media Types.