LTSVパーサの Emacs Lisp実装

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版実装というところでしょうか。

https://github.com/syohex/emacs-ltsv/raw/master/images/ltsv-el.png


任意のファイルを指定する ltsv:view-fileというインタフェースもあります。