聊一聊TOML
栏目: CoffeeScript · 发布时间: 6年前
内容简介:最近配置 Gitlab Runner,发现他的配置文件是TOML是那么问题来了,Tom是谁?搜索之后得到答案,
最近配置 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
。
简单样例
https://github.com/toml-lang/toml# This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" dob = 1979-05-27T07:32:00-08:00 https://github.com/toml-lang/toml# First class dates [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] https://github.com/toml-lang/toml# 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" [clients] data = [ ["gamma", "delta"], [1, 2] ] https://github.com/toml-lang/toml# Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ]
上面的样例就展示了很多TOML的特点。
#
还有一些特性,也列出来
- TOML是大小写敏感的
- TOML文件必须是UTF8编码的
- 空白符可以是制表符(0x09)或空格(0x20)
- 换行符可以是 LF (0x0A) 或 CRLF (0x0D0A)
- 可以使用空字符串作为key 强烈不推荐这么用
看完样例,对TOML就能有基本的认识,参照文档就能快速写出合适的配置文件。
很棒的点
Offset Date-Time
TOML支持 RFC 3339 格式的时间,可以精准的描述一个地区时间。
多行字符串
str1 = """ Roses are red Violets are blue""" # On a Unix system, the above multi-line string will most likely be the same as: str2 = "Roses are red\nViolets are blue" # On a Windows system, it will most likely be equivalent to: str3 = "Roses are red\r\nViolets are blue"
直接换行编写配置文件,在各个系统都能准确表达。
_
分割z数字
数字,可以加入 _
作为标记,不影响数值。每三位加一个,快速区分量级。玩EVE再也不用担心多付ISK了。
num1 = 1_000 # 一千 num2 = 2_000_000 # 两百万 num3 = 3_000_000_000 # 三十亿
.
表示层级
块可以用 .
表示层级。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。