Class TestTreeWalkers
In: lib/feed_tools/vendor/html5/tests/test_treewalkers.rb
Parent: Test::Unit::TestCase
TestTreeWalkers HTML5::TestSupport Test::Unit::TestCase dot/f_75.png

Methods

Included Modules

HTML5::TestSupport

Public Instance methods

[Source]

    # File lib/feed_tools/vendor/html5/tests/test_treewalkers.rb, line 24
24:   def concatenateCharacterTokens(tokens)
25:     charactersToken = nil
26:     for token in tokens
27:         type = token[:type]
28:         if [:Characters, :SpaceCharacters].include?(type)
29:             if charactersToken == nil
30:                 charactersToken = {:type => :Characters, :data => token[:data]}
31:             else
32:                 charactersToken[:data] += token[:data]
33:             end
34:         else
35:             if charactersToken != nil
36:                 yield charactersToken
37:                 charactersToken = nil
38:             end
39:             yield token
40:         end
41:     end
42:     yield charactersToken if charactersToken != nil
43:   end

[Source]

    # File lib/feed_tools/vendor/html5/tests/test_treewalkers.rb, line 45
45:   def convertTokens(tokens)
46:     output = []
47:     indent = 0
48:     concatenateCharacterTokens(tokens) do |token|
49:       case token[:type]
50:       when :StartTag, :EmptyTag
51:         output << "#{' '*indent}<#{token[:name]}>"
52:         indent += 2
53:         for name, value in token[:data].to_a.sort
54:           next if name=='xmlns'
55:           output << "#{' '*indent}#{name}=\"#{value}\""
56:         end
57:         indent -= 2 if token[:type] == :EmptyTag
58:       when :EndTag
59:         indent -= 2
60:       when :Comment
61:         output << "#{' '*indent}<!-- #{token[:data]} -->"
62:       when :Doctype
63:         if token[:name] and token[:name].any?
64:           output << "#{' '*indent}<!DOCTYPE #{token[:name]}>"
65:         else
66:           output << "#{' '*indent}<!DOCTYPE >"
67:         end
68:       when :Characters, :SpaceCharacters
69:         output << "#{' '*indent}\"#{token[:data]}\""
70:       end
71:     end
72:     output.join("\n")
73:   end

[Source]

     # File lib/feed_tools/vendor/html5/tests/test_treewalkers.rb, line 115
115:   def test_all_tokens
116:     expected = [
117:         {:data => [], :type => :StartTag, :name => 'html'},
118:         {:data => [], :type => :StartTag, :name => 'head'},
119:         {:data => [], :type => :EndTag,   :name => 'head'},
120:         {:data => [], :type => :StartTag, :name => 'body'},
121:         {:data => [], :type => :EndTag,   :name => 'body'},
122:         {:data => [], :type => :EndTag,   :name => 'html'}]
123:     for treeName, tree_class in $tree_types_to_test
124:       p = HTML5::HTMLParser.new(:tree => tree_class[:builder])
125:       document = p.parse("<html></html>")
126:       # document = tree_class.get(:adapter)(document)
127:       output = tree_class[:walker].new(document)
128:       expected.zip(output) do |expected_token, output_token|
129:         assert_equal(expected_token, output_token)
130:       end
131:     end
132:   end

[Validate]