module Algorithmable::Cups::CircularDependencies

Public Instance Methods

dfs(item, dependencies, visited) { |item, dep| ... } click to toggle source
# File lib/algorithmable/cups/circular_dependencies.rb, line 12
def dfs(item, dependencies, visited, &block)
  next_items = dependencies[item]
  return [] unless next_items
  visited << item

  next_items.each do |dep|
    if visited.include? dep
      yield item, dep if block_given?
      next
    end
    dfs(dep, dependencies, visited, &block)
  end
end
lib_dependencies(item, dependencies) click to toggle source
# File lib/algorithmable/cups/circular_dependencies.rb, line 4
def lib_dependencies(item, dependencies)
  visited = []
  dfs(item, dependencies, visited) do |entry, dep|
    puts "circular dependency: #{entry} <=> #{dep}"
  end
  visited
end