cxml-ruby 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|