Fiddling around with labels and boxes
[erd-marker.git] / lib / erd_handler / erd.rb
index 142f575d8851044d9299090b069599526aad7480..2c10364ef90983bbb74009d2d12d46eccea3e142 100644 (file)
@@ -10,7 +10,7 @@ module ErdHandler
       doc = Document.new(source)
       raise InvalidErdFile unless doc.elements.to_a.length == 1 and doc.elements[1].name.downcase == 'drawing'
       self.mark = doc.elements['Drawing'].attributes["mark"].to_f
-      self.name = doc.elements['Drawing'].attributes["name"]
+      self.name = Label.new doc.elements['Drawing'].attributes["name"]
       doc.elements.each('Drawing/box') do |box_element|
         self << Box.new(box_element)
       end
@@ -22,5 +22,27 @@ module ErdHandler
       end
       self
     end
+    
+    # The minimal meaningful units of an ERD are:
+    #  Each box in isolation
+    #  Each link, with the associated boxes at its ends
+    def mmus
+      mmus = []
+      self.vertices.each do |b| 
+        mmu = Erd.new
+        mmu << b
+        mmus << mmu 
+      end
+      self.edges.each do |l| 
+        mmu = Erd.new
+        l.vertices.each do |b|
+          mmu << b
+        end
+        mmu << l
+        mmus << mmu
+      end
+      mmus
+    end
+    
   end
 end