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/uml/type.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/uml/bounds.rb,
lib/xmi/sparx/index.rb,
lib/xmi/uml/diagram.rb,
lib/xmi/uml/profile.rb,
lib/xmi/sparx/ea_uml.rb,
lib/xmi/xmi_identity.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/uml/owned_end.rb,
lib/xmi/uml/uml_model.rb,
lib/xmi/custom_profile.rb,
lib/xmi/sparx/gml/type.rb,
lib/xmi/sparx/mappings.rb,
lib/xmi/sparx/sys_ph_s.rb,
lib/xmi/uml/member_end.rb,
lib/xmi/namespace/sparx.rb,
lib/xmi/parser_pipeline.rb,
lib/xmi/sparx/connector.rb,
lib/xmi/sparx/extension.rb,
lib/xmi/sparx/gml/union.rb,
lib/xmi/uml/precondition.rb,
lib/xmi/version_registry.rb,
lib/xmi/namespace/dynamic.rb,
lib/xmi/sparx/element/tag.rb,
lib/xmi/uml/default_value.rb,
lib/xmi/uml/owned_comment.rb,
lib/xmi/uml/owned_element.rb,
lib/xmi/uml/owned_literal.rb,
lib/xmi/uml/specification.rb,
lib/xmi/namespace_detector.rb,
lib/xmi/namespace_registry.rb,
lib/xmi/sparx/element/code.rb,
lib/xmi/sparx/gml/property.rb,
lib/xmi/uml/package_import.rb,
lib/xmi/sparx/element/flags.rb,
lib/xmi/sparx/element/links.rb,
lib/xmi/sparx/element/model.rb,
lib/xmi/sparx/element/paths.rb,
lib/xmi/sparx/element/style.rb,
lib/xmi/sparx/element/times.rb,
lib/xmi/sparx/element/xrefs.rb,
lib/xmi/sparx/gml/code_list.rb,
lib/xmi/sparx/gml/data_type.rb,
lib/xmi/uml/owned_attribute.rb,
lib/xmi/uml/owned_operation.rb,
lib/xmi/uml/owned_parameter.rb,
lib/xmi/sparx/custom_profile.rb,
lib/xmi/sparx/element/bounds.rb,
lib/xmi/sparx/element/coords.rb,
lib/xmi/sparx/primitive_type.rb,
lib/xmi/uml/packaged_element.rb,
lib/xmi/sparx/connector/model.rb,
lib/xmi/sparx/element/element.rb,
lib/xmi/sparx/element/project.rb,
lib/xmi/sparx/element/styleex.rb,
lib/xmi/sparx/gml/enumeration.rb,
lib/xmi/uml/annotated_element.rb,
lib/xmi/sparx/connector/labels.rb,
lib/xmi/sparx/gml/feature_type.rb,
lib/xmi/sparx/element/attribute.rb,
lib/xmi/uml/profile_application.rb,
lib/xmi/sparx/connector/end_base.rb,
lib/xmi/sparx/connector/end_role.rb,
lib/xmi/sparx/connector/end_type.rb,
lib/xmi/sparx/element/properties.rb,
lib/xmi/sparx/element/stereotype.rb,
lib/xmi/sparx/connector/connector.rb,
lib/xmi/sparx/connector/end_style.rb,
lib/xmi/sparx/element/association.rb,
lib/xmi/sparx/element/containment.rb,
lib/xmi/sparx/connector/appearance.rb,
lib/xmi/sparx/connector/properties.rb,
lib/xmi/sparx/element/documentation.rb,
lib/xmi/sparx/gml/shared_attributes.rb,
lib/xmi/sparx/mappings/base_mapping.rb,
lib/xmi/sparx/gml/application_schema.rb,
lib/xmi/sparx/connector/end_modifiers.rb,
lib/xmi/sparx/connector/end_constraint.rb,
lib/xmi/uml/association_generalization.rb,
lib/xmi/sparx/element/package_properties.rb,
lib/xmi/sparx/element/extended_properties.rb

Overview

Add convenience method to parent module

Defined Under Namespace

Modules: CustomProfile, Namespace, NamespaceRegistry, ParserPipeline, Parsing, Sparx, Type, Uml, V20110701, V20131001, V20161101, VersionRegistry, Versioned, XmiIdentity 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.4"

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.



75
76
77
78
79
80
81
82
83
84
# File 'lib/xmi.rb', line 75

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



91
92
93
94
# File 'lib/xmi.rb', line 91

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)


102
103
104
105
106
107
108
# File 'lib/xmi.rb', line 102

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)


114
115
116
# File 'lib/xmi.rb', line 114

def versioning_initialized?
  @versioning_initialized || false
end