lutaml 0.9.10 → 0.9.12

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: 59f3f41813beaec8f6ffe17b8077aa9ad9d0a1a49861d12075b86e579e4d8287
4
- data.tar.gz: f52b06e26ebecc5088248fa0d83696bfae5d26b6b2c31d32bca1d3210db5493d
3
+ metadata.gz: b6d097a3542852b9b85447b34c3bb5c7f0a010af9aae4d63b1851688df79c3fd
4
+ data.tar.gz: cf648e2d0de105baeb9306565b86b725f8016df4306610ca5f2517b0b4dcbaa8
5
5
  SHA512:
6
- metadata.gz: f0b91cc8fcf077286165cb879a9896f401ccd45f72db55fb8a2ef0f89aca841f7d57bdf581194f3487f2f8edfc83103c68b174f36f95cdaa4710d2303ac01d64
7
- data.tar.gz: e16c5a41385564b5e9c3c89850114daa5e8ff0ae1a0a4bac5ed5f12c40155d4164c087e74b1e80841ab8a5d58af305ab6caa621f93a321f97fe44fa0604960f2
6
+ metadata.gz: 9d8faa52e267adb2912c5f92140d7b529c2113fb0579c763f81a8d4395b8bac713dcf2ee204240ce94952d5507ebbbebcd9f76d14aec98b82913b542f098d35a
7
+ data.tar.gz: 5c24db299e841de8cfc80033359486537c2e121bc9593f9fb42689c582d4d47d7e4c126690920f03bcc0f9086b89f2a6bf4bc94d40c1b93771caeee3b1c1e0a9
@@ -1,3 +1,3 @@
1
1
  module Lutaml
