lutaml 0.9.17 → 0.9.19

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: 93f9a0221445cede27f5be5af6f7f4d71071180dbb4feb400fc173b7c52f9b1a
4
- data.tar.gz: 446307e5c65bd65f6b891b50ab1c0383008c5ccc8e8b9c49cb131ea18cf4ce5b
3
+ metadata.gz: a1741d3f305d796167f5f6927857b8d59141e3eeae8073c37db589d9e341424e
4
+ data.tar.gz: a35f626e98174a80214904da6f979fac35d4b58fa150908e35ba68ddf2000278
5
5
  SHA512:
6
- metadata.gz: 364b04c40839d9da343e9c8d4fe9a7b950ad37f6ed1e893c5bcd44fafd80ef6d4cdcbe9eac387e4f8f50a230489dc3e9c6129f4bf151d95045e7b6c01a4de565
7
- data.tar.gz: 425d8bdab371363eac85459c753aadd278a199a47a8f60e7390d419b6cb06afefa85d2dd13be54de3976f21857f8a244fe8e94faf8dfabaf4b10441146367281
6
+ metadata.gz: 76dfe545911af381aa149e5821d6da45563a4d7a6659438cc4dc1fd02a2148ebba1d814f1a7dc3cb53e5a458b363d9e299b56ac614e1bf17cacd076cd7b9fceb
7
+ data.tar.gz: 1f774dbc9a4d2c47486a4f4bbc185b480bed3ef714792cac911eadd8806fa421f63e0c9375f311cd437797f41f03e5f996dfcf49b13e938b26ca8adb6e700c6c
@@ -1,3 +1,3 @@
1
1
  module Lutaml
2
- VERSION = "0.9.17".freeze
2
+ VERSION = "0.9.19".freeze
3
3
  end
@@ -3,10 +3,11 @@
3
3
  module Lutaml
4
4
  module XMI
5
5
  class GeneralizationAttributeDrop < Liquid::Drop
6
- 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
7
7
  @attr = attr
8
8
  @upper_klass = upper_klass
9
9
  @gen_name = gen_name
10
+ @guidance = guidance
10
11
  end
11
12
 
12
13
  def id
@@ -68,6 +69,25 @@ module Lutaml
68
69
  name_ns = upper_klass if name_ns.nil?
69
70
  name_ns
70
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
71
91
  end
72
92
  end
73
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
 
@@ -31,17 +31,17 @@ module Lutaml
31
31
 
32
32
  # @param xml [String] path to xml
33
33
  # @return [Liquid::Drop]
34
- def serialize_xmi_to_liquid(xml)
34
+ def serialize_xmi_to_liquid(xml, guidance = nil)
35
35
  xmi_model = get_xmi_model(xml)
36
- new.serialize_xmi_to_liquid(xmi_model)
36
+ new.serialize_xmi_to_liquid(xmi_model, guidance)
37
37
  end
38
38
 
39
39
  # @param xml [String] path to xml
40
40
  # @param name [String]
41
41
  # @return [Hash]
42
- def serialize_generalization_by_name(xml, name)
42
+ def serialize_generalization_by_name(xml, name, guidance = nil)
43
43
  xmi_model = get_xmi_model(xml)
44
- new.serialize_generalization_by_name(xmi_model, name)
44
+ new.serialize_generalization_by_name(xmi_model, name, guidance)
45
45
  end
46
46
 
47
47
  private
@@ -77,23 +77,32 @@ module Lutaml
77
77
 
78
78
  # @param xmi_model [Shale::Mapper]
79
79
  # return [Liquid::Drop]
80
- def serialize_xmi_to_liquid(xmi_model)
80
+ def serialize_xmi_to_liquid(xmi_model, guidance_yaml = nil)
81
81
  set_xmi_model(xmi_model)
82
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
83
91
 
84
- ::Lutaml::XMI::RootDrop.new(serialized_hash)
92
+ YAML.safe_load(File.read(yaml, encoding: "UTF-8"))
85
93
  end
86
94
 
87
95
  # @param xmi_model [Shale::Mapper]
88
96
  # @param name [String]
89
97
  # @return [Hash]
90
- def serialize_generalization_by_name(xmi_model, name)
98
+ def serialize_generalization_by_name(xmi_model, name,
99
+ guidance_yaml = nil)
91
100
  set_xmi_model(xmi_model)
92
101
  model = xmi_model.model
93
102
  klass = find_klass_packaged_element_by_name(name)
94
103
  serialized_hash = build_klass_hash(klass, model, with_gen: true)
95
-
96
- ::Lutaml::XMI::KlassDrop.new(serialized_hash)
104
+ guidance = get_guidance(guidance_yaml)
105
+ ::Lutaml::XMI::KlassDrop.new(serialized_hash, guidance)
97
106
  end
98
107
 
99
108
  private
@@ -253,8 +262,7 @@ module Lutaml
253
262
  # @param general_node [Shale::Mapper]
254
263
  # @return [Hash]
255
264
  def get_general_attributes(general_node)
256
- attrs = serialize_class_attributes(general_node, with_assoc: true)
257
- attrs.sort_by { |i| i[:name].to_s }
265
+ serialize_class_attributes(general_node, with_assoc: true)
258
266
  end
259
267
 
260
268
  # @param general_node [Shale::Mapper]
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.17
4
+ version: 0.9.19
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-18 00:00:00.000000000 Z
11
+ date: 2024-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid