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.
108 lines
2.1 KiB
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
|