A log for dependency graph actions
@macro action
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 40
def add_edge_no_circular(graph, origin, destination, requirement)
push_action(graph, AddEdgeNoCircular.new(origin, destination, requirement))
end
@macro action
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 30
def add_vertex(graph, name, payload, root)
push_action(graph, AddVertex.new(name, payload, root))
end
{include:DependencyGraph#delete_edge} @param [Graph] graph the graph to perform the action on @param [String] origin_name @param [String] destination_name @param [Object] requirement @return (see Gem::Resolver::Molinillo::DependencyGraph#delete_edge)
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 50
def delete_edge(graph, origin_name, destination_name, requirement)
push_action(graph, DeleteEdge.new(origin_name, destination_name, requirement))
end
@macro action
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 35
def detach_vertex_named(graph, name)
push_action(graph, DetachVertexNamed.new(name))
end
@!visibility private Enumerates each action in the log @yield [Action]
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 76
def each
return enum_for unless block_given?
action = @first_action
loop do
break unless action
yield action
action = action.next
end
self
end
Pops the most recent action from the log and undoes the action @param [DependencyGraph] graph @return [Action] the action that was popped off the log
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 62
def pop!(graph)
return unless action = @current_action
unless @current_action = action.previous
@first_action = nil
end
action.down(graph)
action
end
@!visibility private Enumerates each action in the log in reverse order @yield [Action]
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 90
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
@macro action
# File rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb, line 102
def rewind_to(graph, tag)
loop do
action = pop!(graph)
raise "No tag #{tag.inspect} found" unless action
break if action.class.action_name == :tag && action.tag == tag
end
end