X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=lib%2Ferd_handler%2Ferd.rb;h=2c10364ef90983bbb74009d2d12d46eccea3e142;hb=fdc3bc03b2d7759927ae34d5382d2168be6a2bae;hp=a0c94e4d931a33e98295f4a48cd7bf59949d74d5;hpb=4f2c2f6f7795c9337796c16beb8126dfc42a940c;p=erd-marker.git diff --git a/lib/erd_handler/erd.rb b/lib/erd_handler/erd.rb index a0c94e4..2c10364 100644 --- a/lib/erd_handler/erd.rb +++ b/lib/erd_handler/erd.rb @@ -10,14 +10,39 @@ 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 doc.elements.each('Drawing/link') do |link_element| self << Link.new(link_element, self.vertices) end + doc.elements.each('Drawing/selfLink') do |link_element| + self << Link.new(link_element, self.vertices) + 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 \ No newline at end of file +end