跳转至

Toml 为人而生的配置文件格式

1. Toml 简介

TOML 旨在成为一个最小化配置文件格式,它:

  • 语义明显易于阅读
  • 能无歧义地映射为哈希表
  • 易于解析成各种语言中的数据结构

TOML 具备实用的原生类型

  • 键/值对
  • 数组
  • 内联表
  • 表数组
  • 整数 & 浮点数
  • 布尔值
  • 日期 & 时刻,带可选的时区偏移

来自 Toml 官方网站对 Toml 的介绍

1.0 快速上手&语法速查

1.1 注释

Toml 认为配置文件应当都支持注释

# Toml 注释

# Toml 注释 1
# Toml 注释 2

1.2 字符串

基本字符串

str1 = "I'm a string."
str2 = "You can \"quote\" me."
str3 = "Name\tJos\u00E9\nLoc\tSF."

多行字符串

多行字符串由三个引号包裹,用行末反斜杠自动剔除非空白字符前的任何空白字符

str1 = """
Roses are red
Violets are blue"""

str2 = """\
The quick brown \
fox jumps over \
the lazy dog.\
"""

字面量字符串

单引号包裹。没有转义行为故而所见即所得

path = 'C:\Users\nodejs\templates'
path2 = '\\User\admin$\system32'
quoted = 'Tom "Dubs" Preston-Werner'
regex = '<\i\c*\s*>'

多行字面量字符串

re = '''I [dw]on't need \d{2} apples'''
lines = '''
原始字符串中的
第一个换行被剔除了。
所有其它空白
都保留了。
'''

1.3 数字

# 整数
int1 = +99
int2 = 42
int3 = 0
int4 = -17

# 十六进制带有前缀 `0x`
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
hex3 = 0xdead_beef

# 八进制带有前缀 `0o`
oct1 = 0o01234567
oct2 = 0o755

# 二进制带有前缀 `0b`
bin1 = 0b11010110

# 小数
float1 = +1.0
float2 = 3.1415
float3 = -0.01

# 指数
float4 = 5e+22
float5 = 1e06
float6 = -2E-2

# both
float7 = 6.626e-34

# 分隔符
float8 = 224_617.445_991_228

# 无穷
infinite1 = inf # 正无穷
infinite2 = +inf # 正无穷
infinite3 = -inf # 负无穷

# 非数
not1 = nan
not2 = +nan
not3 = -nan 

1.4 日期与时刻

# 坐标日期时刻
odt1 = 1979-05-27T07:32:00Z
odt2 = 1979-05-27T00:32:00-07:00
odt3 = 1979-05-27T00:32:00.999999-07:00

# 各地日期时刻
ldt1 = 1979-05-27T07:32:00
ldt2 = 1979-05-27T00:32:00.999999

# 各地日期
ld1 = 1979-05-27

# 各地时刻
lt1 = 07:32:00
lt2 = 00:32:00.999999

2.0 代码使用

2.1 Golang

例程使用的 Go 库:

  • https://github.com/BurntSushi/toml - 兼容 TOML v1.0.0 & Go >= 1.18

END. 参考与引用

文章引用参考来源