TOML
[Tom 的(語意)明顯、(設定)最小化的語言]
為人而生的
設定檔格式。
TOML 旨在成為一種最小化的設定檔格式,因語意明顯而易於閱讀。TOML 的設計可以無歧義地對應到雜湊表。TOML 應能輕易地剖析成各種程式語言中的資料結構。
# 這是一份 TOML 文件
title = "TOML 範例"
[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 = "前端"
[servers.beta]
ip = "10.0.0.2"
role = "後端"
-
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 認為所有設定檔都應該支援註解。
# 這是 TOML 註解
# 這是多行
# TOML 註解
強大的字串
表示字串的方式有四種:基本字串、多行基本字串、字面字串與多行字面字串。基本字串以雙引號包住:
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 都支援。你可以使用科學記號,也能加上千分位符號。
# 整數
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
# 兩者並用
float7 = 6.626e-34
# 分隔符號
float8 = 224_617.445_991_228
# 無限大
infinite1 = inf # 正無限大
infinite2 = +inf # 正無限大
infinite3 = -inf # 負無限大
# 非數值
not1 = nan
not2 = +nan
not3 = -nan
日期與時間
TOML 支援日期、時間與日期時間,可帶有或不帶偏移量。
# 含偏移量的日期時間
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