@seratch さんのltsv4sをいじってて、もっとこんな機能が欲しいと思っていろいろ書きました。
なんで既にあるのに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とかを使う方をお奨めします。