2
- VERSION = "0.9.10".freeze
2
+ VERSION = "0.9.12".freeze
3
3
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class AssociationDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def xmi_id
11
+ @model[:xmi_id]
12
+ end
13
+
14
+ def member_end
15
+ @model[:member_end]
16
+ end
17
+
18
+ def member_end_type
19
+ @model[:member_end_type]
20
+ end
21
+
22
+ def member_end_cardinality
23
+ ::Lutaml::XMI::CardinalityDrop.new(@model[:member_end_cardinality])
24
+ end
25
+
26
+ def member_end_attribute_name
27
+ @model[:member_end_attribute_name]
28
+ end
29
+
30
+ def member_end_xmi_id
31
+ @model[:member_end_xmi_id]
32
+ end
33
+
34
+ def owner_end
35
+ @model[:owner_end]
36
+ end
37
+
38
+ def owner_end_xmi_id
39
+ @model[:owner_end_xmi_id]
40
+ end
41
+
42
+ def definition
43
+ @model[:definition]
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class AttributeDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def id
11
+ @model[:id]
12
+ end
13
+
14
+ def name
15
+ @model[:name]
16
+ end
17
+
18
+ def type
19
+ @model[:type]
20
+ end
21
+
22
+ def xmi_id
23
+ @model[:xmi_id]
24
+ end
25
+
26
+ def is_derived
27
+ @model[:is_derived]
28
+ end
29
+
30
+ def cardinality
31
+ ::Lutaml::XMI::CardinalityDrop.new(@model[:cardinality])
32
+ end
33
+
34
+ def definition
35
+ @model[:definition]
36
+ end
37
+
38
+ def association
39
+ @model[:association]
40
+ end
41
+
42
+ def type_ns
43
+ @model[:type_ns]
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class CardinalityDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def min
11
+ @model["min"]
12
+ end
13
+
14
+ def max
15
+ @model["max"]
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class ConstraintDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def name
11
+ @model[:name]
12
+ end
13
+
14
+ def type
15
+ @model[:type]
16
+ end
17
+
18
+ def weight
19
+ @model[:weight]
20
+ end
21
+
22
+ def status
23
+ @model[:status]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class DataTypeDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def xmi_id
11
+ @model[:xmi_id]
12
+ end
13
+
14
+ def name
15
+ @model[:name]
16
+ end
17
+
18
+ def attributes
19
+ @model[:attributes]&.map do |attribute|
20
+ ::Lutaml::XMI::AttributeDrop.new(attribute)
21
+ end
22
+ end
23
+
24
+ def operations
25
+ @model[:operations]&.map do |operation|
26
+ ::Lutaml::XMI::OperationDrop.new(operation)
27
+ end
28
+ end
29
+
30
+ def associations
31
+ @model[:associations]&.map do |association|
32
+ ::Lutaml::XMI::AssociationDrop.new(association)
33
+ end
34
+ end
35
+
36
+ def constraints
37
+ @model[:constraints]&.map do |constraint|
38
+ ::Lutaml::XMI::ConstraintDrop.new(constraint)
39
+ end
40
+ end
41
+
42
+ def is_abstract
43
+ @model[:is_abstract]
44
+ end
45
+
46
+ def definition
47
+ @model[:definition]
48
+ end
49
+
50
+ def stereotype
51
+ @model[:stereotype]
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class DiagramDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def xmi_id
11
+ @model[:xmi_id]
12
+ end
13
+
14
+ def name
15
+ @model[:name]
16
+ end
17
+
18
+ def definition
19
+ @model[:definition]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class EnumDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def xmi_id
11
+ @model[:xmi_id]
12
+ end
13
+
14
+ def name
15
+ @model[:name]
16
+ end
17
+
18
+ def values
19
+ @model[:values].map do |value|
20
+ ::Lutaml::XMI::EnumOwnedLiteralDrop.new(value)
21
+ end
22
+ end
23
+
24
+ def definition
25
+ @model[:definition]
26
+ end
27
+
28
+ def stereotype
29
+ @model[:stereotype]
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class EnumOwnedLiteralDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def name
11
+ @model[:name]
12
+ end
13
+
14
+ def type
15
+ @model[:type]
16
+ end
17
+
18
+ def definition
19
+ @model[:definition]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class KlassDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def xmi_id
11
+ @model[:xmi_id]
12
+ end
13
+
14
+ def name
15
+ @model[:name]
16
+ end
17
+
18
+ def package
19
+ ::Lutaml::XMI::PackageDrop.new(@model[:package])
20
+ end
21
+
22
+ def type
23
+ @model[:type]
24
+ end
25
+
26
+ def attributes
27
+ @model[:attributes]&.map do |attribute|
28
+ ::Lutaml::XMI::AttributeDrop.new(attribute)
29
+ end
30
+ end
31
+
32
+ def associations
33
+ @model[:associations]&.map do |association|
34
+ ::Lutaml::XMI::AssociationDrop.new(association)
35
+ end
36
+ end
37
+
38
+ def operations
39
+ @model[:operations]&.map do |operation|
40
+ ::Lutaml::XMI::OperationDrop.new(operation)
41
+ end
42
+ end
43
+
44
+ def constraints
45
+ @model[:constraints]&.map do |constraint|
46
+ ::Lutaml::XMI::ConstraintDrop.new(constraint)
47
+ end
48
+ end
49
+
50
+ def is_abstract
51
+ @model[:is_abstract]
52
+ end
53
+
54
+ def definition
55
+ @model[:definition]
56
+ end
57
+
58
+ def stereotype
59
+ @model[:stereotype]
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class OperationDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ end
9
+
10
+ def id
11
+ @model[:id]
12
+ end
13
+
14
+ def xmi_id
15
+ @model[:xmi_id]
16
+ end
17
+
18
+ def name
19
+ @model[:name]
20
+ end
21
+
22
+ def definition
23
+ @model[:definition]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class PackageDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ @children_packages ||= packages.map do |pkg|
9
+ [pkg, pkg.packages, pkg.packages.map(&:children_packages)]
10
+ end.flatten.uniq
11
+ end
12
+
13
+ def xmi_id
14
+ @model[:xmi_id]
15
+ end
16
+
17
+ def name
18
+ @model[:name]
19
+ end
20
+
21
+ def klasses
22
+ @model[:classes].map do |klass|
23
+ ::Lutaml::XMI::KlassDrop.new(klass)
24
+ end
25
+ end
26
+ alias classes klasses
27
+
28
+ def enums
29
+ @model[:enums].map do |enum|
30
+ ::Lutaml::XMI::EnumDrop.new(enum)
31
+ end
32
+ end
33
+
34
+ def data_types
35
+ @model[:data_types].map do |data_type|
36
+ ::Lutaml::XMI::DataTypeDrop.new(data_type)
37
+ end
38
+ end
39
+
40
+ def diagrams
41
+ @model[:diagrams].map do |diagram|
42
+ ::Lutaml::XMI::DiagramDrop.new(diagram)
43
+ end
44
+ end
45
+
46
+ def packages
47
+ @model[:packages].map do |package|
48
+ ::Lutaml::XMI::PackageDrop.new(package)
49
+ end
50
+ end
51
+
52
+ def children_packages
53
+ @children_packages
54
+ end
55
+
56
+ def definition
57
+ @model[:definition]
58
+ end
59
+
60
+ def stereotype
61
+ @model[:stereotype]
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module XMI
5
+ class RootDrop < Liquid::Drop
6
+ def initialize(model) # rubocop:disable Lint/MissingSuper
7
+ @model = model
8
+ @children_packages ||= packages.map do |pkg|
9
+ [pkg, pkg.packages, pkg.packages.map(&:children_packages)]
10
+ end.flatten.uniq
11
+ end
12
+
13
+ def name
14
+ @model[:name]
15
+ end
16
+
17
+ def packages
18
+ @model[:packages].map do |package|
19
+ ::Lutaml::XMI::PackageDrop.new(package)
20
+ end
21
+ end
22
+
23
+ def children_packages
24
+ @children_packages
25
+ end
26
+ end
27
+ end
28
+ end
@@ -32,6 +32,13 @@ module Lutaml
32
32
  new.serialize_xmi(xmi_model)
