Class HTML5::TreeWalkers::NonRecursiveTreeWalker
In: lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb
Parent: TreeWalkers::Base
Phase XmlElementPhase InTablePhase RootElementPhase InHeadPhase AfterHeadPhase AfterFramesetPhase XmlRootPhase InTableBodyPhase InFramesetPhase InColumnGroupPhase InitialPhase InCaptionPhase TrailingEndPhase InSelectPhase BeforeHeadPhase AfterBodyPhase InCellPhase InBodyPhase InRowPhase XhmlRootPhase Exception SerializeError EOF AssertionError ParseError HTMLSanitizer HTMLTokenizer XMLParser XHTMLParser HTMLParser String EncodingBytes HTMLSerializer XHTMLSerializer TreeWalkers::Base NonRecursiveTreeWalker TreeWalker TreeWalker Base TreeWalker Element DocumentFragment Node CommentNode DocumentType TextNode Document Base::Node Node Node Base::TreeBuilder TreeBuilder TreeBuilder TreeBuilder Element DocumentFragment CommentNode DocumentType TextNode Document Element DocumentFragment CommentNode DocumentType TextNode Document Base InjectMetaCharset OptionalTagFilter WhitespaceFilter HTMLSanitizeFilter HTMLSanitizeModule Enumerable TestData SimpleDelegator HTMLInputStream EncodingParser ContentAttrParser Node TreeBuilder lib/feed_tools/vendor/html5/lib/html5/html5parser/trailing_end_phase.rb lib/feed_tools/vendor/html5/lib/html5/constants.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_frameset_phase.rb lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb lib/feed_tools/vendor/html5/lib/html5/serializer/xhtmlserializer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_caption_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_frameset_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/serializer/htmlserializer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/root_element_phase.rb lib/feed_tools/vendor/html5/lib/html5/tokenizer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/before_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_select_phase.rb lib/feed_tools/vendor/html5/lib/html5/inputstream.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_row_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_cell_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/sanitizer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_column_group_phase.rb lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb lib/feed_tools/vendor/html5/lib/html5/treewalkers/hpricot.rb Hpricot TokenConstructor lib/feed_tools/vendor/html5/lib/html5/treewalkers/rexml.rb REXML lib/feed_tools/vendor/html5/lib/html5/treewalkers/simpletree.rb SimpleTree TreeWalkers HTMLSanitizeModule lib/feed_tools/vendor/html5/lib/html5/treebuilders/hpricot.rb Hpricot lib/feed_tools/vendor/html5/lib/html5/treebuilders/base.rb Base lib/feed_tools/vendor/html5/lib/html5/treebuilders/rexml.rb REXML lib/feed_tools/vendor/html5/lib/html5/treebuilders/simpletree.rb SimpleTree TreeBuilders lib/feed_tools/vendor/html5/lib/html5/filters/whitespace.rb lib/feed_tools/vendor/html5/lib/html5/filters/optionaltags.rb lib/feed_tools/vendor/html5/lib/html5/filters/base.rb lib/feed_tools/vendor/html5/lib/html5/filters/inject_meta_charset.rb lib/feed_tools/vendor/html5/lib/html5/filters/sanitizer.rb Filters Sniffer lib/feed_tools/vendor/html5/tests/preamble.rb TestSupport HTML5 dot/m_75_0.png

Methods

Public Instance methods

[Source]

     # File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 98
 98:   def each
 99:     current_node = @tree
100:     while current_node != nil
101:       details = node_details(current_node)
102:       has_children = false
103: 
104:       case details.shift
105:       when :DOCTYPE
106:         yield doctype(*details)
107: 
108:       when :TEXT
109:         text(*details) {|token| yield token}
110: 
111:       when :ELEMENT
112:         name, attributes, has_children = details
113:         if VOID_ELEMENTS.include?(name)
114:           yield empty_tag(name, attributes.to_a, has_children)
115:           has_children = false
116:         else
117:           yield start_tag(name, attributes.to_a)
118:         end
119: 
120:       when :COMMENT
121:         yield comment(details[0])
122: 
123:       when :DOCUMENT, :DOCUMENT_FRAGMENT
124:         has_children = true
125: 
126:       when nil
127:         # ignore (REXML::XMLDecl is an example)
128: 
129:       else
130:         yield unknown(details[0])
131:       end
132: 
133:       first_child = has_children ? first_child(current_node) : nil
134:       if first_child != nil
135:         current_node = first_child
136:       else
137:         while current_node != nil
138:           details = node_details(current_node)
139:           if details.shift == :ELEMENT
140:             name, attributes, has_children = details
141:             yield end_tag(name) if !VOID_ELEMENTS.include?(name)
142:           end
143: 
144:           if @tree == current_node
145:             current_node = nil
146:           else
147:             next_sibling = next_sibling(current_node)
148:             if next_sibling != nil
149:               current_node = next_sibling
150:               break
151:             end
152: 
153:             current_node = parent(current_node)
154:           end
155:         end
156:       end
157:     end
158:   end

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 86
86:   def first_child(node)
87:     raise NotImplementedError
88:   end

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 90
90:   def next_sibling(node)
91:     raise NotImplementedError
92:   end

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 82
82:   def node_details(node)
83:     raise NotImplementedError
84:   end

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 94
94:   def parent(node)
95:     raise NotImplementedError
96:   end

[Validate]