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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc74760a69c8e09c9b0ed1424b2144ca67081706c0529c5bc3416a015914155e
4
- data.tar.gz: 76469a8859133f67497651381acc3383fbc834e870c6928241518f8c272a0dee
3
+ metadata.gz: 87772dd26f3194f54c29efa9a993202f79e8102f9bda767bbab87fb43579b9be
4
+ data.tar.gz: 227e6acd1a26406c8eaeabdec57326e5ac85ff5a965ff11c0d24650d786c3f51
5
5
  SHA512:
6
- metadata.gz: b9d816593ca065c4fe36cb8aeceb54d7f2d86453016a6a251c19d28cae413b2b54dfabf806aae3f0ce1585908d4bafb9d3c630a1caaf6a0a37999120795b7cec
7
- data.tar.gz: f4bf1aa75c266bc6927f12f51093853f816bb910d2bd7924f76ad2222964aad95b39035a1b1c5fb3b524e04bac78c56f6fcb28c62ee4ed37cc3909ee289e07c4
6
+ metadata.gz: 812724e750bb2f67a33fa0cd2acef0d03996d394574ea265f40b90c842f1b5244de9ab7ca74a7acedc38a6dbd0d96030933be52a6ef0cf7d2713328117d660bb
7
+ data.tar.gz: 93d10408aaaafaa739ffa6841a83b0ecabe253247cff418684887ac8bfb3fed328e29a649e09d9e1ed043f8aa3d7adfcfbff4104156fb5e80993463d9ed147b6
@@ -15,6 +15,7 @@ jobs:
15
15
  ruby-version: 2.6.x
16
16
  - name: Test with Rake
17
17
  run: |
18
+ sudo apt-get install libxml2-utils
18
19
  gem install bundler
19
20
  bundle install --jobs 4 --retry 3
20
21
  bundle exec rake
@@ -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
 
@@ -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.
@@ -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')
@@ -26,7 +26,7 @@ module CXML
26
26
  def self.logger
27
27
  return @logger if @logger
28
28
 
29
- @logger ||= Logger.new(STDOUT, level: :warn)
29
+ @logger ||= Logger.new($stdout, level: :warn)
30
30
  end
31
31
 
32
32
  def self.logger=(new_logger)
@@ -3,6 +3,7 @@
3
3
  module CXML
4
4
  class Document < DocumentNode
5
5
  attr_writer :dtd
6
+
6
7
  accessible_attributes %i[
7
8
  payload_id
8
9
  timestamp
@@ -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 = true)
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
@@ -44,17 +44,22 @@ module CXML
44
44
 
45
45
  private
46
46
 
47
- def node_to_hash(node) # rubocop:disable Metrics/AbcSize
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CXML
4
- VERSION = '0.6.0'
4
+ VERSION = '0.6.1'
5
5
  end
@@ -4,7 +4,7 @@
4
4
  <SupplierPartAuxiliaryID>lkajsdflsdf</SupplierPartAuxiliaryID>
5
5
  </ItemID>
6
6
  <ItemDetail>
7
- <Description xml:lang="en">AGENDA MAGAZINE RACK A4 CHARCOAL 25990</Description>
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>
@@ -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 = 'spec/fixtures/' + match.last(2).join('-')
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.0
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-05-01 00:00:00.000000000 Z
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: '0'
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.0.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: