cxml-ruby 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/cxml/document_node.rb +9 -3
- data/lib/cxml/version.rb +1 -1
- data/spec/document_spec.rb +20 -0
- data/spec/fixtures/document_node_with_unknown_attribute.xml +7 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 125ea774cb74155d9512b222d1d47a06945558d87d441dd1491d53caf8e9ca9a
|
4
|
+
data.tar.gz: 986ef57d03cf1706eedf08618dc5b52931171f42b147e1d81dfabaf6a6c32df8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebfe04583c735c1635a14d89cc49d4f1494b1d49b79efa7d072d261b1d91d0831a5f5d644fcfde75c54c572528fcca499288b4393dfdf86b33958d065b167d3b
|
7
|
+
data.tar.gz: 3a97f6bcc16715eae27f2ef9a8f4ade47281f092116458fc784224bd46d97cdae1f29e65234d07946ef7027accdce0e91dd9635003f8064c8b4af7730d0c1857
|
data/CHANGELOG.md
CHANGED
@@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
14
14
|
|
15
15
|
---
|
16
16
|
|
17
|
+
## [0.8.0] - 2021-04-25
|
18
|
+
### Changed
|
19
|
+
- Support continued parsing of child nodes if unknown attribute is encountered with `raise_unknown_elements` set to `false`.
|
20
|
+
|
17
21
|
## [0.7.0] - 2021-01-12
|
18
22
|
### Added
|
19
23
|
- Support parsing Phone tags.
|
data/lib/cxml/document_node.rb
CHANGED
@@ -121,9 +121,7 @@ module CXML
|
|
121
121
|
klass = "CXML::#{camelize(key)}"
|
122
122
|
send("#{key}=", Object.const_get(klass).new(val))
|
123
123
|
rescue NoMethodError => e
|
124
|
-
|
125
|
-
|
126
|
-
CXML.logger.warn(e)
|
124
|
+
handle_unknown_elements_error(e)
|
127
125
|
rescue NameError => e
|
128
126
|
raise(e) unless e.to_s.match?(klass)
|
129
127
|
|
@@ -136,6 +134,8 @@ module CXML
|
|
136
134
|
else
|
137
135
|
send("#{key}=", val)
|
138
136
|
end
|
137
|
+
rescue NoMethodError => e
|
138
|
+
handle_unknown_elements_error(e)
|
139
139
|
end
|
140
140
|
|
141
141
|
def camelize(string, uppercase_first_letter: true)
|
@@ -150,5 +150,11 @@ module CXML
|
|
150
150
|
"#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}"
|
151
151
|
end.gsub('/', '::')
|
152
152
|
end
|
153
|
+
|
154
|
+
def handle_unknown_elements_error(error)
|
155
|
+
raise(UnknownAttributeError, error) if CXML.raise_unknown_elements
|
156
|
+
|
157
|
+
CXML.logger.warn(error)
|
158
|
+
end
|
153
159
|
end
|
154
160
|
end
|
data/lib/cxml/version.rb
CHANGED
data/spec/document_spec.rb
CHANGED
@@ -82,6 +82,26 @@ describe CXML::Document do
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
context 'when unknown attribute is present' do
|
86
|
+
let(:data) { CXML::Parser.new(data: fixture('document_node_with_unknown_attribute.xml')).parse }
|
87
|
+
let(:doc) { CXML::Document.new(data) }
|
88
|
+
|
89
|
+
it 'does not raise and parses child nodes if CXML.raise_unknown_elements is false' do
|
90
|
+
CXML.raise_unknown_elements = false
|
91
|
+
-> { doc }.should_not raise_error
|
92
|
+
|
93
|
+
doc.response.status.code.should eq(200)
|
94
|
+
doc.response.status.content.should eq('123456')
|
95
|
+
|
96
|
+
# Reset `raise_unknown_elements` for future tests
|
97
|
+
CXML.raise_unknown_elements = true
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'raises UnknownAttributeError' do
|
101
|
+
-> { doc }.should raise_error(CXML::UnknownAttributeError)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
85
105
|
context 'when a response document is passed' do
|
86
106
|
let(:data) { CXML::Parser.new(data: fixture('response_status_200.xml')).parse }
|
87
107
|
include_examples :document_has_mandatory_values
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.020/cXML.dtd">
|
3
|
+
<cXML xml:lang="en-US" payloadID="test-id" timestamp="2020-09-10T20:32:26+00:00">
|
4
|
+
<Response invalid="invalid">
|
5
|
+
<Status code="200" text="Ok">123456</Status>
|
6
|
+
</Response>
|
7
|
+
</cXML>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Beckman
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-04-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ox
|
@@ -213,6 +213,7 @@ files:
|
|
213
213
|
- spec/fixtures/1.2.020-InvoiceDetail.dtd
|
214
214
|
- spec/fixtures/1.2.020-cXML.dtd
|
215
215
|
- spec/fixtures/1.2.037-InvoiceDetail.dtd
|
216
|
+
- spec/fixtures/document_node_with_unknown_attribute.xml
|
216
217
|
- spec/fixtures/envelope.xml
|
217
218
|
- spec/fixtures/envelope2.xml
|
218
219
|
- spec/fixtures/invoice_backed_and_unbacked_by_pos.xml
|
@@ -281,6 +282,7 @@ test_files:
|
|
281
282
|
- spec/fixtures/1.2.020-InvoiceDetail.dtd
|
282
283
|
- spec/fixtures/1.2.020-cXML.dtd
|
283
284
|
- spec/fixtures/1.2.037-InvoiceDetail.dtd
|
285
|
+
- spec/fixtures/document_node_with_unknown_attribute.xml
|
284
286
|
- spec/fixtures/envelope.xml
|
285
287
|
- spec/fixtures/envelope2.xml
|
286
288
|
- spec/fixtures/invoice_backed_and_unbacked_by_pos.xml
|