cxml-ruby 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|