lutaml 0.9.16 → 0.9.18

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: a9ce0b2a08e394c3bc780813f6757140e853bf55538c9037f1878e5fc6e48e75
4
- data.tar.gz: 53c686e02bf1062116952910781b6076c8226d465b7794014e28dd2d5d81420a
3
+ metadata.gz: a78a8cd7a54dcb75279728cff484e7a8bfcbc3258f8a8ee155a2368ce21ade87
4
+ data.tar.gz: 823a52c70df804f61e430d143471daf3580f271331e02306501f06925ed55346
5
5
  SHA512:
6
- metadata.gz: 571d7dee97ae2dd44fe3591a61605d1049894a5a6a35e92e4b41fec70e8a758e999646a3b2719c167f15a4ef6ed710f9dc1d83b8050abc74282443dce9a0c0c2
7
- data.tar.gz: 8784ca132a325ace2142d9eb16599209a060f6e62b7015172bc64a831b44656effb18f11a91bc9247b4ae10f97148d458b281290cf17efc604efc2919b7cc862
6
+ metadata.gz: 0466df4efa98e478bbfdb1e5739425bd02b59e20d8c780d3caea203ce87e99183a5c8f003c6418a76be7dc0abb0346a57403b7b7fde9b6d11f2810186f24ce4f
7
+ data.tar.gz: 2c342890469f5022c5d3040e9ca7f2c7dbe302f339356458fb62558c6da382c7281133acc344a1de9649815bca5ea0175265aae1eaf7373c44c87ed3f51acd57
@@ -189,7 +189,7 @@ module Lutaml
189
189
  def format_label(name, cardinality = {})
190
190
  res = "+#{name}"
191
191
  if cardinality.nil? ||
192
- (cardinality["min"].nil? || cardinality["max"].nil?)
192
+ (cardinality[:min].nil? || cardinality[:max].nil?)
193
193
  return res
194
194
  end
195
195
 
@@ -148,13 +148,13 @@ module Lutaml
148
148
  if node.owner_end_attribute_name
149
149
  attributes["headlabel"] = format_label(
150
150
  node.owner_end_attribute_name,
151
- node.owner_end_cardinality
151
+ node.owner_end_cardinality,
152
152
  )
153
153
  end
154
154
  if node.member_end_attribute_name
155
155
  attributes["taillabel"] = format_label(
156
156
  node.member_end_attribute_name,
157
- node.member_end_cardinality
157
+ node.member_end_cardinality,
158
158
  )
159
159
  end
160
160
 
@@ -192,7 +192,7 @@ module Lutaml
192
192
  def format_label(name, cardinality = {})
193
193
  res = "+#{name}"
194
194
  if cardinality.nil? ||
195
- (cardinality["min"].nil? || cardinality["max"].nil?)
195
+ (cardinality[:min].nil? || cardinality[:max].nil?)
196
196
  return res
197
197
  end
198
198
 
@@ -1,3 +1,3 @@
1
1
  module Lutaml
2
- VERSION = "0.9.16".freeze
2
+ VERSION = "0.9.18".freeze
3
3
  end
@@ -8,11 +8,11 @@ module Lutaml
8
8
  end
9
9
 
10
10
  def min
11
- @model["min"]
11
+ @model[:min]
12
12
  end
13
13
 
14
14
  def max
15
- @model["max"]
15
+ @model[:max]
16
16
  end
17
17
  end
18
18
  end
@@ -3,15 +3,11 @@
3
3
  module Lutaml
4
4
  module XMI
5
5
  class GeneralizationAttributeDrop < Liquid::Drop
6
- LOWER_VALUE_MAPPINGS = {
7
- "C" => "0",
8
- "M" => "1",
9
- }.freeze
10
-
11
- def initialize(attr, upper_klass, gen_name) # rubocop:disable Lint/MissingSuper
6
+ def initialize(attr, upper_klass, gen_name, guidance = nil) # rubocop:disable Lint/MissingSuper
12
7
  @attr = attr
13
8
  @upper_klass = upper_klass
14
9
  @gen_name = gen_name
