class Bundler::Molinillo::DependencyGraph::Log
A log for dependency graph actions
Public Class Methods
new()
click to toggle source
Initializes an empty log
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 12 def initialize @current_action = @first_action = nil end
Public Instance Methods
add_edge_no_circular(graph, origin, destination, requirement)
click to toggle source
@macro action
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 38 def add_edge_no_circular(graph, origin, destination, requirement) push_action(graph, AddEdgeNoCircular.new(origin, destination, requirement)) end
add_vertex(graph, name, payload, root)
click to toggle source
@macro action
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 28 def add_vertex(graph, name, payload, root) push_action(graph, AddVertex.new(name, payload, root)) end
detach_vertex_named(graph, name)
click to toggle source
@macro action
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 33 def detach_vertex_named(graph, name) push_action(graph, DetachVertexNamed.new(name)) end
each() { |action| ... }
click to toggle source
@!visibility private Enumerates each action in the log @yield [Action]
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 64 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)
click to toggle source
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 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 50 def pop!(graph) return unless action = @current_action unless @current_action = action.previous @first_action = nil end action.down(graph) action end
reverse_each() { |action| ... }
click to toggle source
@!visibility private Enumerates each action in the log in reverse order @yield [Action]
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 78 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)
click to toggle source
@macro action
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 90 def rewind_to(graph, tag) loop do action = pop!(graph) raise "No tag #{tag.inspect} found" unless action break if action.class.name == :tag && action.tag == tag end end
set_payload(graph, name, payload)
click to toggle source
@macro action
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 43 def set_payload(graph, name, payload) push_action(graph, SetPayload.new(name, payload)) end
tag(graph, tag)
click to toggle source
@macro action
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 23 def tag(graph, tag) push_action(graph, Tag.new(tag)) end
Private Instance Methods
push_action(graph, action)
click to toggle source
Adds the given action to the log, running the action @param [DependencyGraph] graph @param [Action] action @return The value returned by `action.up`
# File lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 104 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