Class: Gem::Resolver::Molinillo::DependencyGraph::Log
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Enumerable
|
|
Inherits: | Object |
Defined in: | lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb |
Overview
A log for dependency graph actions
Class Method Summary
-
.new ⇒ Log
constructor
Initializes an empty log.
Instance Method Summary
-
#add_edge_no_circular(graph, origin, destination, requirement)
Adds a new
Edge
to the dependency graph without checking for circularity. -
#add_vertex(graph, name, payload, root)
Adds a vertex with the given name, or updates the existing one.
-
#delete_edge(graph, origin_name, destination_name, requirement)
Deletes an
Edge
from the dependency graph -
#detach_vertex_named(graph, name)
Detaches the #vertex_named
name
Vertex
from the graph, recursively removing any non-root vertices that were orphaned in the process -
#pop!(graph) ⇒ Action
Pops the most recent action from the log and undoes the action.
-
#rewind_to(graph, tag)
Rewinds the graph to the state tagged as #tag
-
#set_payload(graph, name, payload)
Sets the payload of the vertex with the given name
-
#tag(graph, tag)
Tags the current state of the dependency as the given tag
-
#each {|Action| ... }
private
Enumerates each action in the log.
-
#push_action(graph, action) ⇒ Object
private
Adds the given action to the log, running the action.
-
#reverse_each {|Action| ... }
private
Enumerates each action in the log in reverse order.
Constructor Details
.new ⇒ Log
Initializes an empty log
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 15
def initialize @current_action = @first_action = nil end
Instance Method Details
#add_edge_no_circular(graph, origin, destination, requirement)
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 41
def add_edge_no_circular(graph, origin, destination, requirement) push_action(graph, AddEdgeNoCircular.new(origin, destination, requirement)) end
#add_vertex(graph, name, payload, root)
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 31
def add_vertex(graph, name, payload, root) push_action(graph, AddVertex.new(name, payload, root)) end
#delete_edge(graph, origin_name, destination_name, requirement)
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 51
def delete_edge(graph, origin_name, destination_name, requirement) push_action(graph, DeleteEdge.new(origin_name, destination_name, requirement)) end
#detach_vertex_named(graph, name)
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 36
def detach_vertex_named(graph, name) push_action(graph, DetachVertexNamed.new(name)) end
#each {|Action| ... } (private)
Enumerates each action in the log
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 77
def each return enum_for unless block_given? action = @first_action loop do break unless action yield action action = action.next end self end
#pop!(graph) ⇒ Action
Pops the most recent action from the log and undoes the action
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 63
def pop!(graph) return unless action = @current_action unless @current_action = action.previous @first_action = nil end action.down(graph) action end
#push_action(graph, action) ⇒ Object
(private)
Adds the given action to the log, running the action
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 117
def push_action(graph, action) action.previous = @current_action @current_action.next = action if @current_action @current_action = action @first_action ||= action action.up(graph) end
#reverse_each {|Action| ... } (private)
Enumerates each action in the log in reverse order
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 91
def reverse_each return enum_for(:reverse_each) unless block_given? action = @current_action loop do break unless action yield action action = action.previous end self end
#rewind_to(graph, tag)
#set_payload(graph, name, payload)
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 56
def set_payload(graph, name, payload) push_action(graph, SetPayload.new(name, payload)) end
#tag(graph, tag)
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb', line 26
def tag(graph, tag) push_action(graph, Tag.new(tag)) end