cxml-ruby 0.6.0 → 0.6.1
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/.github/workflows/ruby.yml +1 -0
- data/.rubocop.yml +4 -0
- data/CHANGELOG.md +4 -0
- data/cxml-ruby.gemspec +1 -0
- data/lib/cxml-ruby.rb +1 -1
- data/lib/cxml/document.rb +1 -0
- data/lib/cxml/document_node.rb +2 -2
- data/lib/cxml/parser.rb +7 -2
- data/lib/cxml/version.rb +1 -1
- data/spec/fixtures/item_in.xml +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87772dd26f3194f54c29efa9a993202f79e8102f9bda767bbab87fb43579b9be
|
4
|
+
data.tar.gz: 227e6acd1a26406c8eaeabdec57326e5ac85ff5a965ff11c0d24650d786c3f51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 812724e750bb2f67a33fa0cd2acef0d03996d394574ea265f40b90c842f1b5244de9ab7ca74a7acedc38a6dbd0d96030933be52a6ef0cf7d2713328117d660bb
|
7
|
+
data.tar.gz: 93d10408aaaafaa739ffa6841a83b0ecabe253247cff418684887ac8bfb3fed328e29a649e09d9e1ed043f8aa3d7adfcfbff4104156fb5e80993463d9ed147b6
|
data/.github/workflows/ruby.yml
CHANGED
data/.rubocop.yml
CHANGED
@@ -2,6 +2,7 @@ AllCops:
|
|
2
2
|
Exclude:
|
3
3
|
- Gemfile
|
4
4
|
- vendor/**/*
|
5
|
+
NewCops: enable
|
5
6
|
|
6
7
|
# # Disable checking for block length
|
7
8
|
Metrics/BlockLength:
|
@@ -54,6 +55,9 @@ Style/Documentation:
|
|
54
55
|
Style/ClassAndModuleChildren:
|
55
56
|
Enabled: false
|
56
57
|
|
58
|
+
Style/ArrayCoercion:
|
59
|
+
Enabled: false
|
60
|
+
|
57
61
|
Style/HashEachMethods:
|
58
62
|
Enabled: true
|
59
63
|
|
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.6.1] - 2020-09-04
|
18
|
+
### Fixed
|
19
|
+
- Handle parsing CDATA tags in cXML content (Thanks @CRiva!).
|
20
|
+
|
17
21
|
## [0.6.0] - 2020-05-01
|
18
22
|
### Fixed
|
19
23
|
- Conform to cXML DTD spec for ordered output of child nodes.
|
data/cxml-ruby.gemspec
CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.authors = ['Josh Beckman', 'Eleni Chappen']
|
13
13
|
s.email = ['josh@officeluv.com', 'eleni@officeluv.com']
|
14
14
|
|
15
|
+
s.required_ruby_version = '>= 2.4'
|
15
16
|
s.add_dependency('ox', '~> 2.13')
|
16
17
|
|
17
18
|
s.add_development_dependency('pry', '~> 0.12')
|
data/lib/cxml-ruby.rb
CHANGED
data/lib/cxml/document.rb
CHANGED
data/lib/cxml/document_node.rb
CHANGED
@@ -108,7 +108,7 @@ module CXML
|
|
108
108
|
string_attr = if attr.to_sym == :xml_lang
|
109
109
|
'xml:lang'
|
110
110
|
else
|
111
|
-
camelize(attr, false)
|
111
|
+
camelize(attr, uppercase_first_letter: false)
|
112
112
|
end
|
113
113
|
obj[string_attr] = value
|
114
114
|
end
|
@@ -138,7 +138,7 @@ module CXML
|
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
|
-
def camelize(string, uppercase_first_letter
|
141
|
+
def camelize(string, uppercase_first_letter: true)
|
142
142
|
string = if uppercase_first_letter
|
143
143
|
string.to_s.sub(/^[a-z\d]*/, &:capitalize)
|
144
144
|
else
|
data/lib/cxml/parser.rb
CHANGED
@@ -44,17 +44,22 @@ module CXML
|
|
44
44
|
|
45
45
|
private
|
46
46
|
|
47
|
-
def node_to_hash(node)
|
47
|
+
def node_to_hash(node)
|
48
|
+
return node.value if node.is_a?(Ox::CData)
|
48
49
|
return node if node.is_a? String
|
49
50
|
return node.nodes.first if node.nodes.all?(String) && node.attributes.empty?
|
50
51
|
|
52
|
+
transform_node_to_hash node
|
53
|
+
end
|
54
|
+
|
55
|
+
def transform_node_to_hash(node)
|
51
56
|
hash = node.attributes
|
52
57
|
hash.transform_keys!(&method(:underscore_key))
|
53
58
|
node.nodes.reduce(hash) do |acc, child_node|
|
54
59
|
next acc if child_node.is_a?(Ox::Comment)
|
55
60
|
|
56
61
|
node_hash = {}
|
57
|
-
name = child_node.is_a?(String) ? :content : child_node.value
|
62
|
+
name = child_node.is_a?(String) || child_node.is_a?(Ox::CData) ? :content : child_node.value
|
58
63
|
node_hash[underscore_key(name)] = node_to_hash(child_node)
|
59
64
|
acc.merge(node_hash) do |_key, val1, val2|
|
60
65
|
[val1, val2].flatten
|
data/lib/cxml/version.rb
CHANGED
data/spec/fixtures/item_in.xml
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
<SupplierPartAuxiliaryID>lkajsdflsdf</SupplierPartAuxiliaryID>
|
5
5
|
</ItemID>
|
6
6
|
<ItemDetail>
|
7
|
-
<Description xml:lang="en"
|
7
|
+
<Description xml:lang="en"><![CDATA[AGENDA MAGAZINE RACK A4 CHARCOAL 25990]]></Description>
|
8
8
|
<UnitOfMeasure>EA</UnitOfMeasure>
|
9
9
|
<UnitPrice> <Money currency="GBP">5.35</Money> </UnitPrice>
|
10
10
|
<Classification domain="UNSPSC">44000000</Classification>
|
data/spec/spec_helper.rb
CHANGED
@@ -25,7 +25,7 @@ def dtd_path_from_url(url)
|
|
25
25
|
return 'spec/fixtures/1.2.037-cXML.dtd' unless url
|
26
26
|
|
27
27
|
match = url.match(%r{/(\d+\.\d+\.\d+)/(\w+\.dtd)}).to_a
|
28
|
-
file =
|
28
|
+
file = "spec/fixtures/#{match.last(2).join('-')}"
|
29
29
|
return file if File.exist?(file)
|
30
30
|
|
31
31
|
system("curl #{url} -O && mv #{match.last} #{file}")
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Beckman
|
8
8
|
- Eleni Chappen
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-09-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ox
|
@@ -250,7 +250,7 @@ homepage: https://github.com/officeluv/cxml-ruby
|
|
250
250
|
licenses:
|
251
251
|
- MIT
|
252
252
|
metadata: {}
|
253
|
-
post_install_message:
|
253
|
+
post_install_message:
|
254
254
|
rdoc_options: []
|
255
255
|
require_paths:
|
256
256
|
- lib
|
@@ -258,15 +258,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
258
258
|
requirements:
|
259
259
|
- - ">="
|
260
260
|
- !ruby/object:Gem::Version
|
261
|
-
version: '
|
261
|
+
version: '2.4'
|
262
262
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
263
263
|
requirements:
|
264
264
|
- - ">="
|
265
265
|
- !ruby/object:Gem::Version
|
266
266
|
version: '0'
|
267
267
|
requirements: []
|
268
|
-
rubygems_version: 3.
|
269
|
-
signing_key:
|
268
|
+
rubygems_version: 3.1.2
|
269
|
+
signing_key:
|
270
270
|
specification_version: 4
|
271
271
|
summary: Parse/generate documents with the cXML protocol
|
272
272
|
test_files:
|