Ruby用のHTMLスキャナであるhtmlsplitと、HTML補正器であるhtmlrepairのパッチ。htmlsplit概要htmlsplitは、簡便なHTMLスキャナ。HTMLデータを、開始タグ、終了タグ、文字データなどに区切った配列にする。扱いが容易なのと、おかしなHTMLデータであっても例外を発生させずにできるだけ読もうとする。信頼できない(不正な)HTMLデータをスキャンするのに重宝する。HTMLテキストデータを渡すだけ。HTMLSplit#documentは、開始タグなどを表すオブジェクトの配列になっている。tag}実行結果は、次のようになる。@name="body">各クラスとその意味は次のとおり。(PI)HTMLテキストの文字コードがUTF-8のときに、次のように明示的に指定すると、属性値でのコードポイント0x100以上の文字参照を取り込むようになる。UTF-8でないときは、実体参照(&lt;など)および0xff以下の文字参照のみを取り込む。tag}実行結果は次のとおり。bar="(一)">制限についてhtmlsplitは、簡便なHTMLスキャナなので、動作に一部制限がある。&lt;や&#41;はそのまま残る。XML形式の空要素タグの書き方で書いてあっても、empty_tagsにないものは、StartTagオブジェクトを返す。YES"となっているので、属性名の省略が有効になっている。正しくは、DTDで名前字句の択一式となっている属性は、属性名(値ではない)を省略できる。ライセンスオリジナルのとおり。オリジナルはRuby's(http://www.ruby-lang.org/ja/LICENSE.txtとGPLのデュアルライセンス)。Changes:リファクタリング。スクリプトの文字コードをUTF-8に変更。空要素タグと判定するタグを変更できるようにした。HTMLSplit#empty_tags(配列)を変更すればいい。HTMLSplit.new()でHTMLテキストを渡さなくてもいいようにした。HTMLSplit#set_html()を新設。"x:foo"scanner.set_html(html)テストケースを追加。パッチhtmlsplit-1.0.2-q2.diff公開日2004.10.29内容HTMLデータの文字コードが$KCODE依存になっていたが、明示的に指定できるようにした。HTMLSplit.new()の第2引数で指定する。XMLを参考にし、サロゲート領域などは取り込まない。XMLスタイルの空要素タグを解釈するようにした。StartTagと見なす。不正なタグに対処した。'<'のみ、'<>'、'<0'など。閉じない開始タグ、閉じない終了タグに対処した。テストケースを追加した。パッチhtmlsplit-1.0.2-q1.diffhtmlrepairhtmlrepairは、htmlsplitと組み合わせて、HTMLデータの終了タグを補う。入力されるHTMLデータがvalid(妥当)であると期待できない場合に使用する。フォントタグが開いたままになることなどを防止できる。ライセンスオリジナルのとおり。オリジナルはRuby's(http://www.ruby-lang.org/ja/LICENSE.txtとGPLのデュアルライセンス)。ダウンロードオリジナルはこちら;Script/Ruby内容テストケースを追加。パッチhtmlrepair-1.0.1-q2.diff日付2004.10.29内容テストケースを追加。多くの場合に要素が正しい入れ子関係になるように修正。余分な終了タグが生成される点を修正。