class Nanoc::Core::ItemRepSelector::MicroGraph

Public Class Methods

new(reps) click to toggle source
# File lib/nanoc/core/item_rep_selector.rb, line 12
def initialize(reps)
  @reps = Set.new(reps)
  @stack = []
end

Public Instance Methods

mark_failed(dep) click to toggle source
# File lib/nanoc/core/item_rep_selector.rb, line 34
def mark_failed(dep)
  if @stack.include?(dep)
    raise Nanoc::Core::Errors::DependencyCycle.new(@stack + [dep])
  end

  @reps.delete(dep)
  @stack.push(dep)
end
mark_ok() click to toggle source
# File lib/nanoc/core/item_rep_selector.rb, line 30
def mark_ok
  @stack.pop
end
next() click to toggle source
# File lib/nanoc/core/item_rep_selector.rb, line 17
def next
  if @stack.any?
    @stack.last
  elsif @reps.any?
    @reps.each { |rep| break rep }.tap do |rep|
      @reps.delete(rep)
      @stack.push(rep)
    end
  else
    nil
  end
end