Class: Bundler::Molinillo::DependencyGraph::Vertex
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb | 
Overview
A vertex in a ::Bundler::Molinillo::DependencyGraph that encapsulates a #name and a #payload
Class Method Summary
- 
    
      .new(name, payload)  ⇒ Vertex 
    
    constructor
    Initializes a vertex with the given name and payload. 
Instance Attribute Summary
- #explicit_requirements ⇒ Array<Object> readonly
- #incoming_edges ⇒ Array<Edge> rw
- #name ⇒ String rw
- #outgoing_edges ⇒ Array<Edge> rw
- #payload ⇒ Object rw
- 
    
      #root?  
    
    rw
    Alias for #root. 
Instance Method Summary
- #==(other) ⇒ Boolean (also: #eql?)
- 
    
      #ancestor?(other)  ⇒ Boolean 
      (also: #is_reachable_from?)
    
    Is there a path from othertoselffollowing edges in the dependency graph?
- 
    
      #descendent?(other)  
    
    Alias for #path_to?. 
- 
    
      #eql?(other)  
    
    Alias for #==. 
- #hash ⇒ Fixnum
- #inspect ⇒ String
- 
    
      #is_reachable_from?(other)  
    
    Alias for #ancestor?. 
- 
    
      #path_to?(other)  ⇒ Boolean 
      (also: #descendent?)
    
    Is there a path from selftootherfollowing edges in the dependency graph?
- #predecessors ⇒ Array<Vertex>
- #recursive_predecessors ⇒ Array<Vertex>
- #recursive_successors ⇒ Array<Vertex>
- #requirements ⇒ Array<Object>
- #root ⇒ Boolean (also: #root?) rw
- #shallow_eql?(other) ⇒ Boolean
- #successors ⇒ Array<Vertex>
- #_path_to?(other, visited = Set.new) ⇒ Boolean protected
Constructor Details
    .new(name, payload)  ⇒ Vertex 
  
Initializes a vertex with the given name and payload.
Instance Attribute Details
    #explicit_requirements  ⇒ Array<Object>  (readonly)
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 16
attr_reader :explicit_requirements
    #incoming_edges  ⇒ Array<Edge>  (rw)
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 45
attr_accessor :incoming_edges
    #name  ⇒ String  (rw)
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 9
attr_accessor :name
    #outgoing_edges  ⇒ Array<Edge>  (rw)
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 41
attr_accessor :outgoing_edges
    #payload  ⇒ Object  (rw)
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 12
attr_accessor :payload
#root? (rw)
Alias for #root.
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 20
alias root? root
Instance Method Details
    #==(other)  ⇒ Boolean 
    Also known as: #eql?
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 84
def ==(other) return true if equal?(other) shallow_eql?(other) && successors.to_set == other.successors.to_set end
    #_path_to?(other, visited = Set.new)  ⇒ Boolean  (protected)
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 119
def _path_to?(other, visited = Set.new) return false unless visited.add?(self) return true if equal?(other) successors.any? { |v| v._path_to?(other, visited) } end
    #ancestor?(other)  ⇒ Boolean 
    Also known as: #is_reachable_from?
  
Is there a path from other to self following edges in the dependency graph?
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 129
def ancestor?(other) other.path_to?(self) end
#descendent?(other)
Alias for #path_to?.
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 114
alias descendent? path_to?
#eql?(other)
Alias for #==.
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 100
alias eql? ==
    #hash  ⇒ Fixnum 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 103
def hash name.hash end
    #inspect  ⇒ String 
  
#is_reachable_from?(other)
Alias for #ancestor?.
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 133
alias is_reachable_from? ancestor?
    #path_to?(other)  ⇒ Boolean 
    Also known as: #descendent?
  
Is there a path from self to other following edges in the dependency graph?
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 110
def path_to?(other) _path_to?(other) end
    #predecessors  ⇒ Array<Vertex> 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 49
def predecessors incoming_edges.map(&:origin) end
    #recursive_predecessors  ⇒ Array<Vertex> 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 55
def recursive_predecessors vertices = predecessors vertices += Compatibility.flat_map(vertices, &:recursive_predecessors) vertices.uniq! vertices end
    #recursive_successors  ⇒ Array<Vertex> 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 70
def recursive_successors vertices = successors vertices += Compatibility.flat_map(vertices, &:recursive_successors) vertices.uniq! vertices end
    #requirements  ⇒ Array<Object> 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 35
def requirements (incoming_edges.map(&:requirement) + explicit_requirements).uniq end
    #root  ⇒ Boolean  (rw)
    Also known as: #root?
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 19
attr_accessor :root
    #shallow_eql?(other)  ⇒ Boolean 
  
    #successors  ⇒ Array<Vertex> 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb', line 64
def successors outgoing_edges.map(&:destination) end