何を使って実装するのが妥当なのか。
Oga と htmlentities は String#gsub での置換で実装されている。
一方で Nokogiri はパースしてからテキストノードの値として取得する実装っぽい。
Oga を使っているなら Oga を使い、そうでないなら、htmlentities を入れて使うのが手頃だろうか。
CGI.unescape_html
文字参照は & > < " のみ対応。
CGI.unescape_html('©') # => "©"
CGI.unescape_html('&')  # => "&"
CGI.unescape_html('
')  # => "\n"
gem: htmlentities
HTMLEntities.new.decode('©') # => "©"
HTMLEntities.new.decode('&')  # => "&"
HTMLEntities.new.decode('
')  # => "\n"
gem: Nokogiri
Nokogiri::HTML.parse('©').text # => "©"
Nokogiri::HTML.parse('&').text  # => "&"
Nokogiri::HTML.parse('
').text  # => "\n"
gem: Oga
YorickPeterse/oga: Oga is an XML/HTML parser written in Ruby.
Oga::HTML::Entities.decode('©') # => "©"
Oga::HTML::Entities.decode('&')  # => "&"
Oga::HTML::Entities.decode('
')  # => "\n"