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 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: