oxml 0.3.0 → 0.4.2

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: fc41a1f99e55e1b6c66a958db2f156b70aa3c4ebf4ae914ad88dbe6f736727d9
4
- data.tar.gz: e7c07fca0db3d3efa8de3d08c0f7c5ebc99bd0a5d6a8d8bdab0627af47aea519
3
+ metadata.gz: 532c523d383f644a3e452187964a25ab17bb34290829195c7dad9a6ed4ada2ef
4
+ data.tar.gz: 33b08f21f3a0d4e5dbe386fd86669257f336deac7d8a09ef2ca23b4f5c90f45b
5
5
  SHA512:
6
- metadata.gz: ec04f13732b020a73e5f9ad78945075e3dbf08e34867ff8c807d57f842e988659f0ee4e5ae501dfbe7eec1250ecdc8cdab02925cc638b382d0182b70f7b76ddb
7
- data.tar.gz: 2781db0d20428e5d7de268434cf910457f217473306daf1a6dd83462352dce56bf0402cf5b27c87c694efc2ac5288ea61eddf9c011af0f501239c39683bfbf5d
6
+ metadata.gz: 016b3d72c6b04d5af90ebb11d1259b57bc9540539274dc0103dc489c0426491079e23ea65d7ca9d43bc905596c532b5f282c269a2b8a566c8d1c8b44ad07fde3
7
+ data.tar.gz: 8427a772b49f3f26df903acd2d2c37b019c748af877f851cbc519ae3bf78755e01c372ceb07a10240b8d2f85c6b6080b948051f6df8aaa00da4a537150f57b0e
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
@@ -53,6 +55,13 @@ module OXML
53
55
  text(@memo)
54
56
  end
55
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
+
56
65
  def end_element(_name)
57
66
  @memo = @arr.pop
58
67
  end
@@ -71,6 +80,7 @@ module OXML
71
80
  private
72
81
 
73
82
  def cast(value)
83
+ return if value == EMPTY_STR
74
84
  return value unless @advanced_typecasting
75
85
 
76
86
  case value
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.3.0'
4
+ VERSION = '0.4.2'
5
5
  end
data/lib/oxml.rb CHANGED
@@ -11,7 +11,7 @@ module OXML
11
11
 
12
12
  def parse(xml, options = {})
13
13
  handler = Parser.new(options)
14
- Ox.sax_parse(handler, xml)
14
+ Ox.sax_parse(handler, xml, skip: :skip_return)
15
15
  handler.to_h
16
16
  end
17
17
  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.3.0
4
+ version: 0.4.2
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-07 00:00:00.000000000 Z
11
+ date: 2024-03-10 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: []