lutaml 0.9.22 → 0.9.23

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8a04369340abee752a7fd1b241302fd0eff0f8c273e9723d818f03b7c38f42f
4
- data.tar.gz: 0170f7a02d5f4a097217657825d7301ac277f601d7b5ca713a65ae6bc8b5d31f
3
+ metadata.gz: bc862e1c9607a9696f2104ebcd0b3fc32fabe504c910612013be0e3e6a9a1e69
4
+ data.tar.gz: 41613d1428429a6e629406d1d755745146f0f34ca78af7373a967bec3338ebbd
5
5
  SHA512:
6
- metadata.gz: 0d6394b187e9b3941f274259705ffd1e13ba98ffbc1c2a17079d1ef42bea8f119db028768471b2b4076a2222420cf4f93023a2c002578624b9a10f50531b794e
7
- data.tar.gz: ca20d68f282ba839e82744a90cee46b169b3528e02dc3c7ba10be51018cfdfa3617fd6c0fefedc51089d1f382bfdeb372e6ecda2e0c469bb099fcd886b4f1faf
6
+ metadata.gz: 9ea914bab620f52b038b5c0c7778eac2b257e3fafceb1b4ca5d75d198c3f53d763943f808a22d5d0561874d059fe1f1b4a819ec614c23a873f01685049b0362a
7
+ data.tar.gz: 4b0f439ac81fbdc1239833dd92288cc213ce7b78f53050acabf443b4e87bc4e795ca89cbc56cac8b783bb037de8fc3afa2f10aede1a03069328d4b9530dd91b8
@@ -1,3 +1,3 @@
1
1
  module Lutaml
2
- VERSION = "0.9.22".freeze
2
+ VERSION = "0.9.23".freeze
3
3
  end
@@ -7,11 +7,9 @@ module Lutaml
7
7
  @model = model
8
8
  @guidance = guidance
9
9
 
10
- if guidance && guidance["classes"].map do |c|
11
- c["name"]
12
- end.include?(@model[:name])
10
+ if guidance
13
11
  @klass_guidance = guidance["classes"].find do |klass|
14
- klass["name"] == @model[:name]
12
+ klass["name"] == name || klass["name"] == absolute_path
15
13
  end
16
14
  end
17
15
  end
@@ -24,6 +22,10 @@ module Lutaml
24
22
  @model[:name]
25
23
  end
26
24
 
25
+ def absolute_path
26
+ "#{@model[:absolute_path]}::#{name}"
27
+ end
28
+
27
29
  def package
28
30
  ::Lutaml::XMI::PackageDrop.new(@model[:package], @guidance)
29
31
  end
@@ -6,6 +6,7 @@ module Lutaml
6
6
  def initialize(model, guidance = nil) # rubocop:disable Lint/MissingSuper
7
7
  @model = model
8
8
  @guidance = guidance
9
+
9
10
  @children_packages ||= packages.map do |pkg|
10
11
  [pkg, pkg.packages, pkg.packages.map(&:children_packages)]
11
12
  end.flatten.uniq
@@ -19,6 +20,10 @@ module Lutaml
19
20
  @model[:name]
20
21
  end
21
22
 
23
+ def absolute_path
24
+ @model[:absolute_path]
25
+ end
26
+
22
27
  def klasses
23
28
  @model[:classes].map do |klass|
24
29
  ::Lutaml::XMI::KlassDrop.new(klass, @guidance)
@@ -70,17 +70,28 @@ module Lutaml
70
70
  end
71
71
 
72
72
  # @param xmi_model [Shale::Mapper]
73
+ # @param with_gen: [Boolean]
74
+ # @param with_absolute_path: [Boolean]
73
75
  # return [Hash]
74
- def serialize_xmi(xmi_model, with_gen: false)
76
+ def serialize_xmi(xmi_model, with_gen: false, with_absolute_path: false)
75
77
  set_xmi_model(xmi_model)
76
- serialize_to_hash(xmi_model, with_gen: with_gen)
78
+ serialize_to_hash(
79
+ xmi_model,
80
+ with_gen: with_gen,
81
+ with_absolute_path: with_absolute_path,
82
+ )
77
83
  end
78
84
 
79
85
  # @param xmi_model [Shale::Mapper]
86
+ # @param guidance_yaml [String]
80
87
  # return [Liquid::Drop]
81
88
  def serialize_xmi_to_liquid(xmi_model, guidance_yaml = nil)
82
89
  set_xmi_model(xmi_model)
83
- serialized_hash = serialize_xmi(xmi_model, with_gen: true)
90
+ serialized_hash = serialize_xmi(
91
+ xmi_model,
92
+ with_gen: true,
93
+ with_absolute_path: true,
94
+ )
84
95
  guidance = get_guidance(guidance_yaml)
85
96
  ::Lutaml::XMI::RootDrop.new(serialized_hash, guidance)
86
97
  end
@@ -110,38 +121,67 @@ module Lutaml
110
121
  private
111
122
 
112
123
  # @param xmi_model [Shale::Mapper]
124
+ # @param with_gen: [Boolean]
125
+ # @param with_absolute_path: [Boolean]
113
126
  # @return [Hash]
