lutaml-model 0.3.28 → 0.3.29

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: 7fbf76c4bb8fbe07fdaed6235a5e8edcd98dc17ace1d322d0e9a36c7c4a59aef
4
- data.tar.gz: f63bf29850309ab1250e2713e62fd6ef624ad5c13a824dc6e7822dec77f75369
3
+ metadata.gz: fba70c8a3fca206b3109603109812019773027580c47b2e3615d873df6e0ce2d
4
+ data.tar.gz: 21313fbfb52c29c620eb1020672d337689eed963c25fe56c20baeef139e569b5
5
5
  SHA512:
6
- metadata.gz: 58b261437656342dc5894e25dcde477f680e72b6eebd0ae6771a5d97f0212442ae5dab446d0e182f5a4a712516b8781a0849bdcb1fa2ee1fbc831ecf9dc33695
7
- data.tar.gz: 0af5c64461b6e9f5ab6d67b18ebe81e19db49123b4241b201c786b1632b567290ab55288f7047e01e3c5938316d7e93b8aca511f6f4a3f3759f1d4575fe758ae
6
+ metadata.gz: 274739542b8473ae58b4fc6b78e1152aaef604a55f3c9db0ec5678743573d683b4afdd2429d97d6a24c03fdb2c14a72904bf4e057f480e6bafc635a21fde085a
7
+ data.tar.gz: b1a7ad49313463676b3afe8732f94ed8ab37f79935f33449c70011bd8a8449934425aa27b9dd25d2a7e25a064afa1e665bf95f8b2eac4ec7cd63be4bcfdb7b8d
data/.rubocop_todo.yml CHANGED
@@ -1,12 +1,12 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2024-11-11 10:52:30 UTC using RuboCop version 1.68.0.
3
+ # on 2024-11-25 13:01:09 UTC using RuboCop version 1.66.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 132
9
+ # Offense count: 185
10
10
  # This cop supports safe autocorrection (--autocorrect).
11
11
  # Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
12
12
  # URISchemes: http, https
@@ -26,13 +26,12 @@ Lint/ConstantDefinitionInBlock:
26
26
  - 'spec/lutaml/model/validation_spec.rb'
27
27
  - 'spec/lutaml/model/xml_adapter/xml_namespace_spec.rb'
28
28
 
29
- # Offense count: 2
29
+ # Offense count: 1
30
30
  Lint/DuplicateMethods:
31
31
  Exclude:
32
- - 'lib/lutaml/model/attribute.rb'
33
32
  - 'lib/lutaml/model/type/float.rb'
34
33
 
35
- # Offense count: 36
34
+ # Offense count: 37
36
35
  # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
37
36
  Metrics/AbcSize:
38
37
  Exclude:
@@ -45,6 +44,7 @@ Metrics/AbcSize:
45
44
  - 'lib/lutaml/model/xml_adapter/nokogiri_adapter.rb'
46
45
  - 'lib/lutaml/model/xml_adapter/ox_adapter.rb'
47
46
  - 'lib/lutaml/model/xml_adapter/xml_document.rb'
47
+ - 'lib/lutaml/model/xml_mapping.rb'
48
48
  - 'lib/lutaml/model/xml_mapping_rule.rb'
49
49
 
50
50
  # Offense count: 6
@@ -53,7 +53,7 @@ Metrics/AbcSize:
53
53
  Metrics/BlockLength:
54
54
  Max: 47
55
55
 
56
- # Offense count: 26
56
+ # Offense count: 28
57
57
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
58
58
  Metrics/CyclomaticComplexity:
59
59
  Exclude:
@@ -65,7 +65,7 @@ Metrics/CyclomaticComplexity:
65
65
  - 'lib/lutaml/model/xml_adapter/ox_adapter.rb'
66
66
  - 'lib/lutaml/model/xml_adapter/xml_document.rb'
67
67
 
68
- # Offense count: 53
68
+ # Offense count: 55
69
69
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
70
70
  Metrics/MethodLength:
71
71
  Max: 46
@@ -75,7 +75,7 @@ Metrics/MethodLength:
75
75
  Metrics/ParameterLists:
76
76
  Max: 14
77
77
 
78
- # Offense count: 23
78
+ # Offense count: 25
79
79
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
80
80
  Metrics/PerceivedComplexity:
