Class: DirectedGraph::JobRunner

Inherits:
Object
  • Object
show all
Includes:
TSort
Defined in:
lib/directed_graph/job_runner.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeJobRunner

Returns a new instance of JobRunner.



13
14
15
# File 'lib/directed_graph/job_runner.rb', line 13

def initialize
  @jobs = Hash.new{|h,k| h[k] = []}
end

Class Method Details

.sorted_vertices(vertices_and_children) ⇒ Object



5
6
7
8
9
# File 'lib/directed_graph/job_runner.rb', line 5

def self.sorted_vertices(vertices_and_children)
  runner = JobRunner.new
  vertices_and_children.each { |v, c| runner.add(v, c) }
  runner.tsort.reverse
end

Instance Method Details

#add(name, dependencies = []) ⇒ Object



17
18
19
# File 'lib/directed_graph/job_runner.rb', line 17

def add(name, dependencies=[])
  @jobs[name] = dependencies
end

#tsort_each_child(node, &block) ⇒ Object



25
26
27
# File 'lib/directed_graph/job_runner.rb', line 25

def tsort_each_child(node, &block)
  @jobs[node].each(&block) if @jobs.has_key?(node)
end

#tsort_each_node(&block) ⇒ Object



21
22
23
# File 'lib/directed_graph/job_runner.rb', line 21

def tsort_each_node(&block)
  @jobs.each_key(&block)
end