在開始編寫 Node.js 端 Pache 的時候就想過配置信息該如何存放。當時有這幾種方案:
- 使用
.json
文件 - 使用
.js
文件 - 使用專有配置文件
用 .json
文件的好處是無依賴、低門檻。.js
文件的好處是支持注釋。而用專有配置文件看起來似乎只能用來裝逼用的。
然後還真的裝逼了,我寫了一個自己用的配置文件格式,名字叫 suc[1]。
先說說它該怎麼寫[2]
1234567891011121314151617181920# #號開頭的一整行都會是注釋# 除了數組模式以外,其他地方的空行都會跳過propertyName >stringHaHapropertyName2 > aHaHgnirtsAkko Kagari >hello[i_am_number] 9[non-zero] .3[hoshino yumemi] 1400[圓周率(近似)] 3.1415927[list] cat dog pig[propertyFalse] FALSE[propertyTrue] TRUE
第 4 ~ 6 行是字符串的類型。>
的左邊為屬性名(但屬性名會被 trim 處理),在 >
右邊則是字符串值,直至換行為止。
如果屬性名被 [ ]
包住並且後邊接上數值,則是數字類型。
如果屬性名被 [ ]
包住並且後邊接上TRUE
或者FALSE
字符,則是布爾型。
如果屬性名被 [ ]
包住並且直至換行也沒接上數字或者布爾值,則進入數組模式,下一行就是數組第一個元素的值,再下一行就是數字第二個元素的值。若下一行中不輸入任何字符直接換行,則結束數組模式。數組元素都是字符串類型
經過 node-suc 解析后,會返回一個 JS 對象:
1234567891011121314151617{ "propertyName": "stringHaHa", "propertyName2": " aHaHgnirts", "Akko Kagari": "hello", "i_am_number": 9, "non-zero": 0.3, "hoshino yumemi": 1400, "圓周率(近似)": 3.1415927, "list": [ " cat", " dog", " pig" ], "propertyFalse": false, "propertyTrue": true}
特性
有那麼點學習成本,再因為我的表達能力,所以是有點學習成本的[3]
沒有「對象」這樣的數據類型,數組不能嵌套並且數組元素只有字符串類型
不過,對於我來說影響不大,首先因為是自製的,所以很清楚它的語法。加上配置文件也不會要求的那麼複雜,這樣的數據類型夠用了[4]。
所以呢?
所以呢?上面那三個特性,.js
和 .json
都具備了,其它的配置文件[5]也都具備這樣的特性,所以再搞出這個就比較浪費精力和時間了。另外一個較為重要的問題,沒有任何一款編輯器對 suc 有高亮支持。
也就是說是為了裝逼用的,裝的還挺辛苦的[6]……