lib/better_html/ast/iterator.rb in better_html-1.0.1 vs lib/better_html/ast/iterator.rb in better_html-1.0.2

- old
+ new

@@ -3,26 +3,26 @@ module BetterHtml module AST class Iterator def initialize(types, &block) - @types = Array.wrap(types) + @types = types.nil? ? nil : Array.wrap(types) @block = block end def traverse(node) return unless node.is_a?(::AST::Node) - @block.call(node) if @types.include?(node.type) + @block.call(node) if @types.nil? || @types.include?(node.type) traverse_all(node) end def traverse_all(nodes) nodes.to_a.each do |node| traverse(node) if node.is_a?(::AST::Node) end end - def self.descendants(root_node, type, &block) + def self.descendants(root_node, type) Enumerator.new do |yielder| t = new(type) { |node| yielder << node } t.traverse(root_node) end end