lutaml 0.9.33 → 0.9.35
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 +48 -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 +9 -3
- data/lib/lutaml/xmi/liquid_drops/source_target_drop.rb +36 -0
- data/lib/lutaml/xmi/parsers/xmi_base.rb +39 -19
- 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]
|
@@ -579,7 +585,9 @@ module Lutaml
|
|
579
585
|
when "NoteLink"
|
580
586
|
return
|
581
587
|
when "Generalization"
|
582
|
-
|
588
|
+
owner_end, _owner_end_type, _owner_xmi_id =
|
589
|
+
generalization_association(owner_xmi_id, link)
|
590
|
+
return owner_end
|
583
591
|
end
|
584
592
|
|
585
593
|
xmi_id = link.send(linke_owner_name.to_sym)
|
@@ -617,7 +625,7 @@ module Lutaml
|
|
617
625
|
end
|
618
626
|
|
619
627
|
member_end = member_end_name(xmi_id, source_or_target, link.name)
|
620
|
-
[member_end, xmi_id]
|
628
|
+
[member_end, "aggregation", xmi_id]
|
621
629
|
end
|
622
630
|
|
623
631
|
# @param xmi_id [String]
|
@@ -642,8 +650,9 @@ module Lutaml
|
|
642
650
|
# @param link [Lutaml::Model::Serializable]
|
643
651
|
# @param link_member_name [String]
|
644
652
|
# @return [Array<String, String, Hash, String, String>]
|
645
|
-
def serialize_member_type(owner_xmi_id, link, link_member_name)
|
646
|
-
member_end, xmi_id =
|
653
|
+
def serialize_member_type(owner_xmi_id, link, link_member_name) # rubocop:disable Metrics/MethodLength,Metrics/AbcSize
|
654
|
+
member_end, member_end_type, xmi_id =
|
655
|
+
serialize_member_end(owner_xmi_id, link)
|
647
656
|
|
648
657
|
if link.name == "Association"
|
649
658
|
connector_type = link_member_name == "start" ? "source" : "target"
|
@@ -654,16 +663,26 @@ module Lutaml
|
|
654
663
|
fetch_owned_attribute_node(xmi_id)
|
655
664
|
end
|
656
665
|
|
657
|
-
|
666
|
+
if fetch_connector_name(link.id)
|
667
|
+
member_end = fetch_connector_name(link.id)
|
668
|
+
end
|
669
|
+
|
670
|
+
[member_end, member_end_type, member_end_cardinality,
|
658
671
|
member_end_attribute_name, xmi_id]
|
659
672
|
end
|
660
673
|
|
674
|
+
def fetch_connector_name(link_id)
|
675
|
+
connector = fetch_connector(link_id)
|
676
|
+
connector&.name
|
677
|
+
end
|
678
|
+
|
661
679
|
# @param link_id [String]
|
662
680
|
# @param connector_type [String]
|
663
681
|
# @return [Array<Hash, String>]
|
664
682
|
# @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
|
-
|
683
|
+
def fetch_assoc_connector(link_id, connector_type) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
684
|
+
connector = fetch_connector(link_id)
|
685
|
+
assoc_connector = connector.send(connector_type.to_sym)
|
667
686
|
|
668
687
|
if assoc_connector
|
669
688
|
assoc_connector_type = assoc_connector.type
|
@@ -672,9 +691,8 @@ module Lutaml
|
|
672
691
|
cardinality.unshift("1") if cardinality.length == 1
|
673
692
|
min, max = cardinality
|
674
693
|
end
|
694
|
+
|
675
695
|
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
696
|
attribute_name = assoc_connector.model.name if assoc_connector_role
|
679
697
|
cardinality = cardinality_min_max_value(min, max)
|
680
698
|
end
|
@@ -699,10 +717,10 @@ module Lutaml
|
|
699
717
|
|
700
718
|
member_end = member_end_name(xmi_id, source_or_target, link.name)
|
701
719
|
|
702
|
-
member_end_cardinality, _member_end_attribute_name =
|
703
|
-
|
704
|
-
|
705
|
-
[member_end, member_end_type,
|
720
|
+
# member_end_cardinality, _member_end_attribute_name =
|
721
|
+
# fetch_owned_attribute_node(xmi_id)
|
722
|
+
# [member_end, member_end_type, member_end_cardinality, nil, xmi_id]
|
723
|
+
[member_end, member_end_type, xmi_id]
|
706
724
|
end
|
707
725
|
|
708
726
|
# Multiple items if search type is idref. Should search association?
|
@@ -880,7 +898,7 @@ module Lutaml
|
|
880
898
|
next unless e.attributes&.attribute
|
881
899
|
|
882
900
|
e.attributes.attribute.each do |a|
|
883
|
-
cache[a.idref] = a
|
901
|
+
cache[a.idref] = a # Store in hash for quick lookup
|
884
902
|
end
|
885
903
|
end
|
886
904
|
cache
|
@@ -928,8 +946,10 @@ module Lutaml
|
|
928
946
|
# @param xmi_id [String]
|
929
947
|
# @param source_or_target [String]
|
930
948
|
# @return [String]
|
931
|
-
def connector_name_by_source_or_target(xmi_id, source_or_target)
|
949
|
+
def connector_name_by_source_or_target(xmi_id, source_or_target) # rubocop:disable Metrics/AbcSize
|
932
950
|
node = connector_node_by_id(xmi_id, source_or_target)
|
951
|
+
return node.name if node&.name
|
952
|
+
|
933
953
|
return if node.nil? ||
|
934
954
|
node.send(source_or_target.to_sym).nil? ||
|
935
955
|
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.35
|
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-27 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
|