xmi 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/README.adoc +4 -4
- data/lib/xmi/ea_root.rb +40 -41
- data/lib/xmi/extensions/eauml.rb +17 -0
- data/lib/xmi/extensions/gml.rb +53 -0
- data/lib/xmi/sparx.rb +58 -2
- data/lib/xmi/uml.rb +3 -0
- data/lib/xmi/version.rb +1 -1
- data/xmi.gemspec +1 -1
- metadata +18 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 302b69df31217eb74d01a40473d3ed50a35af959c331be1424aadd2262759703
         | 
| 4 | 
            +
              data.tar.gz: 63d413fddf71518961876467bc6a87bd99686e3c3367f9e3510921c4047765da
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4b484e2d65d687acb0671498f36929a5eaf30ef9275460ee0a66f716f38a5d088795dd9e5c10833e004d12304c1d544b8622c25fb88b79fcf5eb0a453ba9f267
         | 
| 7 | 
            +
              data.tar.gz: d4da102f2b81e27e0b4a8fd62817d3bf0ba2cb9b2e33dece2ccb56b21c9664af72e2df628a7e4e031799b03b699e284477520e39b07fe3cfd9a4c57663bce4e9
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/README.adoc
    CHANGED
    
    | @@ -42,20 +42,20 @@ xmi_root_model = Xmi::Sparx::SparxRoot2013.from_xml(xml_content) | |
| 42 42 |  | 
| 43 43 | 
             
            This method takes the path to an XMI file and generate the Ruby objects.
         | 
| 44 44 |  | 
| 45 | 
            -
            === Loading  | 
| 45 | 
            +
            === Loading Extensions and Generate Ruby Classes and Modules Dynamically
         | 
| 46 46 |  | 
| 47 | 
            -
            To load an  | 
| 47 | 
            +
            To load an extension from an XML file, use the `load_extension` method:
         | 
| 48 48 |  | 
| 49 49 | 
             
            [source,ruby]
         | 
| 50 50 | 
             
            ----
         | 
| 51 | 
            -
            Xmi::EaRoot. | 
| 51 | 
            +
            Xmi::EaRoot.load_extension("path/to/your/extension.xml")
         | 
| 52 52 |  | 
| 53 53 | 
             
            xml = "path/to/your/file.xmi"
         | 
| 54 54 | 
             
            xml_content = File.read(xml)
         | 
| 55 55 | 
             
            xmi_root_model = Xmi::Sparx::SparxRoot2013.from_xml(xml_content)
         | 
| 56 56 | 
             
            ----
         | 
