Class: Rbgraph::Graph
- Inherits:
-
Object
show all
- Defined in:
- lib/rbgraph/graph.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(nodes = {}, edges = {}) ⇒ Graph
Returns a new instance of Graph.
8
9
10
11
|
# File 'lib/rbgraph/graph.rb', line 8
def initialize(nodes = {}, edges = {})
self.nodes = nodes
self.edges = edges
end
|
Instance Attribute Details
#edges ⇒ Object
Returns the value of attribute edges.
6
7
8
|
# File 'lib/rbgraph/graph.rb', line 6
def edges
@edges
end
|
#nodes ⇒ Object
Returns the value of attribute nodes.
5
6
7
|
# File 'lib/rbgraph/graph.rb', line 5
def nodes
@nodes
end
|
Instance Method Details
#add_edge!(node1, node2, edge_attributes = {}) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/rbgraph/graph.rb', line 27
def add_edge!(node1, node2, edge_attributes = {})
node1 = add_node!(node1)
node2 = add_node!(node2)
edge = Edge.new(node1, node2, edge_attributes)
edge = if edges[edge.id].nil?
edges[edge.id] = edge
else
edges[edge.id].merge(edge)
end
connect_nodes(node1, node2, edge)
edge
end
|
#add_node!(node) ⇒ Object
17
18
19
20
21
22
23
24
25
|
# File 'lib/rbgraph/graph.rb', line 17
def add_node!(node)
node = node.is_a?(Node) ? node : Node.new(node)
if nodes[node.id].nil?
nodes[node.id] = node
else
nodes[node.id].merge(node)
end
nodes[node.id]
end
|
#connect_nodes(node1, node2, edge) ⇒ Object
40
41
42
|
# File 'lib/rbgraph/graph.rb', line 40
def connect_nodes(node1, node2, edge)
raise NotImplementedError("Cannot connect nodes on a general graph! Use either Directed or Undirected subclasses")
end
|
#size ⇒ Object
13
14
15
|
# File 'lib/rbgraph/graph.rb', line 13
def size
nodes.values.length
end
|