v1.0.0

TOML

[Tom 的明显最小语言]

一种配置文件格式
为人类而设计。

# This is a TOML document

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00

[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
data = [ ["delta", "phi"], [3.14] ]
temp_targets = { cpu = 79.5, case = 72.0 }

[servers]

[servers.alpha]
ip = "10.0.0.1"
role = "frontend"

[servers.beta]
ip = "10.0.0.2"
role = "backend"
TOML 优先考虑人类

TOML 旨在成为一种最小化的配置文件格式,

  • 易于阅读,因为语义明显
  • 无歧义地映射到哈希表
  • 易于解析成各种语言中的数据结构
TOML 具有有用的原生类型
  • 键值对
  • 数组
  • 内联表
  • 表数组
  • 整数和浮点数
  • 布尔值
  • 日期和时间,带可选偏移量
TOML 得到广泛支持

TOML 已经在当今大多数流行的编程语言中都有实现:C、C#、C++、Clojure、Dart、Elixir、Erlang、Go、Haskell、Java、JavaScript、Lua、Objective-C、Perl、PHP、Python、Ruby、Rust、Scala、Swift……以及更多

TOML 快速入门

注释

TOML 认为所有配置文件都应该支持注释。

# This is a TOML comment

# This is a multiline
# TOML comment

强大的字符串

有四种表达字符串的方式:基本字符串、多行基本字符串、字面字符串和多行字面字符串。基本字符串用引号括起来

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.\
  """

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 = '''
The first newline is
trimmed in raw strings.
All other whitespace
is preserved.
'''

数字

支持整数、浮点数、无穷大和甚至 NaN。您可以使用科学计数法,甚至使用千位分隔符。

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

# hexadecimal with prefix `0x`
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
hex3 = 0xdead_beef

# octal with prefix `0o`
oct1 = 0o01234567
oct2 = 0o755

# binary with prefix `0b`
bin1 = 0b11010110

# fractional
float1 = +1.0
float2 = 3.1415
float3 = -0.01

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

# both
float7 = 6.626e-34

# separators
float8 = 224_617.445_991_228

# infinity
infinite1 = inf # positive infinity
infinite2 = +inf # positive infinity
infinite3 = -inf # negative infinity

# not a number
not1 = nan
not2 = +nan
not3 = -nan 

日期和时间

TOML 提供对日期、时间和带或不带偏移量的日期时间的支持。

# offset datetime
odt1 = 1979-05-27T07:32:00Z
odt2 = 1979-05-27T00:32:00-07:00
odt3 = 1979-05-27T00:32:00.999999-07:00

# local datetime
ldt1 = 1979-05-27T07:32:00
ldt2 = 1979-05-27T00:32:00.999999

# local date
ld1 = 1979-05-27

# local time
lt1 = 07:32:00
lt2 = 00:32:00.999999

更多规范

TOML 支持更多原生类型和语法,请阅读所有内容

开始编码

TOML 已经在 40 多种编程语言中实现