Pache 的配置文件

開始編寫 Node.js 端 Pache 的時候就想過配置信息該如何存放。當時有這幾種方案:

  • 使用 .json 文件
  • 使用 .js 文件
  • 使用專有配置文件

.json 文件的好處是無依賴、低門檻。.js 文件的好處是支持注釋。而用專有配置文件看起來似乎只能用來裝逼用的。

然後還真的裝逼了,我寫了一個自己用的配置文件格式,名字叫 suc[1]

先說說它該怎麼寫[2]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# #號開頭的一整行都會是注釋
# 除了數組模式以外,其他地方的空行都會跳過
propertyName >stringHaHa
propertyName2 > aHaHgnirts
Akko 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 對象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"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]……


  1. 後綴名也是 .suc ↩︎

  2. 《suc從入門到精通》 ↩︎

  3. 某個 README.md 上說「SUC 是 Simple Unmanual Config 的缩写,Simple 意为 简单;Unmanual 则是作者 Vec 的中式英语,意思是 无需手册;根据这英文名可理解为 简单的、不需要手册的配置(语法)」 ↩︎

  4. 除了 Pache Alias ↩︎

  5. yaml、ini 等 ↩︎

  6. 之前比較嚴謹的文檔也沒寫。。git 倉庫好像也丟了,只在 npm 上有 ↩︎