oxml 0.2.1 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48524bb333bd31cec929e5946f62b8211ca82fd7fb3006ed1cec0f1b91c222fe
4
- data.tar.gz: b5024b662dd3d29ca5bdabb7c609ed8e21309cf828e36d51fcdd5b1bbc5210b0
3
+ metadata.gz: 5b988f65d855a83ee1af67916ec2afe20fb9f3e717f217b66cdf2d8f43a14963
4
+ data.tar.gz: 04c1921e496f7548343ac86dc1333a65035f446540737ba0e41438f1d8e8fac3
5
5
  SHA512:
6
- metadata.gz: 8e5193e5fe3e0b930c23aba41fa58edd25329aaacbcbb0ce0196d6bd8b2f0a3d35bc90c9a441bd55e43f7774fe20b619122beeab7c9da0f24e3af2ce212bb72e
7
- data.tar.gz: b139150f208a7fc7b0ab5e7fafde57cd7ed9783adae12c2eb749a0bf275b19b2ec6de6bf3dc9e2a6e5b3d295d3b4c4532b41b2e7ac76d5d26752f9f77d470310
6
+ metadata.gz: 597518cb1ead409f42bd75eeb364fe061e417d8c732e90f60f19787936c5524a90bec725d0a898e7d348e10bdb975c6400cdb2fc4def85be05ab3754d75484f3
7
+ data.tar.gz: 33cafa1c22dc60367a73716f41623e60abedfd3c1fff16daeb909f1023fc7d4d3d618ec6d55d00c2f2834d50c6454615121a25935807bfb70acdd3b8c176c419
data/lib/oxml/parser.rb CHANGED
@@ -14,6 +14,7 @@ module OXML
14
14
  @arr = []
15
15
  @map = {}
16
16
  @name = nil
17
+ @last_attr = nil
17
18
  @strip_namespaces = options.fetch(:strip_namespaces, false)
18
19
  @delete_namespace_attributes = options.fetch(:delete_namespace_attributes, false)
19
20
  @advanced_typecasting = options.fetch(:advanced_typecasting, false)
@@ -27,6 +28,7 @@ module OXML
27
28
  end
28
29
 
29
30
  def attr(name, str)
31
+ @last_attr = "#{name}:#{str}"
30
32
  return if @delete_namespace_attributes
31
33
 
32
34
  return if name == :version
@@ -38,6 +40,7 @@ module OXML
38
40
  end
39
41
 
40
42
  def start_element(name)
43
+ name = name.to_s
41
44
  @arr.push(@memo)
42
45
 
43
46
  if @strip_namespaces && name.start_with?('@')
@@ -52,6 +55,13 @@ module OXML
52
55
  text(@memo)
53
56
  end
54
57
 
58
+ def attrs_done
59
+ if @last_attr =~ /nil:true/
60
+ @last_attr = nil
61
+ @arr.last[@name] = nil
62
+ end
63
+ end
64
+
55
65
  def end_element(_name)
56
66
  @memo = @arr.pop
57
67
  end
@@ -70,6 +80,7 @@ module OXML
70
80
  private
71
81
 
72
82
  def cast(value)
83
+ return if value == EMPTY_STR
73
84
  return value unless @advanced_typecasting
74
85
 
75
86
  case value
data/lib/oxml/utils.rb CHANGED
@@ -6,7 +6,6 @@ module OXML
6
6
 
7
7
  def snakecase(input)
8
8
  input
9
- .to_s
10
9
  .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
11
10
  .gsub(/([a-z\d])([A-Z])/, '\1_\2')
12
11
  .tr('-', '_')
data/lib/oxml/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OXML
4
- VERSION = '0.2.1'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - xkwd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-06 00:00:00.000000000 Z
11
+ date: 2023-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ox
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Fast XML to Hash parser built on top of the Ox gem (a native C extension)
42
56
  email:
43
57
  executables: []
@@ -60,14 +74,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
60
74
  requirements:
61
75
  - - ">="
62
76
  - !ruby/object:Gem::Version
63
- version: '2.7'
77
+ version: '2.6'
64
78
  required_rubygems_version: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  requirements: []
70
- rubygems_version: 3.4.21
84
+ rubygems_version: 3.2.3
71
85
  signing_key:
72
86
  specification_version: 4
73
87
  summary: Fast XML to Hash parser