81
81
  Exclude:
@@ -87,7 +87,7 @@ Metrics/PerceivedComplexity:
87
87
  - 'lib/lutaml/model/xml_adapter/ox_adapter.rb'
88
88
  - 'lib/lutaml/model/xml_adapter/xml_document.rb'
89
89
 
90
- # Offense count: 7
90
+ # Offense count: 8
91
91
  # Configuration parameters: Prefixes, AllowedPatterns.
92
92
  # Prefixes: when, with, without
93
93
  RSpec/ContextWording:
@@ -97,7 +97,7 @@ RSpec/ContextWording:
97
97
  - 'spec/lutaml/model/xml_adapter/xml_namespace_spec.rb'
98
98
  - 'spec/lutaml/model/xml_mapping_spec.rb'
99
99
 
100
- # Offense count: 117
100
+ # Offense count: 127
101
101
  # Configuration parameters: CountAsOne.
102
102
  RSpec/ExampleLength:
103
103
  Max: 54
@@ -127,16 +127,16 @@ RSpec/MultipleDescribes:
127
127
  - 'spec/lutaml/model/xml_adapter/xml_namespace_spec.rb'
128
128
  - 'spec/lutaml/model/xml_adapter_spec.rb'
129
129
 
130
- # Offense count: 149
130
+ # Offense count: 153
131
131
  RSpec/MultipleExpectations:
132
132
  Max: 14
133
133
 
134
- # Offense count: 18
134
+ # Offense count: 24
135
135
  # Configuration parameters: AllowSubject.
136
136
  RSpec/MultipleMemoizedHelpers:
137
137
  Max: 9
138
138
 
139
- # Offense count: 9
139
+ # Offense count: 11
140
140
  # Configuration parameters: AllowedGroups.
141
141
  RSpec/NestedGroups:
142
142
  Max: 4
@@ -154,10 +154,9 @@ RSpec/PendingWithoutReason:
154
154
  - 'spec/lutaml/model/xml_adapter/xml_namespace_spec.rb'
155
155
  - 'spec/lutaml/model/xml_adapter_spec.rb'
156
156
 
157
- # Offense count: 2
157
+ # Offense count: 1
158
158
  RSpec/RemoveConst:
159
159
  Exclude:
160
- - 'spec/lutaml/model/type/decimal_spec.rb'
161
160
  - 'spec/lutaml/model/type_spec.rb'
162
161
 
163
162
  # Offense count: 2
data/README.adoc CHANGED
@@ -938,8 +938,7 @@ This includes:
938
938
  * attributes
939
939
  * text nodes
940
940
 
941
- The `map_all` tag is **exclusive** and cannot be combined with other mappings
942
- (`map_element`, `map_attribute`, `map_content`) for the same element, ensuring
941
+ The `map_all` tag is **exclusive** and cannot be combined with other mappings (`map_element`, `map_content`) except for `map_attribute` for the same element, ensuring
943
942
  it captures the entire inner XML content.
944
943
 
945
944
  NOTE: An error is raised if `map_all` is defined alongside any other mapping in
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lutaml
4
4
  module Model
5
- VERSION = "0.3.28"
5
+ VERSION = "0.3.29"
6
6
  end
7
7
  end
@@ -3,6 +3,13 @@ require_relative "xml_mapping_rule"
3
3
  module Lutaml
4
4
  module Model
5
5
  class XmlMapping
6
+ TYPES = {
7
+ attribute: :map_attribute,
8
+ element: :map_element,
9
+ content: :map_content,
10
+ all_content: :map_all,
11
+ }.freeze
12
+
6
13
  attr_reader :root_element,
7
14
  :namespace_uri,
8
15
  :namespace_prefix,
@@ -53,7 +60,7 @@ module Lutaml
53
60
  prefix: (prefix_set = false
54
61
  nil)
55
62
  )
56
- validate!(name, to, with)
63
+ validate!(name, to, with, type: TYPES[:element])
57
64
 
58
65
  rule = XmlMappingRule.new(
59
66
  name,
@@ -84,7 +91,7 @@ module Lutaml
84
91
  prefix: (prefix_set = false
85
92
  nil)
86
93
  )
87
- validate!(name, to, with)
94
+ validate!(name, to, with, type: TYPES[:attribute])
88
95
 
