std.regexの気になる所
とりあえず現状気になる所をまとめておく(後々MLにでも投げる?).
- キャッシュ
最後のパターンと属性が一致していればそれを返す.このためにstaticで持ったり生成時に比較するのはどうかなぁと思う.やるなら使えるレベルで欲しいし,無理でもtemplateでキャッシュを操作する関数と保持する変数をセットで提供して,mixinすればいいかなぁと思っている.
- matchを呼ぶ以前の動作
RegexMatch!(string) regexMatch;
として生成しメソッドを呼ぶとRangeErrorとかを投げる場合がある.matchを呼ぶことを前提にしているのかどうか分からないので気になる(それならドキュメントに書くべきかなぁと思う).matchを呼ぶ以前ではregexMatch.emptyでtrueを返して欲しい.
- 書き方がよく分からない
インターフェイスがシンプルになった故に,std.regexpで提供されてたものはどう書けばいいのかなぁと.
- matchの結果が怪しい
auto m = match("abc", regex("abcd")); writeln(m.src, " ", m.src_start, " ", m.empty);
結果が
3 3 true
となる.このケースはマッチしてないと思うので,バグのような気もする.試しにRubyでやってみても
> "abc" =~ /abcd/ => nil
となる(おかしいのはm.src_startが移動してる所で,マッチしてないのに移動してもいいのかなと).