class LegacyFacter::Core::DirectedGraph
def acyclic?
def acyclic? cycles.empty? end
def cycles
def cycles cycles = [] each_strongly_connected_component do |component| cycles << component if component.size > 1 end cycles end
def tsort
def tsort missing = Set.new(values.flatten) - Set.new(keys) unless missing.empty? raise MissingVertex, "Cannot sort elements; cannot depend on missing elements #{missing.to_a}" end super rescue TSort::Cyclic raise CycleError, "Cannot sort elements; found the following cycles: #{cycles.inspect}" end
def tsort_each_child(node)
def tsort_each_child(node) fetch(node, []).each do |child| yield child end end