Hpricotの仕様が変わったようで、久しぶりにHTMLヘルプの自動コンパイルスクリプトを走らせたらエラーが出るようになった。と言っても、お行儀の悪いHTMLを書いていたのが原因で、Hpricotには問題は無いのだと思う。
大した話ではないけど、いちおうメモ。
問題のHTMLは、次のようにtitle要素がspanタグで囲まれた部分がある。(このspanタグは、日本部分と英語部分を Hpricot::search("span.e").remove で切り分けるのに使う。)
<html> <head> <span class="e"><title>English Title</title></class> <span class="j"><title>日本語タイトル</title></class> </head> <body> 本文 </body> </html>
次のようなRubyスクリプトで、このHTMLファイル(org.html)をHpricot(1.2.0)でロードし、そのままto_htmlで書き出す。
require 'rubygems' require 'hpricot' h = Hpricot(open("org.html")) File.open("result.html", "w").print h.to_html
これを実行すると、出力されたresult.htmlは次のようになる。
<html> <head> </head><span class="e" /><title>English Title</title></class> <span class="j" /><title>日本語タイトル</title></class> </head> <body> 本文 </body> </html>
このように3行目の先頭にが挿入されてしまう。
以前は、result.htmlにはorg.htmlと(ほぼ)同じ内容が出力されていた。
Rubyスクリプトを修正してなんとか対処しようとしたが、無理っぽいので元のHTMLファイルを書き直した。
さしあたり次のようにclassをtitleに直接与えたら解決した*1。
<html> <head> <title class="e">English Title</title> <title class="j">日本語タイトル</title> </head> <body> 本文 </body> </html>