10
+ @guidance = guidance
15
11
  end
16
12
 
17
13
  def id
@@ -35,18 +31,7 @@ module Lutaml
35
31
  end
36
32
 
37
33
  def cardinality
38
- min = @attr[:cardinality]["min"]
39
- min = min.nil? ? nil : LOWER_VALUE_MAPPINGS[min]
40
-
41
- "#{min}..#{@attr[:cardinality]['max']}"
42
- end
43
-
44
- def min_cardinality
45
- @attr[:cardinality]["min"]
46
- end
47
-
48
- def max_cardinality
49
- @attr[:cardinality]["max"]
34
+ ::Lutaml::XMI::CardinalityDrop.new(@attr[:cardinality])
50
35
  end
51
36
 
52
37
  def definition
@@ -84,6 +69,25 @@ module Lutaml
84
69
  name_ns = upper_klass if name_ns.nil?
85
70
  name_ns
86
71
  end
72
+
73
+ def used?
74
+ if @guidance
75
+ col_name = "#{name_ns}:#{name}"
76
+ attr = @guidance["attributes"].find { |a| a["name"] == col_name }
77
+ return attr["used"] if attr
78
+ end
79
+
80
+ true
81
+ end
82
+
83
+ def guidance
84
+ if @guidance
85
+ col_name = "#{name_ns}:#{name}"
86
+ attr = @guidance["attributes"].find { |a| a["name"] == col_name }
87
+
88
+ attr["guidance"] if attr
89
+ end
90
+ end
87
91
  end
88
92
  end
89
93
  end
@@ -3,11 +3,12 @@
3
3
  module Lutaml
4
4
  module XMI
5
5
  class GeneralizationDrop < Liquid::Drop
6
- def initialize(gen) # rubocop:disable Lint/MissingSuper
6
+ def initialize(gen, guidance = nil) # rubocop:disable Lint/MissingSuper
7
7
  @gen = gen
8
8
  @looped_general_item = false
9
9
  @inherited_props = []
10
10
  @inherited_assoc_props = []
11
+ @guidance = guidance
11
12
  end
12
13
 
13
14
  def id
@@ -23,7 +24,7 @@ module Lutaml
23
24
  end
24
25
 
25
26
  def general
26
- GeneralizationDrop.new(@gen[:general]) if @gen[:general]
27
+ GeneralizationDrop.new(@gen[:general], @guidance) if @gen[:general]
27
28
  end
28
29
 
29
30
  def has_general?
@@ -54,7 +55,7 @@ module Lutaml
54
55
  attributes.select do |attr|
55
56
  attr[:association].nil?
56
57
  end.map do |attr|
57
- GeneralizationAttributeDrop.new(attr, upper_klass, name)
58
+ GeneralizationAttributeDrop.new(attr, upper_klass, name, @guidance)
58
59
  end
59
60
  end
60
61
 
@@ -63,7 +64,7 @@ module Lutaml
63
64
  attributes.select do |attr|
64
65
  attr[:association]
65
66
  end.map do |attr|
66
- GeneralizationAttributeDrop.new(attr, upper_klass, name)
67
+ GeneralizationAttributeDrop.new(attr, upper_klass, name, @guidance)
67
68
  end
68
69
  end
69
70
 
@@ -89,7 +90,7 @@ module Lutaml
89
90
  # reverse the order to show super class first
90
91
  general_item.attributes.reverse_each do |attr|
91
92
  attr_drop = GeneralizationAttributeDrop.new(attr, gen_upper_klass,
92
- gen_name)
93
+ gen_name, @guidance)
93
94
  if attr[:association]
94
95
  @inherited_assoc_props << attr_drop
95
96
  else
@@ -3,8 +3,17 @@
3
3
  module Lutaml
4
4
  module XMI
5
5
  class KlassDrop < Liquid::Drop
6
- def initialize(model) # rubocop:disable Lint/MissingSuper
6
+ def initialize(model, guidance = nil) # rubocop:disable Lint/MissingSuper
7
7
  @model = model
