LoginSignup
5
3

More than 5 years have passed since last update.

Elixir の LTSV パーサがなかったので作ってみた

Posted at

タイトル通り Elixir の LTSV パーサがなかった。
http://ltsv.org/ の Parser Implementations になかった。
github で ltsv で検索しても出てこなかった。

ということで作ってみましたので、何はともあれ star つけてやってください。よろしくお願いします。
https://github.com/ma2gedev/ltsvex

使い方

LTSV.parse は HashDict のリストに変換されます。

iex(1)> LTSV.parse "name:taka\taddress:Japan\nname:tetsuo\taddress:Sea"
[#HashDict<[{"address", "Japan"}, {"name", "taka"}]>,
 #HashDict<[{"address", "Sea"}, {"name", "tetsuo"}]>]

LTSV.dump は HashDict のリストから LTSV 文字列を作成します。

iex(4)> LTSV.dump [HashDict.new([{"name", "taka"},{"address", "Japan"}]),
...(4)>            HashDict.new([{"name", "tetsuo"}, {"address", "Sea"}])]
"address:Japan\tname:taka\naddress:Sea\tname:tetsuo"

以上。

まとめ

作るにあたり他言語の実装を色々参考にさせていただきました。Ruby, JavaScript, Erlang, Scala, Perl, D などなど。
今の実装はシンプルすぎるので、もう少し使いやすい形にしたいなとは思っています。例えば atom をキーとした HashDict を受け取れるようにするとか。
それと、ちょっとしたことでエラーが起きたり問題が多いので、ちょこちょこ直していければなと思ってます。というか教えていただけると嬉しいです。

明日は @mururu さんです。昨日の記事にも出ていましたが、Enumerable 気になりますね。

See Also

http://ltsv.org/
https://github.com/condor/ltsv
https://github.com/sasaplus1/ltsv.js
https://github.com/shirou/erlang-ltsv
https://github.com/yteraoka/ltsv
https://github.com/seratch/ltsv4s
https://github.com/repeatedly/ltsv-d

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3