X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=lib%2Ferd_handler%2Ferd.rb;h=2c10364ef90983bbb74009d2d12d46eccea3e142;hb=fdc3bc03b2d7759927ae34d5382d2168be6a2bae;hp=f7e246a0d3581a7c62c747f5575e7956b038d522;hpb=54fb8d2f752d1ad35d11a03bb6e1443257a472c9;p=erd-marker.git diff --git a/lib/erd_handler/erd.rb b/lib/erd_handler/erd.rb index f7e246a..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