class Gem::Molinillo::DependencyGraph::Log
依赖图操作的日志
公共类方法
new() 点击以切换源代码
初始化一个空日志
# File rubygems/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 15 def initialize @current_action = @first_action = nil end
公共实例方法
add_edge_no_circular(graph, origin, destination, requirement) 点击以切换源代码
@macro action
# File rubygems/vendor/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) 点击以切换源代码
@macro action
# File rubygems/vendor/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) 点击以切换源代码
{include:DependencyGraph#delete_edge} @param [Graph] graph 要执行操作的图 @param [String] origin_name @param [String] destination_name @param [Object] requirement @return (参见 DependencyGraph#delete_edge
)
# File rubygems/vendor/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) 点击以切换源代码
@macro action
# File rubygems/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 36 def detach_vertex_named(graph, name) push_action(graph, DetachVertexNamed.new(name)) end
each() { |action| ... } 点击以切换源代码
@!visibility private 枚举日志中的每个操作 @yield [Action]
# File rubygems/vendor/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) 点击以切换源代码
从日志中弹出最近的操作并撤消该操作 @param [DependencyGraph] graph @return [Action] 从日志中弹出的操作
# File rubygems/vendor/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
reverse_each() { |action| ... } 点击以切换源代码
@!visibility private 以相反的顺序枚举日志中的每个操作 @yield [Action]
# File rubygems/vendor/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) 点击以切换源代码
@macro action
# File rubygems/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 103 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
set_payload(graph, name, payload) 点击以切换源代码
@macro action
# File rubygems/vendor/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) 点击以切换源代码
@macro action
# File rubygems/vendor/molinillo/lib/molinillo/dependency_graph/log.rb, line 26 def tag(graph, tag) push_action(graph, Tag.new(tag)) end
私有实例方法
push_action(graph, action) 点击以切换源代码
将给定的操作添加到日志中,并运行该操作 @param [DependencyGraph] graph @param [Action] action @return `action.up` 返回的值
# File rubygems/vendor/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