だいたい json.el っぽく。 escape sequence の所とか特にそれっぽいですね。インスパイヤ。
- TravisCI の設定は tkf/emacs-plugin-template · GitHub を参考にしました
- MELPA には 申請済み
- 9/4追記 承認されました。
M-x package-install emacs-toml
でインストールできます
- 9/4追記 承認されました。
- TOML 本家の README にも 記載申請済み 。他の PR も溜まってるっぽいのであまり期待できず
- 9/23追記 マージされた。README に載った!!
とりあえず (toml:read)
(toml:read-from-string)
(toml:read-from-file)
でどうにかできます
(toml:read-from-string "\ # This is a TOML document. Boom. title = \"TOML Example\" \[owner\] name = \"Tom Preston-Werner\" organization = \"GitHub\" bio = \"GitHub Cofounder & CEO\\nLikes tater tots and beer.\" dob = 1979-05-27T07:32:00Z # First class dates? Why not? \[database\] server = \"192.168.1.1\" ports = \[ 8001, 8001, 8002 \] connection_max = 5000 enabled = true \[servers\] # You can indent as you please. Tabs or spaces. TOML don't care. \[servers.alpha\] ip = \"10.0.0.1\" dc = \"eqdc10\" \[servers.beta\] ip = \"10.0.0.2\" dc = \"eqdc10\" \[clients\] data = \[ \[\"gamma\", \"delta\"\], \[1, 2\] \] # Line breaks are OK when inside arrays hosts = \[ \"alpha\", \"omega\" \]") ;; => '( ;; ("clients" ;; ("hosts" "alpha" "omega") ;; ("data" ("gamma" "delta") (1 2))) ;; ("servers" ;; ("beta" ("dc" . "eqdc10") ("ip" . "10.0.0.2")) ;; ("alpha" ("dc" . "eqdc10") ("ip" . "10.0.0.1"))) ;; ("database" ;; ("enabled" . t) ;; ("connection_max" . 5000) ;; ("ports" 8001 8001 8002) ;; ("server" . "192.168.1.1")) ;; ("owner" ;; ("dob" 0 32 7 27 5 1979) ;; ("bio" . "GitHub Cofounder & CEO\\nLikes tater tots and beer.") ;; ("organization" . "GitHub") ;; ("name" . "Tom Preston-Werner")) ;; ("title" . "TOML Example"))
generator もやろうと思ったんですが、もう parser で燃え尽きた。Parser めんどくさい。
ちなみに何で作ったのかと言うと、職場の開発チームで serverspec とか puppet の設定ファイルに TOML ファイルを使っていて、それで TOML ファイルの存在を知ったのですが 「emacs の設定ファイル toml で書くとどうだろう」って思いついてまずは!ってことで パーサー書いてみたんですが、Emacs だったら普通に S 式で書けよって思いました。