projects
/
graph.njae.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Regenerate gemspec for version
[graph.njae.git]
/
lib
/
graph
/
edge.rb
diff --git
a/lib/graph/edge.rb
b/lib/graph/edge.rb
index c579a2f6cbf27188406c9121a900aae27c6353f4..e783d354b42241eba9065fd458c7df514edd1e6a 100644
(file)
--- a/
lib/graph/edge.rb
+++ b/
lib/graph/edge.rb
@@
-1,6
+1,14
@@
require 'ostruct'
require 'ostruct'
+# A simple graph library
+
module Graph
module Graph
+
+ # An edge (or multiedge) in a graph. The edge can have arbitrary attributes,
+ # treated as method names.
+ #
+ # Each connection is handled by a Graph::Connection object, so that each end
+ # of the Edge can have it's own attributes.
class Edge < OpenStruct
def initialize
super
class Edge < OpenStruct
def initialize
super
@@
-8,6
+16,7
@@
module Graph
self
end
self
end
+ # Connect this edge to a vertex
def <<(other)
c = Connection.new
c.end = other
def <<(other)
c = Connection.new
c.end = other
@@
-15,15
+24,19
@@
module Graph
self
end
self
end
+ # Return the set of vertices this edge connects.
def vertices
self.connections.map {|c| c.end}
end
def vertices
self.connections.map {|c| c.end}
end
+ # Return the connection object that joins this Edge to the specified Vertex
def connection_at(vertex)
self.connections.select {|c| c.end.equal? vertex}.first
end
end
def connection_at(vertex)
self.connections.select {|c| c.end.equal? vertex}.first
end
end
+ # A connection between an Edge and a Vertex.The connection can have arbitrary attributes,
+ # treated as method names.
class Connection < OpenStruct
def initialize
super
class Connection < OpenStruct
def initialize
super