8
+ @guidance = guidance
9
+
10
+ if guidance && guidance["classes"].map do |c|
11
+ c["name"]
12
+ end.include?(@model[:name])
13
+ @klass_guidance = guidance["classes"].find do |klass|
14
+ klass["name"] == @model[:name]
15
+ end
16
+ end
8
17
  end
9
18
 
10
19
  def xmi_id
@@ -16,7 +25,7 @@ module Lutaml
16
25
  end
17
26
 
18
27
  def package
19
- ::Lutaml::XMI::PackageDrop.new(@model[:package])
28
+ ::Lutaml::XMI::PackageDrop.new(@model[:package], @guidance)
20
29
  end
21
30
 
22
31
  def type
@@ -50,7 +59,8 @@ module Lutaml
50
59
  def generalization
51
60
  return {} if @model[:generalization].nil?
52
61
 
53
- ::Lutaml::XMI::GeneralizationDrop.new(@model[:generalization])
62
+ ::Lutaml::XMI::GeneralizationDrop.new(@model[:generalization],
63
+ @klass_guidance)
54
64
  end
55
65
 
56
66
  def is_abstract
@@ -3,8 +3,9 @@
3
3
  module Lutaml
4
4
  module XMI
5
5
  class PackageDrop < Liquid::Drop
6
- def initialize(model) # rubocop:disable Lint/MissingSuper
6
+ def initialize(model, guidance = nil) # rubocop:disable Lint/MissingSuper
7
7
  @model = model
8
+ @guidance = guidance
8
9
  @children_packages ||= packages.map do |pkg|
9
10
  [pkg, pkg.packages, pkg.packages.map(&:children_packages)]
10
11
  end.flatten.uniq
@@ -20,7 +21,7 @@ module Lutaml
20
21
 
21
22
  def klasses
22
23
  @model[:classes].map do |klass|
23
- ::Lutaml::XMI::KlassDrop.new(klass)
24
+ ::Lutaml::XMI::KlassDrop.new(klass, @guidance)
24
25
  end
25
26
  end
26
27
  alias classes klasses
@@ -45,7 +46,7 @@ module Lutaml
45
46
 
46
47
  def packages
47
48
  @model[:packages].map do |package|
48
- ::Lutaml::XMI::PackageDrop.new(package)
49
+ ::Lutaml::XMI::PackageDrop.new(package, @guidance)
49
50
  end
50
51
  end
51
52
 
@@ -3,8 +3,9 @@
3
3
  module Lutaml
4
4
  module XMI
5
5
  class RootDrop < Liquid::Drop
6
- def initialize(model) # rubocop:disable Lint/MissingSuper
6
+ def initialize(model, guidance = nil) # rubocop:disable Lint/MissingSuper
7
7
  @model = model
8
+ @guidance = guidance
8
9
  @children_packages ||= packages.map do |pkg|
9
10
  [pkg, pkg.packages, pkg.packages.map(&:children_packages)]
10
11
  end.flatten.uniq
@@ -16,7 +17,7 @@ module Lutaml
16
17
 
17
18
  def packages
18
19
  @model[:packages].map do |package|
19
- ::Lutaml::XMI::PackageDrop.new(package)
20
+ ::Lutaml::XMI::PackageDrop.new(package, @guidance)
20
21
  end
21
22
  end
22
23
 
@@ -10,10 +10,6 @@ module Lutaml
10
10
  module Parsers
11
11
  # Class for parsing .xmi schema files into ::Lutaml::Uml::Document
12
12
  class XML
13
- LOWER_VALUE_MAPPINGS = {
14
- "0" => "C",
15
- "1" => "M",
16
- }.freeze
17
13
  attr_reader :xmi_cache, :xmi_root_model
18
14
 
19
15
  class << self
@@ -35,17 +31,17 @@ module Lutaml
35
31
 
36
32
  # @param xml [String] path to xml
37
33
  # @return [Liquid::Drop]
38
- def serialize_xmi_to_liquid(xml)
34
+ def serialize_xmi_to_liquid(xml, guidance = nil)
39
35
  xmi_model = get_xmi_model(xml)
