読者です 読者をやめる 読者になる 読者になる

Keep on moving

あんまりまとまってないことを書きますよ

Yet Another LTSV for Scalaを公開しました

@ さんのltsv4sをいじってて、もっとこんな機能が欲しいと思っていろいろ書きました。

リポジトリ

ライセンス

Apache 2.0
(オリジナルに準拠)

なんで既にあるのにLTSV用のライブラリなんて書いたの?

主に勉強用。あと Text::LTSVのライブラリドキュメント読んでて、欲しい機能を付け足したくなったため。

なにが違うの?

ダラダラ書くと

Text::LTSV の want_fields/ignore_fields欲しいなーと思った

want

      # Only want certain fields?
      my $p = Text::LTSV->new;
      $p->want_fields('hoge');
      $p->parse_line("hoge:foo\tbar:baz\n");

      # Vise versa
      my $p = Text::LTSV->new;
      $p->ignore_fields('hoge');
      $p->parse_line("hoge:foo\tbar:baz\n");

いちどMap[String, String]にしてから、いるやつ/いらないやつを削るよりも最初から
Mapに入れない方が無駄がないかなーと思ったため。
ltsv4sのScala-Parserに対して、手を入れる必要もあって結構つらかった。

parseエラーしたとき用にEither[,]で返すようにしたかった

何となく好みで。でも自分で使っててもEitherの扱いってめんどくさいので、
今後エラー時にexception返す/ 値はMap[]で返すって仕様に変えるかも。
毎回right.map(~~)って書くの結構キツい

感想

ltsv4sの実装がScala-persers使っててすげーキレイだなってのに感動したので
機能を追加してみたって感じです。
今後やりたいのはテストの追加/ ScalaChecke化などなどです。
あとは速度面の検証とかプロファイルとかを学んでみたいと思ってます。

ちなみに

まじめにお仕事に使いたいのであれば、ltsv4sとかltsv4jとかを使う方をお奨めします。