In article <20030216134717.4407E3544A / arika.org>,
  akira yamada / やまだあきら <akira / ruby-lang.org> writes:

> cvs importしました。

私の書いたぶんも commit しました。

とりあえず C レベルの API が Ruby から使えるだけなので、あまり Ruby ら
しい API ではないのですが、現在でも

dump-tree.rb:
require 'tidy'

class Tidy
  class Node
    def trav(indent='')
      print indent, self.type
      case self.type
      when :Start; print ':', self.name
        unless (attr = self.attr_alist).empty?
          attr.each {|name, value|
            print ' ', name, '=', value.dump
          }
        end
      when :Text; print ':', self.text.dump
      end
      print "\n"
      n = self.child
      indent = indent + ' '
      while n
        n.trav(indent)
        n = n.next
      end
    end
  end
end

Tidy.new.parse_io(STDIN).root.trav

というように書くと

% echo '<a href=b>c</a>'|ruby dump-tree.rb
Root
 Start:html
  Start:head
   Start:title
  Start:body
   Start:a href="b"
    Text:"c\n"
   Text:""

なんてことができます。
つまり、HTML を tidylib に parse させて木構造を取り出すことができます。

(とくに怪しげな) HTML を扱いたい時には便利なのではないかと思います。
-- 
[田中 哲][たなか あきら][Tanaka Akira]