XConf / specs

The specs
1 stars 0 forks source link

語言好像不太適合用 Enum #1

Open yuchunc opened 6 years ago

yuchunc commented 6 years ago

@pastleo @zetavg

https://github.com/XConf/development-docs/blob/master/launchpad.js#L34

我之前很機車的建議語言的tag或許應該 Follow i18n的規則,所以 CHT 會變成 zh-TW,但問題來了... GraphQL 的 enum 只允許大寫和數字.... Orz 所以中間的 dash 不符合規定

所以我們有兩個選項:

  1. zh-TW 的 dash 丟掉,變成 ZHTW
  2. 把這個變成個 String field

我比較傾向把它變成 方法二 因為 ZHTW 看起來有點怪 XD

zetavg commented 6 years ago

XDDD

翻了一下 GraphQL spec,發現其實規則是 /[_A-Za-z][_0-9A-Za-z]*/,可以用底線。

如果到 GraphQL 這邊變成 ZH_TWzh_TW(好像還蠻常見到這種稍微脫離標準的寫法)的話,我覺得可以接受。

zetavg commented 6 years ago

其實是想盡可能的保持所有語言是個可數集合的特性。

順帶一提,graphql_ppx把 enum 轉成 OCaml 的 polymorphic variants 咦這樣就變不可數集合了呀
我猜是有一些限制致使 graphql_ppx 目前還無法用 ppx rewriter 來定義 type,像是為什麼想用 record 取代 Js.t 的話需要自己定義型別,不支援 interface 等等。