| 57 57 |  | 
| 58 | 
            -
            `Xmi::EaRoot. | 
| 58 | 
            +
            `Xmi::EaRoot.load_extension` takes the path to an XML file and generate the
         | 
| 59 59 | 
             
            Ruby classes and modules defined in XML file dynamically.
         | 
| 60 60 | 
             
            Then, you can generate Ruby objects by `Xmi::Sparx::SparxRoot2013.from_xml`.
         | 
| 61 61 |  | 
    
        data/lib/xmi/ea_root.rb
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            Dir[File.join(__dir__, "extensions", "*.rb")].each { |file| require file }
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            require "nokogiri"
         | 
| 4 6 |  | 
| 5 7 | 
             
            module Xmi
         | 
| @@ -45,17 +47,10 @@ module Xmi | |
| 45 47 | 
             
                TEXT
         | 
| 46 48 |  | 
| 47 49 | 
             
                class << self
         | 
| 48 | 
            -
                  def  | 
| 49 | 
            -
                     | 
| 50 | 
            -
                    options[:input_xml_path] = xml_path
         | 
| 51 | 
            -
                    options[:module_name] = "Mdg"
         | 
| 52 | 
            -
                    load_extension(options)
         | 
| 53 | 
            -
                    update_mdg_mappings
         | 
| 54 | 
            -
                  end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                  def load_extension(options)
         | 
| 57 | 
            -
                    @content = gen_content(options)
         | 
| 50 | 
            +
                  def load_extension(xml_path)
         | 
| 51 | 
            +
                    @content = gen_content(xml_path)
         | 
| 58 52 | 
             
                    Object.class_eval @content
         | 
| 53 | 
            +
                    update_mappings(@module_name)
         | 
| 59 54 | 
             
                  end
         | 
| 60 55 |  | 
| 61 56 | 
             
                  def output_rb_file(output_rb_path)
         | 
| @@ -64,35 +59,35 @@ module Xmi | |
| 64 59 |  | 
| 65 60 | 
             
                  private
         | 
| 66 61 |  | 
| 67 | 
            -
                  def  | 
| 68 | 
            -
                     | 
| 69 | 
            -
                    map_elements = construct_shale_xml_mappings( | 
| 62 | 
            +
                  def update_mappings(module_name)
         | 
| 63 | 
            +
                    new_klasses = all_new_klasses(module_name)
         | 
| 64 | 
            +
                    map_elements = construct_shale_xml_mappings(new_klasses, module_name)
         | 
| 70 65 | 
             
                    sparx_roots.each do |sparx_root|
         | 
| 71 | 
            -
                      update_shale_attributes( | 
| 66 | 
            +
                      update_shale_attributes(new_klasses, sparx_root, module_name)
         | 
| 72 67 | 
             
                      update_shale_xml_mappings(map_elements, sparx_root)
         | 
| 73 68 | 
             
                    end
         | 
| 74 69 | 
             
                  end
         | 
| 75 70 |  | 
| 76 | 
            -
                  def construct_shale_xml_mappings( | 
| 71 | 
            +
                  def construct_shale_xml_mappings(new_klasses, module_name) # rubocop:disable Metrics/MethodLength
         | 
| 77 72 | 
             
                    map_elements = []
         | 
| 78 | 
            -
                     | 
| 79 | 
            -
                      next unless Xmi::EaRoot | 
| 73 | 
            +
                    new_klasses.each do |klass|
         | 
| 74 | 
            +
                      next unless Xmi::EaRoot.const_get(module_name).const_get(klass)
         | 
| 75 | 
            +
                                             .respond_to? :root_tag
         | 
| 80 76 |  | 
| 81 77 | 
             
                      map_elements << MAP_ELEMENT
         | 
| 82 | 
            -
                                      .gsub("#ELEMENT_NAME#", Xmi::EaRoot | 
| 78 | 
            +
                                      .gsub("#ELEMENT_NAME#", Xmi::EaRoot.const_get(module_name).const_get(klass).root_tag)
         | 
| 83 79 | 
             
                                      .gsub("#ELEMENT_METHOD#", Shale::Utils.snake_case(klass.to_s))
         | 
| 84 | 
            -
                                      .gsub("#NAMESPACE#", @ | 
| 85 | 
            -
                                      .gsub("#PREFIX#", @ | 
| 80 | 
            +
                                      .gsub("#NAMESPACE#", @def_namespace[:uri])
         | 
| 81 | 
            +
                                      .gsub("#PREFIX#", @def_namespace[:name])
         | 
| 86 82 | 
             
                    end
         | 
| 87 83 |  | 
| 88 84 | 
             
                    map_elements
         | 
| 89 85 | 
             
                  end
         | 
| 90 86 |  | 
| 91 | 
            -
                  def update_shale_attributes( | 
| 92 | 
            -
                     | 
| 87 | 
            +
                  def update_shale_attributes(new_klasses, sparx_root, module_name)
         | 
| 88 | 
            +
                    new_klasses.each do |klass|
         | 
| 93 89 | 
             
                      method_name = Shale::Utils.snake_case(klass)
         | 
| 94 | 
            -
                      full_klass_name = "Xmi::EaRoot | 
| 95 | 
            -
             | 
| 90 | 
            +
                      full_klass_name = "Xmi::EaRoot::#{module_name}::#{klass}"
         | 
| 96 91 | 
             
                      attr_line = "#{ATTRIBUTE_LINE.rstrip}, collection: true"
         | 
| 97 92 | 
             
                      attr_line = attr_line
         | 
| 98 93 | 
             
                                  .gsub("#TAG_NAME#", method_name)
         | 
| @@ -118,9 +113,9 @@ module Xmi | |
| 118 113 | 
             
                    [Xmi::Sparx::SparxRoot, Xmi::Sparx::SparxRoot2013]
         | 
| 119 114 | 
             
                  end
         | 
| 120 115 |  | 
| 121 | 
            -
                  def  | 
| 122 | 
            -
                    Xmi::EaRoot | 
| 123 | 
            -
                      Xmi::EaRoot | 
| 116 | 
            +
                  def all_new_klasses(module_name)
         | 
| 117 | 
            +
                    Xmi::EaRoot.const_get(module_name).constants.select do |c|
         | 
| 118 | 
            +
                      Xmi::EaRoot.const_get(module_name).const_get(c).is_a? Class
         | 
| 124 119 | 
             
                    end
         | 
| 125 120 | 
             
                  end
         | 
| 126 121 |  | 
| @@ -131,6 +126,8 @@ module Xmi | |
| 131 126 | 
             
                  end
         | 
| 132 127 |  | 
| 133 128 | 
             
                  def get_klass_name_from_node(node)
         | 
| 129 | 
            +
                    return Shale::Mapper.to_s unless node
         | 
| 130 | 
            +
             | 
| 134 131 | 
             
                    node.attribute_nodes.find { |attr| attr.name == "name" }.value
         | 
| 135 132 | 
             
                  end
         | 
| 136 133 |  | 
| @@ -172,7 +169,12 @@ module Xmi | |
| 172 169 | 
             
                    [attributes_lines, tags]
         | 
| 173 170 | 
             
                  end
         | 
| 174 171 |  | 
| 175 | 
            -
                  def gen_abstract_klass
         | 
| 172 | 
            +
                  def gen_abstract_klass # rubocop:disable Metrics/MethodLength
         | 
| 173 | 
            +
                    unless @abstract_klass_node
         | 
| 174 | 
            +
                      @abstract_tags = []
         | 
| 175 | 
            +
                      return ""
         | 
| 176 | 
            +
                    end
         | 
| 177 | 
            +
             | 
| 176 178 | 
             
                    attributes_lines = ""
         | 
| 177 179 | 
             
                    tags_lines, @abstract_tags = gen_tags(@abstract_klass_node)
         | 
| 178 180 | 
             
                    attributes_lines += tags_lines
         | 
| @@ -266,12 +268,6 @@ module Xmi | |
| 266 268 | 
             
                    klasses_lines = ""
         | 
| 267 269 |  | 
| 268 270 | 
             
                    nodes.each do |node|
         | 
| 269 | 
            -
                      # check baseStereotypes is abstract class
         | 
| 270 | 
            -
                      base_stereotypes = node.attribute_nodes.find do |attr|
         | 
| 271 | 
            -
                        attr.name == "baseStereotypes" && attr.value == get_klass_name_from_node(@abstract_klass_node)
         | 
| 272 | 
            -
                      end
         | 
| 273 | 
            -
                      next if base_stereotypes.nil?
         | 
| 274 | 
            -
             | 
| 275 271 | 
             
                      klasses_lines += "#{gen_generic_klass(node)}\n"
         | 
| 276 272 | 
             
                    end
         | 
| 277 273 |  | 
| @@ -292,7 +288,7 @@ module Xmi | |
| 292 288 | 
             
                      .gsub("#KLASSES#", gen_klasses(xmi_doc))
         | 
| 293 289 | 
             
                  end
         | 
| 294 290 |  | 
| 295 | 
            -
                  def  | 
| 291 | 
            +
                  def get_namespace_from_definition(xmi_doc)
         | 
| 296 292 | 
             
                    node = xmi_doc.at_xpath("//UMLProfile/Documentation")
         | 
| 297 293 | 
             
                    namespace_key = node.attribute_nodes.find do |attr|
         | 
| 298 294 | 
             
                      attr.name == "name"
         | 
| @@ -304,12 +300,15 @@ module Xmi | |
| 304 300 | 
             
                    { name: namespace_key, uri: namespace_uri }
         | 
| 305 301 | 
             
                  end
         | 
| 306 302 |  | 
| 307 | 
            -
                  def gen_content( | 
| 308 | 
            -
                     | 
| 309 | 
            -
                    module_name =  | 
| 310 | 
            -
                     | 
| 311 | 
            -
                     | 
| 312 | 
            -
             | 
| 303 | 
            +
                  def gen_content(xml)
         | 
| 304 | 
            +
                    xmi_doc = Nokogiri::XML(File.read(xml))
         | 
| 305 | 
            +
                    @module_name = get_module_name(xmi_doc)
         | 
| 306 | 
            +
                    @def_namespace = get_namespace_from_definition(xmi_doc)
         | 
| 307 | 
            +
                    gen_module(xmi_doc, @module_name)
         | 
| 308 | 
            +
                  end
         | 
| 309 | 
            +
             | 
| 310 | 
            +
                  def get_module_name(xmi_doc)
         | 
| 311 | 
            +
                    xmi_doc.root.name.split(".").first.capitalize
         | 
| 313 312 | 
             
                  end
         | 
| 314 313 | 
             
                end
         | 
| 315 314 | 
             
              end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Xmi
         | 
| 4 | 
            +
              class EaRoot
         | 
| 5 | 
            +
                module Eauml
         | 
| 6 | 
            +
                  class Import < Shale::Mapper
         | 
| 7 | 
            +
                    attribute :base_package_import, Shale::Type::String
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    xml do
         | 
| 10 | 
            +
                      root "import"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                      map_attribute "base_PackageImport", to: :base_package_import
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Dir[File.join(__dir__, "ea_extensions", "*.rb")].each { |file| require file }
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Xmi
         | 
| 6 | 
            +
              class EaRoot
         | 
| 7 | 
            +
                module Gml
         | 
| 8 | 
            +
                  class ApplicationSchema < Shale::Mapper
         | 
| 9 | 
            +
                    attribute :version, Shale::Type::String
         | 
| 10 | 
            +
                    attribute :xsd_document, Shale::Type::String
         | 
| 11 | 
            +
                    attribute :xmlns, Shale::Type::String
         | 
| 12 | 
            +
                    attribute :target_namespace, Shale::Type::String
         | 
| 13 | 
            +
                    attribute :base_package, Shale::Type::String
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    xml do
         | 
| 16 | 
            +
                      root "ApplicationSchema"
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                      map_attribute "version", to: :version
         | 
| 19 | 
            +
                      map_attribute "xsdDocument", to: :xsd_document
         | 
| 20 | 
            +
                      map_attribute "xmlns", to: :xmlns
         | 
| 21 | 
            +
                      map_attribute "targetNamespace", to: :target_namespace
         | 
| 22 | 
            +
                      map_attribute "base_Package", to: :base_package
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  class CodeList < Shale::Mapper
         | 
| 27 | 
            +
                    attribute :as_dictionary, Shale::Type::String
         | 
| 28 | 
            +
                    attribute :default_code_space, Shale::Type::String
         | 
| 29 | 
            +
                    attribute :base_class, Shale::Type::String
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    xml do
         | 
| 32 | 
            +
                      root "CodeList"
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                      map_attribute "asDictionary", to: :as_dictionary
         | 
| 35 | 
            +
                      map_attribute "defaultCodeSpace", to: :default_code_space
         | 
| 36 | 
            +
                      map_attribute "base_Class", to: :base_class
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  class Property < Shale::Mapper
         | 
| 41 | 
            +
                    attribute :sequence_number, Shale::Type::String
         | 
| 42 | 
            +
                    attribute :base_property, Shale::Type::String
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    xml do
         | 
| 45 | 
            +
                      root "property"
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                      map_attribute "sequenceNumber", to: :sequence_number
         | 
| 48 | 
            +
                      map_attribute "base_Property", to: :base_property
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
            end
         | 
    
        data/lib/xmi/sparx.rb
    CHANGED
    
    | @@ -674,6 +674,16 @@ module Xmi | |
| 674 674 | 
             
                  end
         | 
| 675 675 | 
             
                end
         | 
| 676 676 |  | 
| 677 | 
            +
                class SparxPrimitiveTypes2013 < Shale::Mapper
         | 
| 678 | 
            +
                  attribute :packaged_element, Uml::PackagedElement2013, collection: true
         | 
| 679 | 
            +
             | 
| 680 | 
            +
                  xml do
         | 
| 681 | 
            +
                    root "primitivetypes"
         | 
| 682 | 
            +
             | 
| 683 | 
            +
                    map_element "packagedElement", to: :packaged_element
         | 
| 684 | 
            +
                  end
         | 
| 685 | 
            +
                end
         | 
| 686 | 
            +
             | 
| 677 687 | 
             
                class SparxProfiles < Shale::Mapper
         | 
| 678 688 | 
             
                  attribute :profile, Uml::Profile, collection: true
         | 
| 679 689 |  | 
| @@ -786,6 +796,20 @@ module Xmi | |
| 786 796 | 
             
                  end
         | 
| 787 797 | 
             
                end
         | 
| 788 798 |  | 
| 799 | 
            +
                class SparxEAStub < Shale::Mapper
         | 
| 800 | 
            +
                  attribute :id, Shale::Type::String
         | 
| 801 | 
            +
                  attribute :name, Shale::Type::String
         | 
| 802 | 
            +
                  attribute :uml_type, Shale::Type::String
         | 
| 803 | 
            +
             | 
| 804 | 
            +
                  xml do
         | 
| 805 | 
            +
                    root "diagrams"
         | 
| 806 | 
            +
             | 
| 807 | 
            +
                    map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
         | 
| 808 | 
            +
                    map_attribute "name", to: :name
         | 
| 809 | 
            +
                    map_attribute "UMLType", to: :uml_type
         | 
| 810 | 
            +
                  end
         | 
| 811 | 
            +
                end
         | 
| 812 | 
            +
             | 
| 789 813 | 
             
                module SparxExtensionAttributes
         | 
| 790 814 | 
             
                  def self.included(klass) # rubocop:disable Metrics/MethodLength
         | 
| 791 815 | 
             
                    klass.class_eval do
         | 
| @@ -799,8 +823,9 @@ module Xmi | |
| 799 823 | 
             
                      attribute :extender_id, Shale::Type::String
         | 
| 800 824 | 
             
                      attribute :elements, SparxElements
         | 
| 801 825 | 
             
                      attribute :connectors, SparxConnectors
         | 
| 802 | 
            -
                      attribute :primitive_types,  | 
| 826 | 
            +
                      attribute :primitive_types, SparxPrimitiveTypes2013
         | 
| 803 827 | 
             
                      attribute :diagrams, SparxDiagrams
         | 
| 828 | 
            +
                      attribute :ea_stub, SparxEAStub, collection: true
         | 
| 804 829 | 
             
                    end
         | 
| 805 830 | 
             
                  end
         | 
| 806 831 | 
             
                end
         | 
| @@ -826,6 +851,7 @@ module Xmi | |
| 826 851 | 
             
                    map_element "primitivetypes", to: :primitive_types
         | 
| 827 852 | 
             
                    map_element "profiles", to: :profiles
         | 
| 828 853 | 
             
                    map_element "diagrams", to: :diagrams
         | 
| 854 | 
            +
                    map_element "EAStub", to: :ea_stub
         | 
| 829 855 | 
             
                  end
         | 
| 830 856 | 
             
                end
         | 
| 831 857 |  | 
| @@ -850,6 +876,7 @@ module Xmi | |
| 850 876 | 
             
                    map_element "primitivetypes", to: :primitive_types
         | 
| 851 877 | 
             
                    map_element "profiles", to: :profiles
         | 
| 852 878 | 
             
                    map_element "diagrams", to: :diagrams
         | 
| 879 | 
            +
                    map_element "EAStub", to: :ea_stub
         | 
| 853 880 | 
             
                  end
         | 
| 854 881 | 
             
                end
         | 
| 855 882 |  | 
| @@ -919,13 +946,18 @@ module Xmi | |
| 919 946 | 
             
                end
         | 
| 920 947 |  | 
| 921 948 | 
             
                module SparxRootAttributes
         | 
| 922 | 
            -
                  def self.included(klass)
         | 
| 949 | 
            +
                  def self.included(klass) # rubocop:disable Metrics/MethodLength
         | 
| 923 950 | 
             
                    klass.class_eval do
         | 
| 924 951 | 
             
                      attribute :publication_date, SparxCustomProfilePublicationDate
         | 
| 925 952 | 
             
                      attribute :edition, SparxCustomProfileEdition
         | 
| 926 953 | 
             
                      attribute :number, SparxCustomProfileNumber
         | 
| 927 954 | 
             
                      attribute :year_version, SparxCustomProfileYearVersion
         | 
| 928 955 | 
             
                      attribute :modelica_parameter, SparxSysPhS
         | 
| 956 | 
            +
             | 
| 957 | 
            +
                      attribute :eauml_import, EaRoot::Eauml::Import, collection: true
         | 
| 958 | 
            +
                      attribute :gml_application_schema, EaRoot::Gml::ApplicationSchema, collection: true
         | 
| 959 | 
            +
                      attribute :gml_code_list, EaRoot::Gml::CodeList, collection: true
         | 
| 960 | 
            +
                      attribute :gml_property, EaRoot::Gml::Property, collection: true
         | 
| 929 961 | 
             
                    end
         | 
| 930 962 | 
             
                  end
         | 
| 931 963 | 
             
                end
         | 
| @@ -961,6 +993,18 @@ module Xmi | |
| 961 993 | 
             
                  map_element "ModelicaParameter", to: :modelica_parameter,
         | 
| 962 994 | 
             
                                                   namespace: "http://www.sparxsystems.com/profiles/SysPhS/1.0",
         | 
| 963 995 | 
             
                                                   prefix: "SysPhS"
         | 
| 996 | 
            +
                  map_element "import", to: :eauml_import,
         | 
| 997 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/EAUML/1.0",
         | 
| 998 | 
            +
                                        prefix: "EAUML"
         | 
| 999 | 
            +
                  map_element "ApplicationSchema", to: :gml_application_schema,
         | 
| 1000 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
         | 
| 1001 | 
            +
                                        prefix: "GML"
         | 
| 1002 | 
            +
                  map_element "CodeList", to: :gml_code_list,
         | 
| 1003 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
         | 
| 1004 | 
            +
                                        prefix: "GML"
         | 
| 1005 | 
            +
                  map_element "property", to: :gml_property,
         | 
| 1006 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
         | 
| 1007 | 
            +
                                        prefix: "GML"
         | 
| 964 1008 | 
             
                  MAP
         | 
| 965 1009 |  | 
| 966 1010 | 
             
                  @@mapping ||= @@default_mapping # rubocop:disable Style/ClassVars
         | 
| @@ -1001,6 +1045,18 @@ module Xmi | |
| 1001 1045 | 
             
                  map_element "ModelicaParameter", to: :modelica_parameter,
         | 
| 1002 1046 | 
             
                                                   namespace: "http://www.sparxsystems.com/profiles/SysPhS/1.0",
         | 
| 1003 1047 | 
             
                                                   prefix: "SysPhS"
         | 
| 1048 | 
            +
                  map_element "import", to: :eauml_import,
         | 
| 1049 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/EAUML/1.0",
         | 
| 1050 | 
            +
                                        prefix: "EAUML"
         | 
| 1051 | 
            +
                  map_element "ApplicationSchema", to: :gml_application_schema,
         | 
| 1052 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
         | 
| 1053 | 
            +
                                        prefix: "GML"
         | 
| 1054 | 
            +
                  map_element "CodeList", to: :gml_code_list,
         | 
| 1055 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
         | 
| 1056 | 
            +
                                        prefix: "GML"
         | 
| 1057 | 
            +
                  map_element "property", to: :gml_property,
         | 
| 1058 | 
            +
                                        namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
         | 
| 1059 | 
            +
                                        prefix: "GML"
         | 
| 1004 1060 | 
             
                  MAP
         | 
| 1005 1061 |  | 
| 1006 1062 | 
             
                  @@mapping ||= @@default_mapping # rubocop:disable Style/ClassVars
         | 
    
        data/lib/xmi/uml.rb
    CHANGED
    
    | @@ -649,6 +649,7 @@ module Xmi | |
| 649 649 | 
             
                  end
         | 
| 650 650 | 
             
                end
         | 
| 651 651 |  | 
| 652 | 
            +
                # TODO: add attributes xmlns:uml and xmlns:xmi
         | 
| 652 653 | 
             
                module ProfileAttributes
         | 
| 653 654 | 
             
                  def self.included(klass)
         | 
| 654 655 | 
             
                    klass.class_eval do
         | 
| @@ -656,6 +657,8 @@ module Xmi | |
| 656 657 | 
             
                      attribute :package_import, PackageImport, collection: true
         | 
| 657 658 | 
             
                      attribute :id, Shale::Type::String
         | 
| 658 659 | 
             
                      attribute :name, Shale::Type::String
         | 
| 660 | 
            +
                      # attribute :xmi, Shale::Type::String
         | 
| 661 | 
            +
                      # attribute :uml, Shale::Type::String
         | 
| 659 662 | 
             
                      attribute :ns_prefix, Shale::Type::String
         | 
| 660 663 |  | 
| 661 664 | 
             
                      # Is this an EA thing?
         | 
    
        data/lib/xmi/version.rb
    CHANGED
    
    
    
        data/xmi.gemspec
    CHANGED
    
    | @@ -34,10 +34,10 @@ Gem::Specification.new do |spec| | |
| 34 34 | 
             
              spec.add_runtime_dependency "nokogiri"
         | 
| 35 35 | 
             
              spec.add_runtime_dependency "shale"
         | 
| 36 36 |  | 
| 37 | 
            -
              spec.add_development_dependency "equivalent-xml"
         | 
| 38 37 | 
             
              spec.add_development_dependency "pry", "~> 0.12.2"
         | 
| 39 38 | 
             
              spec.add_development_dependency "rake", "~> 13.0"
         | 
| 40 39 | 
             
              spec.add_development_dependency "rspec", "~> 3.11"
         | 
| 40 | 
            +
              spec.add_development_dependency "rspec-xml"
         | 
| 41 41 | 
             
              spec.add_development_dependency "rubocop", "~> 1.58"
         | 
| 42 42 | 
             
              # spec.add_development_dependency "xml-c14n"
         | 
| 43 43 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: xmi
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ribose Inc.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2024-07- | 
| 11 | 
            +
            date: 2024-07-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: nokogiri
         | 
| @@ -38,20 +38,6 @@ dependencies: | |
| 38 38 | 
             
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '0'
         | 
| 41 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name: equivalent-xml
         | 
| 43 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            -
                requirements:
         | 
| 45 | 
            -
                - - ">="
         | 
| 46 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: '0'
         | 
| 48 | 
            -
              type: :development
         | 
| 49 | 
            -
              prerelease: false
         | 
| 50 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            -
                requirements:
         | 
| 52 | 
            -
                - - ">="
         | 
| 53 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: '0'
         | 
| 55 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 42 | 
             
              name: pry
         | 
| 57 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -94,6 +80,20 @@ dependencies: | |
| 94 80 | 
             
                - - "~>"
         | 
| 95 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 82 | 
             
                    version: '3.11'
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: rspec-xml
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - ">="
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '0'
         | 
| 90 | 
            +
              type: :development
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - ">="
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '0'
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 98 | 
             
              name: rubocop
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -132,6 +132,8 @@ files: | |
| 132 132 | 
             
            - lib/xmi/documentation.rb
         | 
| 133 133 | 
             
            - lib/xmi/ea_root.rb
         | 
| 134 134 | 
             
            - lib/xmi/extension.rb
         | 
| 135 | 
            +
            - lib/xmi/extensions/eauml.rb
         | 
| 136 | 
            +
            - lib/xmi/extensions/gml.rb
         | 
| 135 137 | 
             
            - lib/xmi/replace.rb
         | 
| 136 138 | 
             
            - lib/xmi/root.rb
         | 
| 137 139 | 
             
            - lib/xmi/root13.rb
         |