最近配置 Gitlab Runner,发现他的配置文件是.toml
后缀。对toml
类型一番了解之后,发现这是个非常值得使用的配置文件语言。
TOML的由来
TOML是Tom's Obvious, Minimal Language.
的首字母缩写,是Tom的浅显的、极简的语言。
那么问题来了,Tom是谁?搜索之后得到答案,Tom
是Tom Preston-Werner
,全球最大的同性交友网站Github联合创始人。
还有小道消息,GitHub 新项目转用CoffeeScript 之后,CoffeeScript 比 JavaScript 要简洁优雅得多。同样地,GitHub 也觉得 YAML 不够简洁优雅,因此捣鼓出了一个 TOML。
TOML的目标
成为一个极简的配置文件格式。
关键词:极简、配置文件
TOML的语法足够简单,同时保证一个标准的TOML文件的所有配置项目都能被无歧义的转换成一个哈希表。TOML可以被各种语言解析使用。
TOML目前的版本还是0.4.0
,官网还是提示在1.0
以前,语言表现可能还是不稳定。这个只是个免责条款,在很多生产系统里面,TOML配置文件已经大规模使用了,比如友商GibLab
。
简单样例
1 | https://github.com/toml-lang/toml# This is a TOML document. |
上面的样例就展示了很多TOML的特点。
- 主要通过键值对表达
- 使用
#
作为注释 - 支持数字、字符串、布尔量、日期等数据类型
- 有块、列表等数据结构
还有一些特性,也列出来
- TOML是大小写敏感的
- TOML文件必须是UTF8编码的
- 空白符可以是制表符(0x09)或空格(0x20)
- 换行符可以是 LF (0x0A) 或 CRLF (0x0D0A)
- 可以使用空字符串作为key 强烈不推荐这么用
看完样例,对TOML就能有基本的认识,参照文档就能快速写出合适的配置文件。
很棒的点
Offset Date-Time
TOML支持RFC 3339格式的时间,可以精准的描述一个地区时间。
多行字符串
1 | str1 = """ |
直接换行编写配置文件,在各个系统都能准确表达。
_
分割z数字
数字,可以加入_
作为标记,不影响数值。每三位加一个,快速区分量级。玩EVE再也不用担心多付ISK了。
1 | num1 = 1_000 # 一千 |
.
表示层级
块可以用.
表示层级。
参考资料
TOML Github 的目录
- Example
- Spec
- Comment
- Key/Value Pair
- String
- Integer
- Float
- Boolean
- Offset Date-Time
- Local Date-Time
- Local Date
- Local Time
- Array
- Table
- Inline Table
- Array of Tables
- Filename Extension
- Comparison with Other Formats
- Get Involved
- Projects using TOML
- Implementations
- Validators
- Language agnostic test suite for TOML decoders and encoders
- Editor support
- Encoder
- Converters