TOML
| 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
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.
Przykład
# 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"
]
Porównanie z innymi formatami
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 |
Krytyka
Od pierwszego wydania TOML spotkał się z kilkoma krytykami. Projekt StrictYAML wymienia następujące punkty jako problematyczne w TOML: [8]
- TOML jest rozwlekły, nie jest DRY i cierpi na szum syntaktyczny
- Hierarchie TOML są trudne do wywnioskowania na podstawie samej składni
- Nadmierna komplikacja: podobnie jak YAML, TOML ma zbyt wiele funkcji
- W TOML składnia określa typy danych („typowanie składnią”)
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:
- TOML pozwala plikowi konfiguracyjnemu decydować o typach danych (składnia definiuje typy), gdy de facto decyduje o tym aplikacja kliencka, a każdy niezgodny typ zostanie i tak zignorowany lub konwertowany na oczekiwany typ (w zależności od parsera)
- TOML ponownie wprowadza to, czego języki przyjazne dla człowieka zwykle próbują się pozbyć: rozwlekłą składnię i konieczność używania cudzysłowów dla łańcuchów
- W składni TOML zawsze rozróżniana jest wielkość liter, pomimo faktu, że istnieją sytuacje, w których pliki konfiguracyjne muszą nie uwzględniać wielkości liter (jak na przykład pliki konfiguracyjne mapujące system plików FAT32 lub znaczniki HTML)
- TOML używa nawiasów kwadratowych dla tablic, chociaż nawiasy kwadratowe są już zarezerwowane dla nazw tabel; ponadto każda specjalna składnia dla tablic przywraca język do typowania za pomocą składni
- TOML zabrania wypełniania tabeli w różnych krokach, przez co scalanie kilku plików konfiguracyjnych jest problematyczne
- TOML arbitralnie wprowadza składnię dat
- TOML umożliwia (ale odradza) tworzenie kluczy o nazwie będącej pustym łańcuchem
- Reguł TOML nie można wywnioskować z treści pliku, dlatego edycja pliku TOML wymaga wcześniejszej znajomości języka
- TOML jest niekompatybilny wstecznie z INI
Zobacz też
Przypisy
- ↑ Jest proposal dla TOML zawarty w
application/toml, ale nigdy nie został oficjalnie zarejestrowany IANA's Media Types. - ↑ Home · toml-lang/toml Wiki · GitHub [online], github.com [dostęp 2024-04-26] (ang.).
- ↑ The Manifest Format - The Cargo Book [online], rust-lang.org [dostęp 2024-04-26] (ang.).
- ↑ Home · toml-lang/toml Wiki · GitHub [online], github.com [dostęp 2024-04-26] (ang.).
- ↑ GitHub - toml-lang/toml: Tom's Obvious, Minimal Language [online], github.com [dostęp 2024-04-26] (ang.).
- ↑ proceedings/scipy2017/geoffrey_poore.html [online], scipy.org [dostęp 2024-04-26].
- ↑ toml-intro.rst [online], american.edu [dostęp 2024-04-26] (ang.).
- ↑ What is wrong with TOML?
- ↑ An INI critique of TOML
Linki zewnętrzne
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.