Class: Ea::Transformers::QeaToXmi::ExtensionSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/ea/transformers/qea_to_xmi/extension_serializer.rb

Overview

Serializes the EA-specific content of <xmi:Extension>.

The xmi gem models the structural XMI tree (model, packages, classes, attributes) but does not represent EA's per-element extension metadata. This class produces the inner XML for the <xmi:Extension> element as three sibling sections:

<elements>   — one <element> per package/classifier, carrying
             <model>, <properties documentation="...">,
             <style appearance="..."> and nested <tags>.
<connectors> — one <connector> per relationship, with
             source/target <model> blocks.
<diagrams>   — one <diagram> per diagram, with placed
             <element> children referencing subjects.

The Transformer injects this string into the serialized XMI's empty <xmi:Extension> placeholder.

Sparx XMI is the canonical shape; the xmi gem's parser does not model these sections, so output containing them is not round-trippable through Xmi::Sparx::Root.parse_xml.

Instance Method Summary collapse

Constructor Details

#initialize(database, context) ⇒ ExtensionSerializer

Returns a new instance of ExtensionSerializer.



28
29
30
31
# File 'lib/ea/transformers/qea_to_xmi/extension_serializer.rb', line 28

def initialize(database, context)
  @database = database
  @context = context
end

Instance Method Details

#callString

Returns inner XML for xmi:Extension; empty if no elements/connectors/diagrams to emit.

Returns:

  • (String)

    inner XML for xmi:Extension; empty if no elements/connectors/diagrams to emit.



35
36
37
38
39
40
41
42
43
# File 'lib/ea/transformers/qea_to_xmi/extension_serializer.rb', line 35

def call
  sections = [
    build_elements_section,
    build_connectors_section,
    build_primitivetypes_section,
    build_diagrams_section
  ].reject(&:empty?)
  sections.join("\n")
end