Class: JobWorkflow::TaskGraph
- Inherits:
-
Object
- Object
- JobWorkflow::TaskGraph
- Includes:
- Enumerable, TSort
- Defined in:
- lib/job_workflow/task_graph.rb
Instance Method Summary collapse
-
#add(task) ⇒ Object
: (Task) -> void.
-
#each ⇒ Object
: () { (Task) -> void } -> void.
-
#fetch(task_name) ⇒ Object
: (Symbol?) -> Task?.
-
#initialize ⇒ TaskGraph
constructor
: () -> void.
-
#tsort_each_child(task) ⇒ Object
: (Task task) { (Task) -> void } -> void.
-
#tsort_each_node ⇒ Object
: () { (Task) -> void } -> void.
Constructor Details
#initialize ⇒ TaskGraph
: () -> void
9 10 11 |
# File 'lib/job_workflow/task_graph.rb', line 9 def initialize @tasks = {} #: Hash[Symbol, Task] end |
Instance Method Details
#add(task) ⇒ Object
: (Task) -> void
14 15 16 |
# File 'lib/job_workflow/task_graph.rb', line 14 def add(task) @tasks[task.task_name] = task end |
#each ⇒ Object
: () { (Task) -> void } -> void
24 25 26 |
# File 'lib/job_workflow/task_graph.rb', line 24 def each(&) tsort.each(&) end |
#fetch(task_name) ⇒ Object
: (Symbol?) -> Task?
19 20 21 |
# File 'lib/job_workflow/task_graph.rb', line 19 def fetch(task_name) @tasks[task_name] end |
#tsort_each_child(task) ⇒ Object
: (Task task) { (Task) -> void } -> void
34 35 36 37 38 39 40 41 |
# File 'lib/job_workflow/task_graph.rb', line 34 def tsort_each_child(task) task.depends_on.each do |dep_task_name| dep_task = @tasks[dep_task_name] raise ArgumentError, "Task '#{task.task_name}' depends on missing task '#{dep_task_name}'" if dep_task.nil? yield(dep_task) end end |
#tsort_each_node ⇒ Object
: () { (Task) -> void } -> void
29 30 31 |
# File 'lib/job_workflow/task_graph.rb', line 29 def tsort_each_node(&) @tasks.values.each(&) end |