A directed acyclic graph that is tuned to hold named dependencies
| Edge | = | Struct.new(:origin, :destination, :requirement) | A directed edge of a {DependencyGraph} @attr [Vertex] origin The origin of the directed edge @attr [Vertex] destination The destination of the directed edge @attr [Object] requirement The requirement the directed edge represents |
@return [Boolean] whether the two dependency graphs are equal, determined
by a recursive traversal of each {#root_vertices} and its
{Vertex#successors}
@param [String] name @param [Object] payload @param [Array<String>] parent_names @param [Object] requirement the requirement that is requiring the child @return [void]
Adds a vertex with the given name, or updates the existing one. @param [String] name @param [Object] payload @return [Vertex] the vertex that was added to `self`
Detaches the {vertex_named} `name` {Vertex} from the graph, recursively removing any non-root vertices that were orphaned in the process @param [String] name @return [Array<Vertex>] the vertices which have been detached
Enumerates through the vertices of the graph. @return [Array<Vertex>] The graph‘s vertices.
Initializes a copy of a {DependencyGraph}, ensuring that all {vertices} are properly copied. @param [DependencyGraph] other the graph to copy.
@param [String] name @return [Vertex,nil] the root vertex with the given name
Sets the payload of the vertex with the given name @param [String] name the name of the vertex @param [Object] payload the payload @return [Void]