聊一聊TOML
最近配置 Gitlab Runner,發現他的配置文件是.toml
後綴。對toml
類型一番了解之後,發現這是個非常值得使用的配置文件語言。
TOML的由來
TOML是Toms Obvious, Minimal Language.
的首字母縮寫,是Tom的淺顯的、極簡的語言。
Tom
是Tom Preston-Werner
,全球最大的同性交友網站Github聯合創始人。
還有小道消息,GitHub 新項目轉用CoffeeScript 之後,CoffeeScript 比 JavaScript 要簡潔優雅得多。同樣地,GitHub 也覺得 YAML 不夠簡潔優雅,因此搗鼓出了一個 TOML。
TOML的目標
成為一個極簡的配置文件格式。
關鍵詞:極簡、配置文件TOML的語法足夠簡單,同時保證一個標準的TOML文件的所有配置項目都能被無歧義的轉換成一個哈希表。TOML可以被各種語言解析使用。TOML目前的版本還是0.4.0
,官網還是提示在1.0
以前,語言表現可能還是不穩定。這個只是個免責條款,在很多生產系統裡面,TOML配置文件已經大規模使用了,比如友商GitLab
。
簡單樣例
# This is a TOML document.nntitle = "TOML Example"nn[owner]nname = "Tom Preston-Werner"ndob = 1979-05-27T07:32:00-08:00 # First class datesnn[database]nserver = "192.168.1.1"nports = [ 8001, 8001, 8002 ]nconnection_max = 5000nenabled = truenn[servers]nn # Indentation (tabs and/or spaces) is allowed but not requiredn [servers.alpha]n ip = "10.0.0.1"n dc = "eqdc10"nn [servers.beta]n ip = "10.0.0.2"n dc = "eqdc10"nn[clients]ndata = [ ["gamma", "delta"], [1, 2] ]nn# Line breaks are OK when inside arraysnhosts = [n "alpha",n "omega"n]n
上面的樣例就展示了很多TOML的特點。
- 主要通過鍵值對表達
- 使用
#
作為注釋 - 支持數字、字元串、布爾量、日期等數據類型
- 有塊、列表等數據結構
還有一些特性,也列出來
- TOML是大小寫敏感的
- TOML文件必須是UTF8編碼的
- 空白符可以是製表符(0x09)或空格(0x20)
- 換行符可以是 LF (0x0A) 或 CRLF (0x0D0A)
- 可以使用空字元串作為key 強烈不推薦這麼用
看完樣例,對TOML就能有基本的認識,參照文檔就能快速寫出合適的配置文件。
很棒的點
Offset Date-Time
TOML支持RFC 3339格式的時間,可以精準的描述一個地區時間。
多行字元串
str1 = """nRoses are rednViolets are blue"""nn# On a Unix system, the above multi-line string will most likely be the same as:nstr2 = "Roses are rednViolets are blue"nn# On a Windows system, it will most likely be equivalent to:nstr3 = "Roses are redrnViolets are blue"n
直接換行編寫配置文件,在各個系統都能準確表達。
_
分割z數字
數字,可以加入_
作為標記,不影響數值。每三位加一個,快速區分量級。玩EVE再也不用擔心多付ISK了。
num1 = 1_000 # 一千nnum2 = 2_000_000 # 兩百萬nnum3 = 3_000_000_000 # 三十億n
.
表示層級
塊可以用.
表示層級。
參考資料
- Github TOML
- TOML: GitHub 這是要革 YAML 的命呀!
TOML Github 的目錄
- Example
- Spec
- Comment
- Key/Value Pair
- String
- Integer
- Float
- Boolean
- Offset Date-Time
- Local Date-Time
- Local Date
- Local Time
- Array
- Table
- Inline Table
- Array of Tables
- Filename Extension
- Comparison with Other Formats
- Get Involved
- Projects using TOML
- Implementations
- Validators
- Language agnostic test suite for TOML decoders and encoders
- Editor support
- Encoder
- Converters
原文鏈接 作者 @柳純
本文版權屬於再惠研發團隊,歡迎轉載,轉載請保留出處。
推薦閱讀:
※如果軟體要實現以下功能 要用什麼編程語言編寫比較合適?
※D語言的前景如何?在中國的發展情況如何?
※自學R語言 ,有什麼注意的細節或好的習慣?