You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

108 lines
2.1 KiB

require 'pp'
module Hpricot
# :stopdoc:
class Elements
def pretty_print(q)
q.object_group(self) { super }
end
alias inspect pretty_print_inspect
end
class Doc
def pretty_print(q)
q.object_group(self) { @children.each {|elt| q.breakable; q.pp elt } }
end
alias inspect pretty_print_inspect
end
class Elem
def pretty_print(q)
if empty?
q.group(1, '{emptyelem', '}') {
q.breakable; q.pp @stag
}
else
q.group(1, "{elem", "}") {
q.breakable; q.pp @stag
if @children
@children.each {|elt| q.breakable; q.pp elt }
end
if @etag
q.breakable; q.pp @etag
end
}
end
end
alias inspect pretty_print_inspect
end
module Leaf
def pretty_print(q)
q.group(1, '{', '}') {
q.text self.class.name.sub(/.*::/,'').downcase
if rs = @raw_string
rs.scan(/[^\r\n]*(?:\r\n?|\n|[^\r\n]\z)/) {|line|
q.breakable
q.pp line
}
elsif self.respond_to? :to_s
q.breakable
q.text self.to_s
end
}
end
alias inspect pretty_print_inspect
end
class STag
def pretty_print(q)
q.group(1, '<', '>') {
q.text @name
if @raw_attributes
@raw_attributes.each {|n, t|
q.breakable
if t
q.text "#{n}=\"#{Hpricot.uxs(t)}\""
else
q.text n
end
}
end
}
end
alias inspect pretty_print_inspect
end
class ETag
def pretty_print(q)
q.group(1, '</', '>') {
q.text @name
}
end
alias inspect pretty_print_inspect
end
class Text
def pretty_print(q)
q.text @content.dump
end
end
class BogusETag
def pretty_print(q)
q.group(1, '{', '}') {
q.text self.class.name.sub(/.*::/,'').downcase
if rs = @raw_string
q.breakable
q.text rs
else
q.text "</#{@name}>"
end
}
end
end
# :startdoc:
end