Class: DeepEnd::Graph

Inherits:
Object
  • Object
show all
Defined in:
lib/deep_end.rb

Overview

Dependency Graph

Instance Method Summary collapse

Constructor Details

#initializeGraph

Returns a new instance of Graph.



35
36
37
# File 'lib/deep_end.rb', line 35

def initialize
  reset
end

Instance Method Details

#add_dependency(key, dependencies = []) ⇒ Object

Add a new node, causing dependencies to be re-evaluated



40
41
42
43
44
45
46
47
48
49
# File 'lib/deep_end.rb', line 40

def add_dependency(key, dependencies = [])

  raise SelfDependencyError, "An object's dependencies cannot contain itself" if dependencies.include? key

  node = node_for_key_or_new key
  dependencies.each do |dependency|
    node.addEdge(node_for_key_or_new(dependency))
  end
  resolve_dependencies
end

#resetObject

Return the graph to its virgin state



52
53
54
55
# File 'lib/deep_end.rb', line 52

def reset
  @resolved = []
  @nodes = []
end

#resolved_dependenciesObject



31
32
33
# File 'lib/deep_end.rb', line 31

def resolved_dependencies
  @resolved.map{|node| node.key}
end