class Pallets::Graph
Attributes
nodes[R]
Public Class Methods
new()
click to toggle source
# File lib/pallets/graph.rb, line 7 def initialize @nodes = {} end
Public Instance Methods
add(node, dependencies)
click to toggle source
# File lib/pallets/graph.rb, line 11 def add(node, dependencies) raise WorkflowError, "Task #{node} is already defined in this workflow. "\ "Use `task '#{node}', as: 'FooBar'` to define an "\ "alias and reuse task" if nodes.key?(node) nodes[node] = dependencies end
each() { |node, parents(node)| ... }
click to toggle source
# File lib/pallets/graph.rb, line 27 def each return enum_for(__method__) unless block_given? tsort_each do |node| yield(node, parents(node)) end end
empty?()
click to toggle source
# File lib/pallets/graph.rb, line 23 def empty? nodes.empty? end
parents(node)
click to toggle source
# File lib/pallets/graph.rb, line 19 def parents(node) nodes[node] end
Private Instance Methods
tsort_each_child(node, &block)
click to toggle source
# File lib/pallets/graph.rb, line 43 def tsort_each_child(node, &block) nodes.fetch(node).each(&block) rescue KeyError raise WorkflowError, "Task #{node} is marked as a dependency but not defined" end
tsort_each_node(&block)
click to toggle source
# File lib/pallets/graph.rb, line 39 def tsort_each_node(&block) nodes.each_key(&block) end