Labeled Tab-separated Values (LTSV)
流行りに便乗しました
インタフェース
ltsv:parse-lineは LTSVな文字列を解析し、alistを返します。
Perlの Text::LTSV同様 want, ignoreなキーを指定することが可能です。
(ltsv:parse-line "hoge:foo\tbar:baz\ttime:20:30:58\n") ;; => (("hoge" . "foo") ("bar" . "baz") ("time" . "20:30:58")) (ltsv:parse-line "hoge:foo\tbar:baz\ttime:20:30:58\n" :want '("time")) ;; => (("time" . "20:30:58")) (ltsv:parse-line "hoge:foo\tbar:baz\ttime:20:30:58\n" :ignore '("bar")) ;; => (("hoge" . "foo") ("time" . "20:30:58"))
ltsv:parse-fileは LTSVなファイルを解析し、alistの listを返します。
listは行順です。want, ignoreを同様に指定できます。
以下のようなファイルを指定すると
hoge:foo bar:baz perl:5.17.8 ruby:2.0 python:2.6 sushi:寿司 tennpura:天ぷら ramen:ラーメン gyoza:餃子
以下のような alistのリストが返ります。
(lstv:parse-file "test.ltsv") ;; => ((("hoge" . "foo") ("bar" . "baz")) ;; (("perl" . "5.17.8") ("ruby" . "2.0") ("python" . "2.6")) ;; (("sushi" . "寿司") ("tennpura" . "天ぷら") ("ramen" . "ラーメン") ("gyoza" . "餃子")))
ユーティリティ
M-x ltsv:view-bufferを実行すると以下のように整形された ltsvが表示されます。
ltsviewの Emacs版実装というところでしょうか。
任意のファイルを指定する ltsv:view-fileというインタフェースもあります。