X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=lib%2Fgraph.njae%2Fedge.rb;h=f3efc91eec9157301ece98c735663d2c94f0d1c8;hb=95b8572d01c0b9c3aa8fc5a1e85a045c33d4ecf1;hp=814360ba818818cd43df1cf0859208d324098c20;hpb=353a5d54ad4014af126c76617d9b02029a3ee98c;p=graph.njae.git diff --git a/lib/graph.njae/edge.rb b/lib/graph.njae/edge.rb index 814360b..f3efc91 100644 --- a/lib/graph.njae/edge.rb +++ b/lib/graph.njae/edge.rb @@ -20,6 +20,7 @@ module GraphNjae def <<(other) c = Connection.new c.end = other + other.edges << self unless other.edges.include? self self.connections << c self end @@ -33,13 +34,27 @@ module GraphNjae def connection_at(vertex) self.connections.find {|c| c.end.equal? vertex} end + + # Return the vertex at the other end of the one given. + # Self-loops should still return the vertex + def other_end(vertex) + if self.vertices[0] == vertex + self.vertices[1] + else + self.vertices[0] + end + end + + def to_s + '' + 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 + def initialize(values = {}) + super(values) self end end