Module: Xmi

Defined in:
lib/xmi/namespace/dynamic.rb,
lib/xmi.rb,
lib/xmi.rb,
lib/xmi/add.rb,
lib/xmi/uml.rb,
lib/xmi/root.rb,
lib/xmi/type.rb,
lib/xmi/sparx.rb,
lib/xmi/delete.rb,
lib/xmi/ea_root.rb,
lib/xmi/parsing.rb,
lib/xmi/replace.rb,
lib/xmi/version.rb,
lib/xmi/extension.rb,
lib/xmi/namespace.rb,
lib/xmi/sparx/gml.rb,
lib/xmi/v20110701.rb,
lib/xmi/v20131001.rb,
lib/xmi/v20161101.rb,
lib/xmi/versioned.rb,
lib/xmi/difference.rb,
lib/xmi/sparx/root.rb,
lib/xmi/sparx/ea_uml.rb,
lib/xmi/documentation.rb,
lib/xmi/namespace/omg.rb,
lib/xmi/sparx/diagram.rb,
lib/xmi/sparx/ea_stub.rb,
lib/xmi/sparx/element.rb,
lib/xmi/custom_profile.rb,
lib/xmi/sparx/mappings.rb,
lib/xmi/sparx/sys_ph_s.rb,
lib/xmi/namespace/sparx.rb,
lib/xmi/sparx/connector.rb,
lib/xmi/sparx/extension.rb,
lib/xmi/version_registry.rb,
lib/xmi/namespace/dynamic.rb,
lib/xmi/namespace_detector.rb,
lib/xmi/namespace_registry.rb,
lib/xmi/sparx/custom_profile.rb,
lib/xmi/sparx/primitive_type.rb,
lib/xmi/sparx/mappings/base_mapping.rb

Overview

Add convenience method to parent module

Defined Under Namespace

Modules: CustomProfile, Namespace, NamespaceRegistry, Parsing, Sparx, Type, Uml, V20110701, V20131001, V20161101, VersionRegistry, Versioned Classes: Add, Delete, Difference, Documentation, EaRoot, Error, Extension, NamespaceDetector, Replace, Root

Constant Summary collapse

VALUE_MAP =

Shared value_map for XMI elements Used to handle nil, empty, and omitted values consistently

{
  from: { nil: :empty, empty: :empty, omitted: :empty },
  to: { nil: :empty, empty: :empty, omitted: :empty },
}.freeze
VERSION =
"0.5.0"

Class Method Summary collapse

Class Method Details

.init_versioning!void

This method returns an undefined value.

Initialize all version registers

Call this during gem initialization or before first use.



70
71
72
73
74
75
76
77
78
79
# File 'lib/xmi.rb', line 70

def init_versioning!
  return if @versioning_initialized

  # Initialize versions in order (newest depends on older)
  V20110701.init_models!
  V20131001.init_models!
  V20161101.init_models!

  @versioning_initialized = true
end

.parse(xml_content) ⇒ Root

Parse XMI with automatic version detection

Parameters:

  • xml_content (String)

    XML content

Returns:

  • (Root)

    Parsed XMI document



86
87
88
89
# File 'lib/xmi.rb', line 86

def parse(xml_content)
  init_versioning!
  VersionRegistry.parse_with_detected_version(xml_content, Root)
end

.parse_with_version(xml_content, version) ⇒ Root

Parse XMI with a specific version register

Parameters:

  • xml_content (String)

    XML content

  • version (String)

    Version string (e.g., “20131001”)

Returns:

  • (Root)

    Parsed XMI document

Raises:

  • (ArgumentError)


97
98
99
100
101
102
103
# File 'lib/xmi.rb', line 97

def parse_with_version(xml_content, version)
  init_versioning!
  register = VersionRegistry.register_for_version(version)
  raise ArgumentError, "Unknown version: #{version}" unless register

  Root.from_xml(xml_content, register: register)
end

.versioning_initialized?Boolean

Check if versioning has been initialized

Returns:

  • (Boolean)


109
110
111
# File 'lib/xmi.rb', line 109

def versioning_initialized?
  @versioning_initialized || false
end