oxml 0.3.0 → 0.4.2

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