Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

基本介绍

Toml是一种易读、mini语言,由github前CEO Tom创建。Tom's Obvious, Minimal Language

TOML致力于配置文件的小型化和易读性。 1. WIKI介绍: https://github.com/toml-lang/toml/wiki 1. 官方地址: https://github.com/toml-lang/toml

与其他格式比较

TOML与用于应用程序配置和数据序列化的其他文件格式(如YAMLJSON)具有相同的特性。TOMLJSON都很简单,并且使用普遍存在的数据类型,这使得它们易于编写代码或使用机器进行解析。TOMLYAML都强调人的可读性,比如注释,它使理解给定行的目的变得更容易。TOML的不同之处在于,它支持注释(不像JSON),但保持了简单性(不像YAML)。

...

INI文件经常与TOML进行比较,因为它们在语法和用作配置文件方面具有相似性。然而,INI没有标准化的格式,它们不能优雅地处理超过一两个层次的嵌套。

基础语法

title = "TOML 例子"

[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # 日期时间是一等公民。为什么不呢?

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]
  # 你可以依照你的意愿缩进。使用空格或Tab。TOML不会在意。
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

#在数组里换行没有关系。
hosts = [
  "alpha",
  "omega"
]

...

TOML主要结构是键值对,与JSON类似。值必须是如下类型: String, Integer, Float, Boolean, Datetime, Array, Table

注释

使用 # 表示注释:

# I am a comment. Hear me roar. Roar.
key = "value" # Yeah, you can do this.

字符串

TOML中有4种字符串表示方法:基本、多行-基本、字面量、多行-字面量

1. 基本字符串

由双引号包裹,所有Unicode字符均可出现,除了双引号、反斜线、控制字符(U+0000 to U+001F)需要转义。

2. 多行-基本字符串

由三个双引号包裹,除了分隔符开始的换行外,字符串内的换行将被保留:

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

3. 字面量字符串

由单引号包裹,其内不允许转义,因此可以方便的表示基本字符串中需要转义的内容:

winpath = 'C:\Users\nodejs\templates'

4. 多行-字面量字符串

与多行-基本字符串相似:

str1 = '''
Roses are red
Violets are blue'''

数值与BOOL值

int1  = +99
flt3  = -0.01
bool1 = true

日期时间

date = 1979-05-27T07:32:00Z

数组

数组使用方括号包裹。空格会被忽略。元素使用逗号分隔。

...

array1 = [ 1, 2, 3 ]
array2 = [ "red", "yellow", "green" ]
array3 = [ [ 1, 2 ], [3, 4, 5] ]
array4 = [ [ 1, 2 ], ["a", "b", "c"] ] # 这是可以的。
array5 = [ 1, 2.0 ] # 注意:这是不行的。

表格

表格(也叫哈希表或字典)是键值对的集合。它们在方括号内,自成一行。注意和数组相区分,数组只有值。

...

# 别这么干!

[a]
b = 1

[a]
c = 2
# 也别这个干

[a]
b = 1

[a.b]
c = 2

表格数组

最后要介绍的类型是表格数组。表格数组可以通过包裹在双方括号内的表格名来表达。使用相同的双方括号名称的表格是同一个数组的元素。表格按照书写的顺序插入。双方括号表格如果没有键值对,会被当成空表。

...