33
33
  end
34
34
 
35
+ # @param xml [String] path to xml
36
+ # @return [Liquid::Drop]
37
+ def serialize_xmi_to_liquid(xml)
38
+ xmi_model = get_xmi_model(xml)
39
+ new.serialize_xmi_to_liquid(xmi_model)
40
+ end
41
+
35
42
  # @param xml [String] path to xml
36
43
  # @param name [String]
37
44
  # @return [Hash]
@@ -67,6 +74,16 @@ module Lutaml
67
74
  serialize_to_hash(xmi_model)
68
75
  end
69
76
 
77
+ # @param xmi_model [Shale::Mapper]
78
+ # return [Liquid::Drop]
79
+ def serialize_xmi_to_liquid(xmi_model)
80
+ @xmi_cache = {}
81
+ @xmi_root_model = xmi_model
82
+ serialized_hash = serialize_xmi(xmi_model)
83
+
84
+ ::Lutaml::XMI::RootDrop.new(serialized_hash)
85
+ end
86
+
70
87
  # @param xmi_model [Shale::Mapper]
71
88
  # @param name [String]
72
89
  # @return [Hash]
@@ -221,7 +238,9 @@ module Lutaml
221
238
  # # @return [Hash]
222
239
  def get_general_attributes(general_node)
223
240
  attrs = serialize_class_attributes(general_node, with_assoc: true)
224
- attrs.sort_by { |i| i[:name] }
241
+ # turn on sorting if necessary
242
+ # attrs.sort_by { |i| i[:name] }
243
+ attrs
225
244
  end
226
245
 
227
246
  # @param general_node [Shale::Mapper]
data/lib/lutaml/xmi.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  require "lutaml/xmi/version"
2
2
  require "lutaml/xmi/parsers/xml"
3
+ require "liquid"
4
+
5
+ Dir["#{File.dirname(__FILE__)}/xmi/liquid_drops/**/*.rb"].sort.each do |f|
6
+ require f
7
+ end
3
8
 
4
9
  module Lutaml
5
10
  module XMI
data/lutaml.gemspec CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.required_ruby_version = ">= 2.7.0"
31
31
 
32
+ spec.add_runtime_dependency "liquid"
32
33
  spec.add_runtime_dependency "expressir", "~> 1.3"
33
34
  spec.add_runtime_dependency "hashie", "~> 4.1.0"
34
35
  spec.add_runtime_dependency "htmlentities"
@@ -45,4 +46,4 @@ Gem::Specification.new do |spec|
45
46
  spec.add_development_dependency "rspec", "~> 3.11"
46
47
  spec.add_development_dependency "rubocop", "~> 1.58"
47
48
  spec.add_development_dependency "rubocop-performance", "~> 1.19"
48
- end
49
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lutaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
4
+ version: 0.9.12
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-09-19 00:00:00.000000000 Z
11
+ date: 2024-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: liquid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: expressir
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -354,6 +368,18 @@ files:
354
368
  - lib/lutaml/version.rb
355
369
  - lib/lutaml/xmi.rb
356
370
  - lib/lutaml/xmi/README.adoc
371
+ - lib/lutaml/xmi/liquid_drops/association_drop.rb
372
+ - lib/lutaml/xmi/liquid_drops/attribute_drop.rb
373
+ - lib/lutaml/xmi/liquid_drops/cardinality_drop.rb
374
+ - lib/lutaml/xmi/liquid_drops/constraint_drop.rb
375
+ - lib/lutaml/xmi/liquid_drops/data_type_drop.rb
376
+ - lib/lutaml/xmi/liquid_drops/diagram_drop.rb
377
+ - lib/lutaml/xmi/liquid_drops/enum_drop.rb
378
+ - lib/lutaml/xmi/liquid_drops/enum_owned_literal_drop.rb
379
+ - lib/lutaml/xmi/liquid_drops/klass_drop.rb
380
+ - lib/lutaml/xmi/liquid_drops/operation_drop.rb
381
+ - lib/lutaml/xmi/liquid_drops/package_drop.rb
382
+ - lib/lutaml/xmi/liquid_drops/root_drop.rb
357
383
  - lib/lutaml/xmi/parsers/xml.rb
358
384
  - lib/lutaml/xmi/version.rb
359
385
  - lib/lutaml/xml.rb