module Forester::Iterators
Constants
- TRAVERSAL_MODES
Public Instance Methods
each_content(options = {})
click to toggle source
# File lib/forester/tree_node_ext/iterators.rb, line 26 def each_content(options = {}) node_enumerator = each_node(options) Enumerator.new do |yielder| stop = false until stop begin yielder << node_enumerator.next.content rescue StopIteration stop = true end end end end
each_level()
click to toggle source
# File lib/forester/tree_node_ext/iterators.rb, line 41 def each_level Enumerator.new do |yielder| level = [self] until level.empty? yielder << level level = level.flat_map(&:children) end end end
each_node(options = {}, &block)
click to toggle source
# File lib/forester/tree_node_ext/iterators.rb, line 10 def each_node(options = {}, &block) default_options = { traversal: :depth_first } options = default_options.merge(options) method_name = traversal_modes[options[:traversal]] if method_name send(method_name, &block) else available = traversal_modes.keys.join(', ') raise ArgumentError, "invalid traversal mode: #{options[:traversal]} (#{available})" end end
Private Instance Methods
traversal_modes()
click to toggle source
# File lib/forester/tree_node_ext/iterators.rb, line 53 def traversal_modes TRAVERSAL_MODES end