Class: Gem::Molinillo::DependencyGraph::DetachVertexNamed
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           Action | |
| Instance Chain: 
          self,
           Action | |
| Inherits: | Gem::Molinillo::DependencyGraph::Action 
 | 
| Defined in: | lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb | 
Overview
Action
- .action_name
- 
    
      #down(graph)  ⇒ Void 
    
    Reverses the action on the given graph. 
- 
    
      #up(graph)  ⇒ Void 
    
    Performs the action on the given graph. 
DetachVertexNamed
- #name ⇒ String readonly
- 
    
      .new(name)  ⇒ DetachVertexNamed 
    
    constructor
    Initialize an action to detach a vertex from a dependency graph. 
Class Method Summary
Action - Inherited
Instance Attribute Summary
Instance Method Summary
Action - Inherited
Constructor Details
    .new(name)  ⇒ DetachVertexNamed 
  
Initialize an action to detach a vertex from a dependency graph
Class Method Details
.action_name
[ GitHub ]# File 'lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb', line 12
def self.action_name :add_vertex end
Instance Attribute Details
    #name  ⇒ String  (readonly)
  
# File 'lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb', line 52
attr_reader :name
Instance Method Details
    #down(graph)  ⇒ Void 
  
Reverses the action on the given graph.
# File 'lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb', line 38
def down(graph) return unless @vertex graph.vertices[@vertex.name] = @vertex @vertex.outgoing_edges.each do |e| e.destination.incoming_edges << e end @vertex.incoming_edges.each do |e| e.origin.outgoing_edges << e end end
    #up(graph)  ⇒ Void 
  
Performs the action on the given graph.
# File 'lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb', line 17
def up(graph) return [] unless @vertex = graph.vertices.delete(name) removed_vertices = [@vertex] @vertex.outgoing_edges.each do |e| v = e.destination v.incoming_edges.delete(e) if !v.root? && v.incoming_edges.empty? removed_vertices.concat graph.detach_vertex_named(v.name) end end @vertex.incoming_edges.each do |e| v = e.origin v.outgoing_edges.delete(e) end removed_vertices end