HTML Chunker
コメントとタグを分けたくて正規表現を使っていたら,* のマッチがある程度以上長いときに処理が帰ってこないことがあったので,簡単にパーザを書いた。正規表現使っていないのに scan より遅いのは,再帰が C レベルか Ruby レベルかが効いているのかな。
def rb_parse_html str ary = Array.new tag = false bp = ep = 0 while ep = str.index(tag ? ">" : "<", bp) do ep += 1 if tag ary.push [tag, str[bp, ep - bp]] if ep > bp tag = ! tag bp = ep end ary.push [tag, str[bp, str.size - bp]] if bp < str.size return ary end