lutaml 0.9.33 → 0.9.34
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/Gemfile +8 -0
- data/bin/plantuml2lutaml +1 -1
- data/bin/yaml2lutaml +6 -4
- data/exe/lutaml-wsd2uml +1 -1
- data/exe/lutaml-yaml2uml +6 -4
- data/lib/lutaml/command_line.rb +3 -3
- data/lib/lutaml/formatter/base.rb +3 -3
- data/lib/lutaml/formatter/graphviz.rb +10 -10
- data/lib/lutaml/sysml/block.rb +1 -1
- data/lib/lutaml/sysml/constraint_block.rb +1 -1
- data/lib/lutaml/sysml/nested_connector_end.rb +1 -1
- data/lib/lutaml/sysml/requirement.rb +41 -33
- data/lib/lutaml/sysml/xmi_file.rb +382 -355
- data/lib/lutaml/uml/actor.rb +1 -1
- data/lib/lutaml/uml/association.rb +5 -5
- data/lib/lutaml/uml/connector.rb +1 -1
- data/lib/lutaml/uml/constructor_end.rb +1 -1
- data/lib/lutaml/uml/dependency.rb +1 -1
- data/lib/lutaml/uml/document.rb +0 -1
- data/lib/lutaml/uml/formatter/base.rb +2 -2
- data/lib/lutaml/uml/formatter/graphviz.rb +10 -10
- data/lib/lutaml/uml/has_members.rb +4 -4
- data/lib/lutaml/uml/instance.rb +1 -1
- data/lib/lutaml/uml/model.rb +1 -1
- data/lib/lutaml/uml/node/class_node.rb +1 -1
- data/lib/lutaml/uml/operation.rb +2 -2
- data/lib/lutaml/uml/package.rb +2 -2
- data/lib/lutaml/uml/parsers/dsl.rb +7 -4
- data/lib/lutaml/uml/parsers/dsl_preprocessor.rb +6 -3
- data/lib/lutaml/uml/property.rb +4 -4
- data/lib/lutaml/uml/top_element.rb +2 -2
- data/lib/lutaml/uml/top_element_attribute.rb +1 -1
- data/lib/lutaml/uml/value.rb +2 -2
- data/lib/lutaml/version.rb +1 -1
- data/lib/lutaml/xmi/liquid_drops/association_drop.rb +11 -2
- data/lib/lutaml/xmi/liquid_drops/attribute_drop.rb +1 -1
- data/lib/lutaml/xmi/liquid_drops/connector_drop.rb +40 -0
- data/lib/lutaml/xmi/liquid_drops/data_type_drop.rb +2 -1
- data/lib/lutaml/xmi/liquid_drops/generalization_attribute_drop.rb +1 -1
- data/lib/lutaml/xmi/liquid_drops/klass_drop.rb +2 -1
- data/lib/lutaml/xmi/liquid_drops/source_target_drop.rb +36 -0
- data/lib/lutaml/xmi/parsers/xmi_base.rb +28 -11
- data/lib/lutaml/xmi.rb +0 -1
- data/lutaml.gemspec +2 -10
- metadata +6 -103
- data/lib/lutaml/xmi/version.rb +0 -5
@@ -4,7 +4,7 @@ require "lutaml/uml/has_attributes"
|
|
4
4
|
require "lutaml/uml/document"
|
5
5
|
require "lutaml/xmi"
|
6
6
|
require "xmi"
|
7
|
-
require
|
7
|
+
require "digest"
|
8
8
|
|
9
9
|
module Lutaml
|
10
10
|
module XMI
|
@@ -112,7 +112,7 @@ module Lutaml
|
|
112
112
|
return package.name unless package.name.nil?
|
113
113
|
|
114
114
|
connector = fetch_connector(package.id)
|
115
|
-
if connector.target&.model
|
115
|
+
if connector.target&.model&.name
|
116
116
|
return "#{connector.target.model.name} " \
|
117
117
|
"(#{package.type.split(':').last})"
|
118
118
|
end
|
@@ -312,7 +312,7 @@ module Lutaml
|
|
312
312
|
# @return [Lutaml::Model::Serializable]
|
313
313
|
def find_klass_packaged_element(path)
|
314
314
|
lutaml_path = Lutaml::Path.parse(path)
|
315
|
-
if lutaml_path.segments.
|
315
|
+
if lutaml_path.segments.one?
|
316
316
|
return find_klass_packaged_element_by_name(path)
|
317
317
|
end
|
318
318
|
|
@@ -524,7 +524,13 @@ module Lutaml
|
|
524
524
|
# %(//connector[@xmi:idref="#{link_id}"]/#{node_name}/documentation)
|
525
525
|
def fetch_definition_node_value(link_id, node_name)
|
526
526
|
connector_node = fetch_connector(link_id)
|
527
|
-
connector_node.send(node_name.to_sym).documentation
|
527
|
+
documentation = connector_node.send(node_name.to_sym).documentation
|
528
|
+
|
529
|
+
if documentation.is_a?(Xmi::Sparx::SparxElementDocumentation)
|
530
|
+
documentation&.value
|
531
|
+
else
|
532
|
+
documentation
|
533
|
+
end
|
528
534
|
end
|
529
535
|
|
530
536
|
# @param klass [Lutaml::Model::Serializable]
|
@@ -642,7 +648,7 @@ module Lutaml
|
|
642
648
|
# @param link [Lutaml::Model::Serializable]
|
643
649
|
# @param link_member_name [String]
|
644
650
|
# @return [Array<String, String, Hash, String, String>]
|
645
|
-
def serialize_member_type(owner_xmi_id, link, link_member_name)
|
651
|
+
def serialize_member_type(owner_xmi_id, link, link_member_name) # rubocop:disable Metrics/MethodLength
|
646
652
|
member_end, xmi_id = serialize_member_end(owner_xmi_id, link)
|
647
653
|
|
648
654
|
if link.name == "Association"
|
@@ -654,16 +660,26 @@ module Lutaml
|
|
654
660
|
fetch_owned_attribute_node(xmi_id)
|
655
661
|
end
|
656
662
|
|
663
|
+
if fetch_connector_name(link.id)
|
664
|
+
member_end = fetch_connector_name(link.id)
|
665
|
+
end
|
666
|
+
|
657
667
|
[member_end, "aggregation", member_end_cardinality,
|
658
668
|
member_end_attribute_name, xmi_id]
|
659
669
|
end
|
660
670
|
|
671
|
+
def fetch_connector_name(link_id)
|
672
|
+
connector = fetch_connector(link_id)
|
673
|
+
connector&.name
|
674
|
+
end
|
675
|
+
|
661
676
|
# @param link_id [String]
|
662
677
|
# @param connector_type [String]
|
663
678
|
# @return [Array<Hash, String>]
|
664
679
|
# @note xpath %(//connector[@xmi:idref="#{link_id}"]/#{connector_type})
|
665
|
-
def fetch_assoc_connector(link_id, connector_type) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
666
|
-
|
680
|
+
def fetch_assoc_connector(link_id, connector_type) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
681
|
+
connector = fetch_connector(link_id)
|
682
|
+
assoc_connector = connector.send(connector_type.to_sym)
|
667
683
|
|
668
684
|
if assoc_connector
|
669
685
|
assoc_connector_type = assoc_connector.type
|
@@ -672,9 +688,8 @@ module Lutaml
|
|
672
688
|
cardinality.unshift("1") if cardinality.length == 1
|
673
689
|
min, max = cardinality
|
674
690
|
end
|
691
|
+
|
675
692
|
assoc_connector_role = assoc_connector.role
|
676
|
-
# Does role has name attribute? Or get name from model?
|
677
|
-
# attribute_name = assoc_connector_role.name if assoc_connector_role
|
678
693
|
attribute_name = assoc_connector.model.name if assoc_connector_role
|
679
694
|
cardinality = cardinality_min_max_value(min, max)
|
680
695
|
end
|
@@ -880,7 +895,7 @@ module Lutaml
|
|
880
895
|
next unless e.attributes&.attribute
|
881
896
|
|
882
897
|
e.attributes.attribute.each do |a|
|
883
|
-
cache[a.idref] = a
|
898
|
+
cache[a.idref] = a # Store in hash for quick lookup
|
884
899
|
end
|
885
900
|
end
|
886
901
|
cache
|
@@ -928,8 +943,10 @@ module Lutaml
|
|
928
943
|
# @param xmi_id [String]
|
929
944
|
# @param source_or_target [String]
|
930
945
|
# @return [String]
|
931
|
-
def connector_name_by_source_or_target(xmi_id, source_or_target)
|
946
|
+
def connector_name_by_source_or_target(xmi_id, source_or_target) # rubocop:disable Metrics/AbcSize
|
932
947
|
node = connector_node_by_id(xmi_id, source_or_target)
|
948
|
+
return node.name if node&.name
|
949
|
+
|
933
950
|
return if node.nil? ||
|
934
951
|
node.send(source_or_target.to_sym).nil? ||
|
935
952
|
node.send(source_or_target.to_sym).model.nil?
|
data/lib/lutaml/xmi.rb
CHANGED
data/lutaml.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
|
-
spec.required_ruby_version = ">= 2.7.0"
|
30
|
+
spec.required_ruby_version = ">= 2.7.0" # rubocop:disable Gemspec/RequiredRubyVersion
|
31
31
|
|
32
32
|
spec.add_dependency "expressir", "~> 2.1.0"
|
33
33
|
spec.add_dependency "hashie", "~> 4.1.0"
|
@@ -40,14 +40,6 @@ Gem::Specification.new do |spec|
|
|
40
40
|
spec.add_dependency "parslet", "~> 2.0.0"
|
41
41
|
spec.add_dependency "ruby-graphviz", "~> 1.2"
|
42
42
|
spec.add_dependency "thor", "~> 1.0"
|
43
|
-
spec.add_dependency "xmi", "~> 0.3.
|
44
|
-
|
45
|
-
spec.add_development_dependency "byebug"
|
46
|
-
spec.add_development_dependency "equivalent-xml", "~> 0.6.0"
|
47
|
-
spec.add_development_dependency "pry", "~> 0.12.2"
|
48
|
-
spec.add_development_dependency "rake", "~> 13.0"
|
49
|
-
spec.add_development_dependency "rspec", "~> 3.11"
|
50
|
-
spec.add_development_dependency "rubocop", "~> 1.58"
|
51
|
-
spec.add_development_dependency "rubocop-performance", "~> 1.19"
|
43
|
+
spec.add_dependency "xmi", "~> 0.3.20"
|
52
44
|
spec.metadata["rubygems_mfa_required"] = "true"
|
53
45
|
end
|
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.
|
4
|
+
version: 0.9.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: expressir
|
@@ -170,112 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.3.
|
173
|
+
version: 0.3.20
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.3.
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: byebug
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ">="
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: equivalent-xml
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: 0.6.0
|
202
|
-
type: :development
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - "~>"
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: 0.6.0
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: pry
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
212
|
-
requirements:
|
213
|
-
- - "~>"
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version: 0.12.2
|
216
|
-
type: :development
|
217
|
-
prerelease: false
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
219
|
-
requirements:
|
220
|
-
- - "~>"
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: 0.12.2
|
223
|
-
- !ruby/object:Gem::Dependency
|
224
|
-
name: rake
|
225
|
-
requirement: !ruby/object:Gem::Requirement
|
226
|
-
requirements:
|
227
|
-
- - "~>"
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '13.0'
|
230
|
-
type: :development
|
231
|
-
prerelease: false
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
requirements:
|
234
|
-
- - "~>"
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
version: '13.0'
|
237
|
-
- !ruby/object:Gem::Dependency
|
238
|
-
name: rspec
|
239
|
-
requirement: !ruby/object:Gem::Requirement
|
240
|
-
requirements:
|
241
|
-
- - "~>"
|
242
|
-
- !ruby/object:Gem::Version
|
243
|
-
version: '3.11'
|
244
|
-
type: :development
|
245
|
-
prerelease: false
|
246
|
-
version_requirements: !ruby/object:Gem::Requirement
|
247
|
-
requirements:
|
248
|
-
- - "~>"
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
version: '3.11'
|
251
|
-
- !ruby/object:Gem::Dependency
|
252
|
-
name: rubocop
|
253
|
-
requirement: !ruby/object:Gem::Requirement
|
254
|
-
requirements:
|
255
|
-
- - "~>"
|
256
|
-
- !ruby/object:Gem::Version
|
257
|
-
version: '1.58'
|
258
|
-
type: :development
|
259
|
-
prerelease: false
|
260
|
-
version_requirements: !ruby/object:Gem::Requirement
|
261
|
-
requirements:
|
262
|
-
- - "~>"
|
263
|
-
- !ruby/object:Gem::Version
|
264
|
-
version: '1.58'
|
265
|
-
- !ruby/object:Gem::Dependency
|
266
|
-
name: rubocop-performance
|
267
|
-
requirement: !ruby/object:Gem::Requirement
|
268
|
-
requirements:
|
269
|
-
- - "~>"
|
270
|
-
- !ruby/object:Gem::Version
|
271
|
-
version: '1.19'
|
272
|
-
type: :development
|
273
|
-
prerelease: false
|
274
|
-
version_requirements: !ruby/object:Gem::Requirement
|
275
|
-
requirements:
|
276
|
-
- - "~>"
|
277
|
-
- !ruby/object:Gem::Version
|
278
|
-
version: '1.19'
|
180
|
+
version: 0.3.20
|
279
181
|
description: 'LutaML: data models in textual form'
|
280
182
|
email:
|
281
183
|
- open.source@ribose.com'
|
@@ -409,6 +311,7 @@ files:
|
|
409
311
|
- lib/lutaml/xmi/liquid_drops/association_drop.rb
|
410
312
|
- lib/lutaml/xmi/liquid_drops/attribute_drop.rb
|
411
313
|
- lib/lutaml/xmi/liquid_drops/cardinality_drop.rb
|
314
|
+
- lib/lutaml/xmi/liquid_drops/connector_drop.rb
|
412
315
|
- lib/lutaml/xmi/liquid_drops/constraint_drop.rb
|
413
316
|
- lib/lutaml/xmi/liquid_drops/data_type_drop.rb
|
414
317
|
- lib/lutaml/xmi/liquid_drops/diagram_drop.rb
|
@@ -420,9 +323,9 @@ files:
|
|
420
323
|
- lib/lutaml/xmi/liquid_drops/operation_drop.rb
|
421
324
|
- lib/lutaml/xmi/liquid_drops/package_drop.rb
|
422
325
|
- lib/lutaml/xmi/liquid_drops/root_drop.rb
|
326
|
+
- lib/lutaml/xmi/liquid_drops/source_target_drop.rb
|
423
327
|
- lib/lutaml/xmi/parsers/xmi_base.rb
|
424
328
|
- lib/lutaml/xmi/parsers/xml.rb
|
425
|
-
- lib/lutaml/xmi/version.rb
|
426
329
|
- lib/lutaml/xml.rb
|
427
330
|
- lib/lutaml/xml/parsers/xml.rb
|
428
331
|
- lutaml.gemspec
|