oxml 0.2.1 → 0.4.0

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