TOML es un formato de archivo para archivos de configuración . Se pretende que sea fácil de leer y escribir debido a la semántica obvia que apunta a ser "mínima", y está diseñado para mapear sin ambigüedades a un diccionario . Su especificación es de código abierto y recibe contribuciones de la comunidad. TOML se utiliza en varios proyectos de software, [2] [3] [ fuente no primaria necesaria ] y se implementa en muchos lenguajes de programación. [2] El nombre "TOML" es un acrónimo de "Tom's Obvious, Minimal Language" [4] en referencia a su creador, Tom Preston-Werner .
Extensión de nombre de archivo | .toml |
---|---|
Tipo de medio de Internet | No registrado [1] |
Desarrollado por | Comunidad Tom Preston-Werner |
Versión inicial | 23 de febrero de 2013 |
Último lanzamiento | v1.0.0 (11 de enero de 2021 ) |
Tipo de formato | Intercambio de datos |
¿ Formato abierto ? | sí |
Sitio web | toml |
Sintaxis
La sintaxis de TOML consiste principalmente en key = "value"
pares [section names]
, y # comments
. La sintaxis de TOML se parece un poco a la de. INI , pero incluye una especificación formal, mientras que el formato de archivo INI adolece de muchas variantes en competencia.
Su especificación incluye una lista de tipos de datos admitidos: String, Integer, Float, Boolean, Datetime, Array y Table.
Ejemplo
# Este es un documento TOML.title = "Ejemplo de TOML"[propietario] nombre = "Tom Preston-Werner" dob = 1979-05-27T07: 32: 00-08: 00 # Fechas de primera clase[base de datos] servidor = "192.168.1.1" puertos = [8000, 8001, 8002] connection_max = 5000 habilitado = verdadero[servidores] # La sangría (tabulaciones y / o espacios) está permitida pero no es obligatoria [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servidores.beta] ip = "10.0.0.2" dc = "eqdc10"[clientes] datos = [["gamma", "delta"], [1, 2]]# Los saltos de línea están bien cuando dentro de las matrices hosts = [ "alpha" , "omega" ]
Comparación con otros formatos
La siguiente tabla se basa en la especificación TOML para hacer una comparación con otros formatos de configuración populares ( INI , JSON y YAML ). Véase también BespON como se presentó en SciPy 2017, [ cita requerida ] , así como una discusión sobre el uso de TOML para parametrizar el modelado de simulación. [5]
Formato | Estándar formal | Fuertemente tipado | Fácil implementación [ cita requerida ] | Legible por humanos | Permite comentarios |
---|---|---|---|---|---|
JSON | Sí [6] | sí | sí | sí | No |
YAML | No, especificación formal | sí | No [7] | sí | sí |
TOML | No, especificación formal | sí | sí | sí | sí |
INI | No, varios dialectos | No | sí | sí | sí |
Crítica
Desde su primer lanzamiento, TOML ha recibido varias críticas. El proyecto StrictYAML enumera los siguientes puntos como problemáticos en TOML: [8]
- TOML es detallado, no es DRY y es sintácticamente ruidoso
- Las jerarquías de TOML son difíciles de inferir solo de la sintaxis
- Complicación excesiva: al igual que YAML, TOML tiene demasiadas funciones
- En TOML, la sintaxis determina los tipos de datos ("escritura de sintaxis")
Desde entonces, el proyecto libconfini ha publicado una crítica más extensa de TOML desde la perspectiva del INI , [9] enumerando los siguientes puntos (entre otros) como problemáticos:
- TOML permite que el archivo de configuración decida sobre los tipos de datos (escritura de sintaxis), cuando de facto es la aplicación cliente la que decide, y cualquier tipo que no coincida será ignorado o convertido al tipo esperado (dependiendo del analizador)
- TOML reintroduce lo que los lenguajes amigables para los humanos normalmente intentan deshacerse: una sintaxis detallada y la necesidad de usar comillas para cadenas
- La sintaxis de TOML siempre distingue entre mayúsculas y minúsculas , a pesar de que hay situaciones en las que los archivos de configuración deben distinguir entre mayúsculas y minúsculas (como, por ejemplo, los archivos de configuración que asignan un sistema de archivos FAT32 o etiquetas HTML)
- TOML usa corchetes para las matrices, aunque los corchetes ya están reservados para los nombres de las tablas; además, cualquier sintaxis especial para matrices devuelve el lenguaje a la escritura de sintaxis
- Una tabla TOML debe completarse en un solo paso, por lo que combinar varios archivos TOML es problemático
- TOML introduce arbitrariamente una sintaxis para fechas
- TOML permite (pero desalienta) la cadena vacía como clave
- Las reglas de TOML no se pueden inferir del contenido, por lo que la edición de un archivo TOML requiere un conocimiento previo del idioma.
- TOML es incompatible con versiones anteriores de INI
Ver también
- Archivo INI
- JSON - del ecosistema JavaScript
- Recfiles
- YAML
Referencias
- ^ Hay una propuesta de tipo mimo para TOML que consiste en
application/toml
, pero esto nunca se ha registrado oficialmente entre los tipos de medios de IANA . - ^ a b "toml-lang / toml" . GitHub .
- ^ "El formato manifiesto - El libro de carga" . doc.rust-lang.org .
- ^ "toml-lang / toml" . 15 de enero de 2021 - a través de GitHub.
- ^ "toml-intro.rst" . subversion.american.edu .
- ^ "El formato de intercambio de datos de notación de objetos JavaScript (JSON)" .
- ^ "Especificación YAML" . yaml.org .
[..] Los principales objetivos de diseño de YAML son la legibilidad humana y el soporte para serializar estructuras de datos nativas arbitrarias. Por lo tanto, YAML permite archivos extremadamente legibles, pero es más complejo de generar y analizar.
- ^ ¿Qué pasa con TOML?
- ^ Una crítica de INI de TOML
enlaces externos
- Página web oficial
- toml en GitHub