40
- new.serialize_xmi_to_liquid(xmi_model)
36
+ new.serialize_xmi_to_liquid(xmi_model, guidance)
41
37
  end
42
38
 
43
39
  # @param xml [String] path to xml
44
40
  # @param name [String]
45
41
  # @return [Hash]
46
- def serialize_generalization_by_name(xml, name)
42
+ def serialize_generalization_by_name(xml, name, guidance = nil)
47
43
  xmi_model = get_xmi_model(xml)
48
- new.serialize_generalization_by_name(xmi_model, name)
44
+ new.serialize_generalization_by_name(xmi_model, name, guidance)
49
45
  end
50
46
 
51
47
  private
@@ -81,23 +77,32 @@ module Lutaml
81
77
 
82
78
  # @param xmi_model [Shale::Mapper]
83
79
  # return [Liquid::Drop]
84
- def serialize_xmi_to_liquid(xmi_model)
80
+ def serialize_xmi_to_liquid(xmi_model, guidance_yaml = nil)
85
81
  set_xmi_model(xmi_model)
86
82
  serialized_hash = serialize_xmi(xmi_model, with_gen: true)
83
+ guidance = get_guidance(guidance_yaml)
84
+ ::Lutaml::XMI::RootDrop.new(serialized_hash, guidance)
85
+ end
86
+
87
+ # @param yaml [String]
88
+ # @return [Hash]
89
+ def get_guidance(yaml)
90
+ return unless yaml
87
91
 
88
- ::Lutaml::XMI::RootDrop.new(serialized_hash)
92
+ YAML.safe_load(File.read(yaml, encoding: "UTF-8"))
89
93
  end
90
94
 
91
95
  # @param xmi_model [Shale::Mapper]
92
96
  # @param name [String]
93
97
  # @return [Hash]
94
- def serialize_generalization_by_name(xmi_model, name)
98
+ def serialize_generalization_by_name(xmi_model, name,
99
+ guidance_yaml = nil)
95
100
  set_xmi_model(xmi_model)
96
101
  model = xmi_model.model
97
102
  klass = find_klass_packaged_element_by_name(name)
98
103
  serialized_hash = build_klass_hash(klass, model, with_gen: true)
99
-
100
- ::Lutaml::XMI::KlassDrop.new(serialized_hash)
104
+ guidance = get_guidance(guidance_yaml)
105
+ ::Lutaml::XMI::KlassDrop.new(serialized_hash, guidance)
101
106
  end
102
107
 
103
108
  private
@@ -255,11 +260,10 @@ module Lutaml
255
260
  end
256
261
 
257
262
  # @param general_node [Shale::Mapper]
258
- # # @return [Hash]
263
+ # @return [Hash]
259
264
  def get_general_attributes(general_node)
260
- serialize_class_attributes(general_node, with_assoc: true)
261
- # turn on sorting if necessary
262
- # attrs.sort_by { |i| i[:name] }
265
+ attrs = serialize_class_attributes(general_node, with_assoc: true)
266
+ attrs.sort_by { |i| i[:name].to_s }
263
267
  end
264
268
 
265
269
  # @param general_node [Shale::Mapper]
@@ -767,20 +771,11 @@ module Lutaml
767
771
  # @return [Hash]
768
772
  def cardinality_min_max_value(min, max)
769
773
  {
770
- "min" => cardinality_value(min, true),
771
- "max" => cardinality_value(max, false),
774
+ min: min,
775
+ max: max,
772
776
  }
773
777
  end
774
778
 
775
- # @param value [String]
776
- # @param is_min [Boolean]
777
- # @return [String]
778
- def cardinality_value(value, is_min = false)
779
- return unless value
780
-
781
- is_min ? LOWER_VALUE_MAPPINGS[value.to_s] : value
782
- end
783
-
784
779
  # @node [Shale::Mapper]
785
780
  # @attr_name [String]
786
781
  # @return [String]
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.16
4
+ version: 0.9.18
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-10-04 00:00:00.000000000 Z
11
+ date: 2024-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid