Added hash parameter to graph initialization
[graph.njae.git] / lib / graph.njae / vertex.rb
index bf14dddac07ce079f13a5d4de2409d8292d449c0..6b34351740c04c0754a5e431f1ea38bd7773a0a0 100644 (file)
@@ -6,8 +6,8 @@ module GraphNjae
   # A vertex in a graph. The edge can have arbitrary attributes,treated as 
   # method names.
   class Vertex < OpenStruct
-    def initialize
-      super
+    def initialize(values = {})
+      super(values)
       self.edges = []
       self
     end
@@ -31,10 +31,12 @@ module GraphNjae
     
     # Return the set of neighbouring vertices
     def neighbours
-      vertices = self.edges.map {|e| e.vertices}.flatten
-      vertices_to_me = vertices.select {|v| v == self}
-      other_vertices = vertices.select {|v| v != self}
-      (vertices_to_me[1..-1] || []) + other_vertices
+      #vertices = self.edges.map {|e| e.vertices}.flatten
+      #vertices_to_me = vertices.select {|v| v == self}
+      #other_vertices = vertices.select {|v| v != self}
+      #(vertices_to_me[1..-1] || []) + other_vertices#
+      self.edges.map {|e| e.vertices.take_while {|v| v != self} + 
+                      e.vertices.drop_while {|v| v != self}[1..-1]}.flatten
     end
     
   end