89
96
  rule = XmlMappingRule.new(
90
97
  name,
@@ -114,7 +121,7 @@ module Lutaml
114
121
  mixed: false,
115
122
  cdata: false
116
123
  )
117
- validate!("content", to, with)
124
+ validate!("content", to, with, type: TYPES[:content])
118
125
 
119
126
  @content_mapping = XmlMappingRule.new(
120
127
  nil,
@@ -139,7 +146,7 @@ module Lutaml
139
146
  prefix: (prefix_set = false
140
147
  nil)
141
148
  )
142
- validate!("__raw_mapping", to, with)
149
+ validate!("__raw_mapping", to, with, type: TYPES[:all_content])
143
150
 
144
151
  rule = XmlMappingRule.new(
145
152
  "__raw_mapping",
@@ -158,8 +165,8 @@ module Lutaml
158
165
  @raw_mapping = rule
159
166
  end
160
167
 
161
- def validate!(key, to, with)
162
- validate_mappings!(key)
168
+ def validate!(key, to, with, type: nil)
169
+ validate_mappings!(type)
163
170
 
164
171
  if to.nil? && with.empty?
165
172
  msg = ":to or :with argument is required for mapping '#{key}'"
@@ -172,13 +179,14 @@ module Lutaml
172
179
  end
173
180
  end
174
181
 
175
- def validate_mappings!(key)
176
- unless @raw_mapping.nil?
177
- raise StandardError, "no other mappings are allowed with map_all"
182
+ def validate_mappings!(type)
183
+ if !@raw_mapping.nil? && type != TYPES[:attribute]
184
+ raise StandardError, "#{type} is not allowed, only #{TYPES[:attribute]} " \
185
+ "is allowed with #{TYPES[:all_content]}"
178
186
  end
179
187
 
180
- if !mappings.empty? && key == "__raw_mapping"
181
- raise StandardError, "map_all is not allowed with other mappings"
188
+ if !(elements.empty? && content_mapping.nil?) && type == TYPES[:all_content]
189
+ raise StandardError, "#{TYPES[:all_content]} is not allowed with other mappings"
182
190
  end
183
191
  end
184
192
 
@@ -179,6 +179,7 @@ module XmlMapping
179
179
 
180
180
  class WithMapAll < Lutaml::Model::Serializable
181
181
  attribute :all_content, :string
182
+ attribute :attr, :string
182
183
 
183
184
  xml do
184
185
  root "WithMapAll"
@@ -777,30 +778,34 @@ RSpec.describe Lutaml::Model::XmlMapping do
777
778
 
778
779
  describe "#map_all" do
779
780
  context "when map_all is defined before any other mapping" do
780
- let(:error_message) { "no other mappings are allowed with map_all" }
781
-
782
781
  it "raise error when for map_element with map_all" do
783
782
  expect do
784
783
  XmlMapping::WithMapAll.xml do
785
784
  map_element "ele", to: :ele
786
785
  end
787
- end.to raise_error(StandardError, error_message)
786
+ end.to raise_error(
787
+ StandardError,
788
+ "map_element is not allowed, only map_attribute is allowed with map_all",
789
+ )
788
790
  end
789
791
 
790
- it "raise error when for map_attribute with map_all" do
792
+ it "raise error when for map_content with map_all" do
791
793
  expect do
792
794
  XmlMapping::WithMapAll.xml do
793
- map_attribute "attr", to: :attr
795
+ map_content to: :text
794
796
  end
795
- end.to raise_error(StandardError, error_message)
797
+ end.to raise_error(
798
+ StandardError,
799
+ "map_content is not allowed, only map_attribute is allowed with map_all",
800
+ )
796
801
  end
797
802
 
798
- it "raise error when for map_content with map_all" do
803
+ it "does not raise error for map_attribute with map_all" do
799
804
  expect do
800
805
  XmlMapping::WithMapAll.xml do
801
- map_content to: :text
806
+ map_attribute "attr", to: :attr
802
807
  end
803
- end.to raise_error(StandardError, error_message)
808
+ end.not_to raise_error
804
809
  end
805
810
  end
806
811
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lutaml-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.28
4
+ version: 0.3.29
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-21 00:00:00.000000000 Z
11
+ date: 2024-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor