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