Another commit
[erd-marker.git] / lib / erd_handler / erd.rb
index b9e6da17d02ba3bbb812e665ac728698617b3b17..a0c94e4d931a33e98295f4a48cd7bf59949d74d5 100644 (file)
@@ -1,8 +1,23 @@
-module Erd
-  class Erd
+module ErdHandler
+  class Erd < Graph
     def initialize(source = nil)
-      doc = Document.new source
-      raise InvalidErdFile unless doc.elements.length == 1 and doc.elements[1].name.downcase == 'drawing'
+      super()
+      read(source) unless source.nil?
+      self
+    end
+    
+    def read(source)
+      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"]
+      doc.elements.each('Drawing/box') do |box_element|
+        self << Box.new(box_element)
+      end
+      doc.elements.each('Drawing/link') do |link_element|
+        self << Link.new(link_element, self.vertices)
+      end
+      self
     end
   end
-end
+end
\ No newline at end of file