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
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