class Deptree::Visitor
Public Class Methods
each(roots, &block)
click to toggle source
# File lib/deptree/visitor.rb, line 5 def self.each(roots, &block) new(roots).visit(&block) end
new(roots)
click to toggle source
# File lib/deptree/visitor.rb, line 9 def initialize(roots) @roots = roots end
Public Instance Methods
visit(&block)
click to toggle source
# File lib/deptree/visitor.rb, line 13 def visit(&block) sorted.each(&block) end
Private Instance Methods
nodes()
click to toggle source
# File lib/deptree/visitor.rb, line 23 def nodes queue = @roots.dup nodes = Set.new while (node = queue.shift) do unless nodes.include?(node) nodes.add(node) node.prerequisites.each { |child| queue.push(child) } end end nodes end
sorted()
click to toggle source
# File lib/deptree/visitor.rb, line 19 def sorted Kahn.new(nodes).topsort end