lutaml 0.9.0 → 0.9.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4a5e17292ce48ecab9f02dfbc1ba4630fd8ccc8abbeef241830dba6751b21e3
4
- data.tar.gz: 82da115e0396750610178e711864546b19212f55a6a5119ce12464c0337a45a6
3
+ metadata.gz: 7fe23c8f2af27bf3016adc461338dab47dcbf0179237fef38e2b30ef068e2adc
4
+ data.tar.gz: 2382b0189342f7e559129af75829c642b4737f934cc2a83821cb2300484813d3
5
5
  SHA512:
6
- metadata.gz: d07503ca2cdf8d33fb64f17dccf2eb0fefccbdc0853887713a8f62df1248799589b4cf5b017defbff2611f92563107bbc24f3a6a269d44775cad68a01e843c03
7
- data.tar.gz: '00392dc2b1a84f56343486d677c1494564d7ef46d26fc2d63eebc92ae29b0861488b812726a529a4d6f0b371e2bad72c1163912d6f0ea3752d6f0c26f02c9762'
6
+ metadata.gz: a722350e941888b75fd6437fc7e2b491247cfae144414b400c49d77f522b38cea9b70579010f3bb6bfc5b859058cba6985e65b885e997780bd1aa6d7c3be40b8
7
+ data.tar.gz: 160e71a7c27b78b4d2c582a8de3b6b3fc1815e3f1c915b487cf0dbd06ddd7436ddb0b18e331b4c76483f621982fd2ce0697744b5cd25620436c8374c9bae513f
@@ -1,3 +1,3 @@
1
1
  module Lutaml
2
- VERSION = "0.9.0".freeze
2
+ VERSION = "0.9.2".freeze
3
3
  end
@@ -57,10 +57,12 @@ module Lutaml
57
57
  # @return [Array<Hash>]
58
58
  # @note xpath ./packagedElement[@xmi:type="uml:Package"]
59
59
  def serialize_model_packages(model)
60
- model.packaged_element.map do |package|
60
+ model.packaged_element.select do |e|
61
+ e.type?("uml:Package")
62
+ end.map do |package|
61
63
  {
62
64
  xmi_id: package.id,
63
- name: package.name,
65
+ name: get_package_name(package),
64
66
  classes: serialize_model_classes(package, model),
65
67
  enums: serialize_model_enums(package),
66
68
  data_types: serialize_model_data_types(package),
@@ -72,6 +74,18 @@ module Lutaml
72
74
  end
73
75
  end
74
76
 
77
+ def get_package_name(package)
78
+ return package.name unless package.name.nil?
79
+
80
+ connector = fetch_connector(package.id)
81
+ if connector.target&.model && connector.target.model&.name
82
+ return "#{connector.target.model.name} " \
83
+ "(#{package.type.split(':').last})"
84
+ end
85
+
86
+ "unnamed"
87
+ end
88
+
75
89
  # @param package [Shale::Mapper]
76
90
  # @param model [Shale::Mapper]
77
91
  # @return [Array<Hash>]
@@ -164,7 +178,8 @@ module Lutaml
164
178
  matched_element = @xmi_root_model.extension.elements.element
165
179
  .find { |e| e.idref == xmi_id }
166
180
 
167
- return if !matched_element.links ||
181
+ return if !matched_element ||
182
+ !matched_element.links ||
168
183
  matched_element.links.association.empty?
169
184
 
170
185
  matched_element.links.association.map do |assoc|
@@ -468,14 +483,30 @@ module Lutaml
468
483
  doc_node.properties.send(Shale::Utils.snake_case(attr_name).to_sym)
469
484
  end
470
485
 
486
+ # @param xmi_id [String]
487
+ # @return [Shale::Mapper]
488
+ # @note xpath %(//attribute[@xmi:idref="#{xmi_id}"])
489
+ def fetch_attribute_node(xmi_id)
490
+ attribute_node = nil
491
+ @xmi_root_model.extension.elements.element.each do |e|
492
+ if e.attributes&.attribute
493
+ e.attributes.attribute.each do |a|
494
+ attribute_node = a if a.idref == xmi_id
495
+ end
496
+ end
497
+ end
498
+ attribute_node
499
+ end
500
+
471
501
  # @param xmi_id [String]
472
502
  # @return [String]
473
503
  # @note xpath %(//attribute[@xmi:idref="#{xmi_id}"]/documentation)
474
504
  def lookup_attribute_documentation(xmi_id)
475
- doc_node = fetch_element(xmi_id)
476
- return unless doc_node
505
+ attribute_node = fetch_attribute_node(xmi_id)
506
+
507
+ return unless attribute_node&.documentation
477
508
 
478
- doc_node.documentation
509
+ attribute_node&.documentation&.value
479
510
  end
480
511
 
481
512
  # @param xmi_id [String]
data/lutaml.gemspec CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.add_runtime_dependency "parslet", "~> 2.0.0"
37
37
  spec.add_runtime_dependency "ruby-graphviz", "~> 1.2"
38
38
  spec.add_runtime_dependency "thor", "~> 1.0"
39
- spec.add_runtime_dependency "xmi"
39
+ spec.add_runtime_dependency "xmi", ">= 0.3.0"
40
40
 
41
41
  spec.add_development_dependency "byebug"
42
42
  spec.add_development_dependency "equivalent-xml", "~> 0.6.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lutaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.2
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-06-24 00:00:00.000000000 Z
11
+ date: 2024-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: expressir
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 0.3.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 0.3.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: byebug
127
127
  requirement: !ruby/object:Gem::Requirement