class CollectiveIdea::Acts::NestedSet::Iterator

Attributes

objects[R]

Public Class Methods

new(objects) click to toggle source
# File lib/awesome_nested_set/iterator.rb, line 7
def initialize(objects)
  @objects = objects
end

Public Instance Methods

each_with_level() { |o, length - 1| ... } click to toggle source
# File lib/awesome_nested_set/iterator.rb, line 11
def each_with_level
  path = [nil]
  objects.each do |o|
    if o.parent_id != path.last
      # we are on a new level, did we descend or ascend?
      if path.include?(o.parent_id)
        # remove wrong tailing paths elements
        path.pop while path.last != o.parent_id
      else
        path << o.parent_id
      end
    end
    yield(o, path.length - 1)
  end
end