lutaml 0.10.2 → 0.10.3
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/.rubocop_todo.yml +177 -27
- data/lib/lutaml/converter/xmi_to_uml.rb +12 -3
- data/lib/lutaml/qea/database.rb +157 -4
- data/lib/lutaml/qea/factory/association_transformer.rb +1 -5
- data/lib/lutaml/qea/factory/attribute_transformer.rb +4 -10
- data/lib/lutaml/qea/factory/base_transformer.rb +1 -5
- data/lib/lutaml/qea/factory/class_transformer.rb +26 -62
- data/lib/lutaml/qea/factory/data_type_transformer.rb +7 -21
- data/lib/lutaml/qea/factory/diagram_transformer.rb +6 -20
- data/lib/lutaml/qea/factory/enum_transformer.rb +3 -5
- data/lib/lutaml/qea/factory/generalization_transformer.rb +2 -7
- data/lib/lutaml/qea/factory/instance_transformer.rb +2 -10
- data/lib/lutaml/qea/factory/operation_transformer.rb +2 -8
- data/lib/lutaml/qea/factory/package_transformer.rb +4 -13
- data/lib/lutaml/uml_repository/index_builder.rb +19 -17
- data/lib/lutaml/uml_repository/queries/class_query.rb +44 -10
- data/lib/lutaml/uml_repository/repository.rb +12 -8
- data/lib/lutaml/uml_repository/statistics_calculator.rb +28 -16
- data/lib/lutaml/version.rb +1 -1
- data/lib/lutaml/xmi/parsers/xmi_base.rb +28 -5
- metadata +2 -2
|
@@ -485,9 +485,7 @@ module Lutaml
|
|
|
485
485
|
# @return [Array<Hash>]
|
|
486
486
|
# @note xpath %(//diagrams/diagram/model[@package="#{node['xmi:id']}"])
|
|
487
487
|
def serialize_model_diagrams(node_id, with_package: false) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
488
|
-
diagrams =
|
|
489
|
-
d.model.package == node_id
|
|
490
|
-
end
|
|
488
|
+
diagrams = diagram_lookup[node_id]
|
|
491
489
|
|
|
492
490
|
diagrams.map do |diagram|
|
|
493
491
|
h = {
|
|
@@ -506,6 +504,17 @@ module Lutaml
|
|
|
506
504
|
end
|
|
507
505
|
end
|
|
508
506
|
|
|
507
|
+
# Lazy-built hash index for O(1) diagram lookups by package
|
|
508
|
+
# @return [Hash] Mapping of package_id => [diagrams]
|
|
509
|
+
def diagram_lookup
|
|
510
|
+
@diagram_lookup ||= begin
|
|
511
|
+
idx = Hash.new { |h, k| h[k] = [] }
|
|
512
|
+
diagrams = @xmi_root_model.extension&.diagrams&.diagram || []
|
|
513
|
+
diagrams.each { |d| idx[d.model.package] << d if d.model&.package }
|
|
514
|
+
idx
|
|
515
|
+
end
|
|
516
|
+
end
|
|
517
|
+
|
|
509
518
|
# @param xmi_id [String]
|
|
510
519
|
# @return [Array<Hash>]
|
|
511
520
|
# @note xpath %(//element[@xmi:idref="#{xmi_id}"]/links/*)
|
|
@@ -932,8 +941,22 @@ module Lutaml
|
|
|
932
941
|
# @param source_or_target [String]
|
|
933
942
|
# @return [String]
|
|
934
943
|
def connector_node_by_id(xmi_id, source_or_target)
|
|
935
|
-
|
|
936
|
-
|
|
944
|
+
connector_lookup[[source_or_target.to_sym, xmi_id]]
|
|
945
|
+
end
|
|
946
|
+
|
|
947
|
+
# Lazy-built hash index for O(1) connector lookups
|
|
948
|
+
# @return [Hash] Mapping of [direction, idref] => connector
|
|
949
|
+
def connector_lookup
|
|
950
|
+
@connector_lookup ||= begin
|
|
951
|
+
lookup = {}
|
|
952
|
+
connectors = @xmi_root_model.extension&.connectors&.connector || []
|
|
953
|
+
connectors.each do |con|
|
|
954
|
+
%i[source target].each do |dir|
|
|
955
|
+
idref = con.send(dir)&.idref
|
|
956
|
+
lookup[[dir, idref]] = con if idref
|
|
957
|
+
end
|
|
958
|
+
end
|
|
959
|
+
lookup
|
|
937
960
|
end
|
|
938
961
|
end
|
|
939
962
|
|
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.10.
|
|
4
|
+
version: 0.10.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-04-
|
|
11
|
+
date: 2026-04-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: expressir
|