Initial commit
[graph.njae.git] / lib / graph / vertex.rb~
diff --git a/lib/graph/vertex.rb~ b/lib/graph/vertex.rb~
new file mode 100644 (file)
index 0000000..6a85373
--- /dev/null
@@ -0,0 +1,31 @@
+require 'ostruct'
+
+module Graph
+  class Vertex < OpenStruct
+    def initialize
+      super
+      self.edges = []
+    end
+    
+    def connect(other)
+      e = Edge.new
+      e << self << other
+      self.edges << e
+      other.edges << e unless self === other
+      e
+    end
+    
+    def <<(other)
+      connect(other)
+      self
+    end
+    
+    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
+    end
+    
+  end
+end