a6429f8c22
Completely removed the html5lib sanitizer. Fixed the string-handling to work in both Ruby 1.8.x and 1.9.2. There are still, inexplicably, two functional tests that fail. But the rest seems to work quite well.
48 lines
1.2 KiB
Ruby
48 lines
1.2 KiB
Ruby
require 'html5/treewalkers/base'
|
|
|
|
module HTML5
|
|
module TreeWalkers
|
|
module SimpleTree
|
|
class TreeWalker < HTML5::TreeWalkers::Base
|
|
include HTML5::TreeBuilders::SimpleTree
|
|
|
|
def walk(node)
|
|
case node
|
|
when Document, DocumentFragment
|
|
return
|
|
|
|
when DocumentType
|
|
yield doctype(node.name, node.public_id, node.system_id)
|
|
|
|
when TextNode
|
|
text(node.value) {|token| yield token}
|
|
|
|
when Element
|
|
if VOID_ELEMENTS.include?(node.name)
|
|
yield empty_tag(node.name, node.attributes, node.hasContent())
|
|
else
|
|
yield start_tag(node.name, node.attributes)
|
|
for child in node.childNodes
|
|
walk(child) {|token| yield token}
|
|
end
|
|
yield end_tag(node.name)
|
|
end
|
|
|
|
when CommentNode
|
|
yield comment(node.value)
|
|
|
|
else
|
|
puts '?'
|
|
yield unknown(node.class)
|
|
end
|
|
end
|
|
|
|
def each
|
|
for child in @tree.childNodes
|
|
walk(child) {|node| yield node}
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|