Class: Tangle::Edge

Inherits:
Object
  • Object
show all
Includes:
Mixin::Initialize
Defined in:
lib/tangle/edge.rb

Overview

An edge in an undirected graph, connecting two vertices

Direct Known Subclasses

Directed::Edge, Undirected::Edge

Instance Attribute Summary collapse

Attributes included from Mixin::Initialize

#mixins

Instance Method Summary collapse

Constructor Details

#initialize(vertex1, vertex2 = vertex1, name: nil, **kwargs) ⇒ Edge

Create a new edge between vertices

Edge.new(vtx1) => Edge (loop) Edge.new(vtx1, vtx2) => Edge

End users should probably use Graph#add_edge instead.



22
23
24
25
26
# File 'lib/tangle/edge.rb', line 22

def initialize(vertex1, vertex2 = vertex1, name: nil, **kwargs)
  @name = name
  initialize_vertices(vertex1, vertex2)
  initialize_mixins(**kwargs)
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



13
14
15
# File 'lib/tangle/edge.rb', line 13

def name
  @name
end

Instance Method Details

#[](from_vertex) ⇒ Object



28
29
30
# File 'lib/tangle/edge.rb', line 28

def [](from_vertex)
  @vertices[from_vertex]
end

#include?(vertex) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/tangle/edge.rb', line 36

def include?(vertex)
  each_vertex.include?(vertex)
end

#loop?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/tangle/edge.rb', line 40

def loop?
  @loop
end

#walk(from_vertex) ⇒ Object



32
33
34
# File 'lib/tangle/edge.rb', line 32

def walk(from_vertex)
  @vertices.fetch(from_vertex)
end