114
127
  # @note xpath: //uml:Model[@xmi:type="uml:Model"]
115
- def serialize_to_hash(xmi_model, with_gen: false)
128
+ def serialize_to_hash(xmi_model,
129
+ with_gen: false, with_absolute_path: false)
116
130
  model = xmi_model.model
117
131
  {
118
132
  name: model.name,
119
- packages: serialize_model_packages(model, with_gen: with_gen),
133
+ packages: serialize_model_packages(
134
+ model,
135
+ with_gen: with_gen,
136
+ with_absolute_path: with_absolute_path,
137
+ ),
120
138
  }
121
139
  end
122
140
 
123
141
  # @param model [Shale::Mapper]
124
142
  # @param with_gen: [Boolean]
143
+ # @param with_absolute_path: [Boolean]
144
+ # @param absolute_path: [String]
125
145
  # @return [Array<Hash>]
126
146
  # @note xpath ./packagedElement[@xmi:type="uml:Package"]
127
- def serialize_model_packages(model, with_gen: false) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
147
+ def serialize_model_packages(model, # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
148
+ with_gen: false, with_absolute_path: false, absolute_path: "")
128
149
  packages = model.packaged_element.select do |e|
129
150
  e.type?("uml:Package")
130
151
  end
131
152
 
153
+ if with_absolute_path
154
+ absolute_path = "#{absolute_path}::#{model.name}"
155
+ end
156
+
132
157
  packages.map do |package|
133
- {
158
+ h = {
134
159
  xmi_id: package.id,
135
160
  name: get_package_name(package),
136
- classes: serialize_model_classes(package, model,
137
- with_gen: with_gen),
161
+ classes: serialize_model_classes(
162
+ package, model,
163
+ with_gen: with_gen,
164
+ with_absolute_path: with_absolute_path,
165
+ absolute_path: "#{absolute_path}::#{package.name}"
166
+ ),
138
167
  enums: serialize_model_enums(package),
139
168
  data_types: serialize_model_data_types(package),
140
169
  diagrams: serialize_model_diagrams(package.id),
141
- packages: serialize_model_packages(package, with_gen: with_gen),
170
+ packages: serialize_model_packages(
171
+ package,
172
+ with_gen: with_gen,
173
+ with_absolute_path: with_absolute_path,
174
+ absolute_path: absolute_path,
175
+ ),
142
176
  definition: doc_node_attribute_value(package.id, "documentation"),
143
177
  stereotype: doc_node_attribute_value(package.id, "stereotype"),
144
178
  }
179
+
180
+ if with_absolute_path
181
+ h[:absolute_path] = "#{absolute_path}::#{package.name}"
182
+ end
183
+
184
+ h
145
185
  end
146
186
  end
147
187
 
@@ -162,28 +202,36 @@ module Lutaml
162
202
  # @param package [Shale::Mapper]
163
203
  # @param model [Shale::Mapper]
164
204
  # @param with_gen: [Boolean]
205
+ # @param with_absolute_path: [Boolean]
165
206
  # @return [Array<Hash>]
166
207
  # @note xpath ./packagedElement[@xmi:type="uml:Class" or
167
208
  # @xmi:type="uml:AssociationClass"]
168
- def serialize_model_classes(package, model, with_gen: false) # rubocop:disable Metrics/MethodLength
209
+ def serialize_model_classes(package, model, # rubocop:disable Metrics/MethodLength
210
+ with_gen: false, with_absolute_path: false, absolute_path: "")
169
211
  klasses = package.packaged_element.select do |e|
170
212
  e.type?("uml:Class") || e.type?("uml:AssociationClass") ||
171
213
  e.type?("uml:Interface")
172
214
  end
173
215
 
174
216
  klasses.map do |klass|
175
- build_klass_hash(
217
+ h = build_klass_hash(
176
218
  klass, model,
177
219
  with_gen: with_gen
178
220
  )
221
+
222
+ h[:absolute_path] = absolute_path if with_absolute_path
223
+
224
+ h
179
225
  end
180
226
  end
181
227
 
182
228
  # @param klass [Shale::Mapper]
183
229
  # @param model [Shale::Mapper]
184
230
  # @param with_gen: [Boolean]
231
+ # @param with_absolute_path: [Boolean]
185
232
  # @return [Hash]
186
- def build_klass_hash(klass, model, with_gen: false) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
233
+ def build_klass_hash(klass, model, # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
234
+ with_gen: false, with_absolute_path: false, absolute_path: "")
187
235
  klass_hash = {
188
236
  xmi_id: klass.id,
189
237
  name: klass.name,
@@ -198,6 +246,8 @@ module Lutaml
198
246
  stereotype: doc_node_attribute_value(klass.id, "stereotype"),
199
247
  }
200
248
 
249
+ klass_hash[:absolute_path] = absolute_path if with_absolute_path
250
+
201
251
  if with_gen && klass.type?("uml:Class")
202
252
  klass_hash[:generalization] = serialize_generalization(klass)
203
253
  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.22
4
+ version: 0.9.23
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-11-13 00:00:00.000000000 Z
11
+ date: 2024-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: expressir