rubyでhtmlのタグを取り除くプログラムを再発明してみた(ネストしたタグもそれなりに対応)

えーっと。未来の自分への贈り物です
同じようなコードは3度ぐらい書いた記憶があります。。。

こうすればもっと奇麗だよ!!!はありがたいのですがノーサンキューです(あまり興味がない)
こうすればもっと効率的 or 速いよ!! ってかバグあるじゃん!!!ってか正規表現でもかけちゃうぜ!!!はウェルカムです
erace_all を trueにすると中身も消しちゃいます

  def remove_html_tag(html,tag,erace_all = false)
    poss = []
    last_hit = 0
    next_check_start = 0
    str = html.clone
    strori = str.clone
    loop do
      pos,size=nil,nil
      if pos = str =~ /(<#{tag}.*?>)/
        size = $1.size
      else
        break
      end
      last_hit = next_check_start + pos
      next_check_start = last_hit + size
      poss << last_hit
      str = str[pos+size..-1]
    end

    poss.reverse!
    str = strori

    poss.each do |pos|
      str1 = str[0..pos-1]
      str2 = str[pos..-1]
      str1 = '' if pos == 0
      if erace_all
        str2.sub!(/<#{tag}.*?>(.*?)<\/#{tag}>/mi){''}
      else
        str2.sub!(/<#{tag}.*?>(.*?)<\/#{tag}>/mi){$1}
      end
      str = str1 + str2
    end
    return str
  end