TOML
| TOML | |
|---|---|
| File:TOML Logo.svg | |
| Filename extension |
.toml |
| Internet media type |
application/toml |
| Developed by |
|
| Initial release | 23 February 2013 |
| Type of format | Data interchange |
| Open format? | Yes |
Tom's Obvious, Minimal Language (TOML, originally Tom's Own Markup Language)[1] is a file format for configuration files.[2] It is designed to be easy to read and write by being minimal (unlike the more-complex YAML) and by using human-readable syntax. The project standardizes the implementation of the ubiquitous INI file format (which it has largely supplanted), removing ambiguity from its interpretation. Originally created by Tom Preston-Werner, the TOML specification is open source. TOML is used in a number of software projects[3][4][5] and is implemented by all popular programming languages.[6]
Syntax
[edit | edit source]TOML's syntax primarily consists of, among other constructs, key = value pairs, [section names], and # (for comments). TOML's syntax is a superset of the .INI format but has one agreed-upon formal specification, whereas the .INI format suffers from many competing variants (most implicitly specified through project-specific parsers).
Exceeding stringly-typed semantics, TOML supports the data types string, integer, float, boolean, datetime, array and table.
Example
[edit | edit source]# This is a TOML document.
title = "TOML Example"
[database]
server = "192.168.1.1"
ports = [ 8000, 8001, 8002 ]
connection_max = 5000
enabled = true
# Line breaks are okay when inside arrays
hosts = [
"alpha",
"omega"
]
[servers]
# Indentation (tabs and/or spaces) is allowed, but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
Notable uses
[edit | edit source]TOML is used in a variety of settings such as:
- Jekyll (a static site generator) configuration
_config.toml(although configuration through YAML is also supported) - Hugo (a static site generator) configuration
hugo.toml(although configuration through JSON or YAML are also supported) - Python 3 package manifests
pyproject.toml[7] - Rust package manifests
Cargo.toml[3] - Julia project settings
Project.tomland package manifestsManifest.toml[8] - Blender add-on manifests
blender_manifest.toml[9] - Gradle version catalogs
libs.versions.toml[10] - Taplo configurations
.taplo.tomlandtaplo.toml[11] - Prettier configurations
.prettierrc.toml[12]
See also
[edit | edit source]References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).