Class: Mxrb::DomainDiagram::LayoutWriter

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/domain_diagram.rb

Overview

Applies only audited visual fields to a copied MPR.

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ LayoutWriter

Returns a new instance of LayoutWriter.



135
136
137
# File 'lib/mxrb/domain_diagram.rb', line 135

def initialize(path)
  @path = File.expand_path(path)
end

Instance Method Details

#apply!(payload) ⇒ Object



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/mxrb/domain_diagram.rb', line 139

def apply!(payload)
  modules = Array(payload.fetch('modules'))
  mpr = IO::MprFile.open(@path, readonly: false)
  changed = 0
   = []
  mpr.transaction do
    module_units = mpr.units_by_containment('Modules').to_h do |unit|
      [mpr.parse_contents(unit)['Name'].to_s, unit]
    end
    modules.each do |layout|
      unit = module_units[layout.fetch('name').to_s]
      raise ValidationError, "domain module #{layout['name']} not found" unless unit

      module_changed,  = apply_module(mpr, unit, layout)
      changed += module_changed
      .concat()
    end
    changed += mpr.write_domain_diagram_anchors()
  end
  changed
ensure
  mpr&.close
end