saxy 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +9 -0
- data/Appraisals +7 -0
- data/gemfiles/nokogiri_1.6.gemfile +7 -0
- data/gemfiles/nokogiri_latest.gemfile +7 -0
- data/lib/saxy/parser.rb +5 -2
- data/lib/saxy/version.rb +1 -1
- data/saxy.gemspec +2 -1
- data/spec/saxy/parser_spec.rb +7 -2
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9486f25851c6f1fc75f37b2196b02cc27831386
|
4
|
+
data.tar.gz: d914fa68442184ac2066e8f860f1f82d029222a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 116cf7b365cecb245cec43dc7e45ec62f5e36f05461d47ce270b8aab2113a546de053d4772ac97878518d5a0534241ee44ffcd37cd9db172016872edd7192d04
|
7
|
+
data.tar.gz: de32e8c5e86c0a29300a5f0dc64b29c3282c40d3aa8fb5d4a2ad0f70d6352d860cb95c040a985eca2782c7e1a0e70fa507fc677272e0c8e25b0a277d71e98e88
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -6,3 +6,12 @@ rvm:
|
|
6
6
|
- 2.1
|
7
7
|
- 2.0.0
|
8
8
|
- 1.9.3
|
9
|
+
gemfile:
|
10
|
+
- gemfiles/nokogiri_1.6.gemfile
|
11
|
+
- gemfiles/nokogiri_latest.gemfile
|
12
|
+
matrix:
|
13
|
+
exclude:
|
14
|
+
- rvm: 2.0.0
|
15
|
+
gemfile: gemfiles/nokogiri_latest.gemfile
|
16
|
+
- rvm: 1.9.3
|
17
|
+
gemfile: gemfiles/nokogiri_latest.gemfile
|
data/Appraisals
ADDED
data/lib/saxy/parser.rb
CHANGED
@@ -16,9 +16,10 @@ module Saxy
|
|
16
16
|
# Will yield objects inside the callback after they're built
|
17
17
|
attr_reader :callback
|
18
18
|
|
19
|
-
def initialize(object, object_tag)
|
19
|
+
def initialize(object, object_tag, encoding=nil)
|
20
20
|
@object, @object_tag = object, object_tag
|
21
21
|
@tags, @elements = [], []
|
22
|
+
@encoding = encoding
|
22
23
|
end
|
23
24
|
|
24
25
|
def start_element(tag, attributes=[])
|
@@ -67,7 +68,9 @@ module Saxy
|
|
67
68
|
|
68
69
|
@callback = blk
|
69
70
|
|
70
|
-
|
71
|
+
args = [self, @encoding].compact
|
72
|
+
|
73
|
+
parser = Nokogiri::XML::SAX::Parser.new(*args)
|
71
74
|
|
72
75
|
if @object.respond_to?(:read) && @object.respond_to?(:close)
|
73
76
|
parser.parse_io(@object)
|
data/lib/saxy/version.rb
CHANGED
data/saxy.gemspec
CHANGED
@@ -4,7 +4,7 @@ require File.expand_path('../lib/saxy/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Michał Szajbe"]
|
6
6
|
gem.email = ["michal.szajbe@gmail.com"]
|
7
|
-
gem.description = %q{Saxy finds object definitions in XML files and translates them into Ruby objects. It uses SAX parser under the hood, which means that it doesn't load the whole XML file into memory. It goes once
|
7
|
+
gem.description = %q{Saxy finds object definitions in XML files and translates them into Ruby objects. It uses SAX parser under the hood, which means that it doesn't load the whole XML file into memory. It goes once through it and yields objects along the way.}
|
8
8
|
gem.summary = %q{Memory-efficient XML parser. Finds object definitions and translates them into Ruby objects.}
|
9
9
|
gem.homepage = "http://github.com/humante/saxy"
|
10
10
|
|
@@ -20,4 +20,5 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.add_dependency "nokogiri"
|
21
21
|
|
22
22
|
gem.add_development_dependency "rspec"
|
23
|
+
gem.add_development_dependency "appraisal"
|
23
24
|
end
|
data/spec/saxy/parser_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Saxy::Parser do
|
4
4
|
include FixturesHelper
|
5
5
|
|
6
|
-
let(:parser) { Saxy::Parser.new(fixture_file("webstore.xml"), "product") }
|
6
|
+
let(:parser) { Saxy::Parser.new(fixture_file("webstore.xml"), "product", "UTF-8") }
|
7
7
|
let(:file_io) { File.new(fixture_file("webstore.xml")) }
|
8
8
|
let(:io_like) { IOLike.new(file_io) }
|
9
9
|
|
@@ -18,6 +18,12 @@ describe Saxy::Parser do
|
|
18
18
|
expect(parser.each.to_a.size).to eq(2)
|
19
19
|
end
|
20
20
|
|
21
|
+
it "should accept optional force-encoding" do
|
22
|
+
parser = Saxy::Parser.new(file_io, "product", 'UTF-8')
|
23
|
+
expect(Nokogiri::XML::SAX::Parser).to receive(:new).with(parser, "UTF-8").and_call_original
|
24
|
+
expect(parser.each.to_a.size).to eq(2)
|
25
|
+
end
|
26
|
+
|
21
27
|
it "should accept an IO-like for parsing" do
|
22
28
|
parser = Saxy::Parser.new(io_like, "product")
|
23
29
|
expect(parser.each.to_a.size).to eq(2)
|
@@ -158,5 +164,4 @@ describe Saxy::Parser do
|
|
158
164
|
it "should return Enumerator when calling #each without a block" do
|
159
165
|
expect(parser.each).to be_an(Enumerator)
|
160
166
|
end
|
161
|
-
|
162
167
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saxy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michał Szajbe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -38,9 +38,23 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: appraisal
|
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: Saxy finds object definitions in XML files and translates them into Ruby
|
42
56
|
objects. It uses SAX parser under the hood, which means that it doesn't load the
|
43
|
-
whole XML file into memory. It goes once
|
57
|
+
whole XML file into memory. It goes once through it and yields objects along the
|
44
58
|
way.
|
45
59
|
email:
|
46
60
|
- michal.szajbe@gmail.com
|
@@ -51,10 +65,13 @@ files:
|
|
51
65
|
- ".gitignore"
|
52
66
|
- ".rspec"
|
53
67
|
- ".travis.yml"
|
68
|
+
- Appraisals
|
54
69
|
- Gemfile
|
55
70
|
- LICENSE.txt
|
56
71
|
- README.md
|
57
72
|
- Rakefile
|
73
|
+
- gemfiles/nokogiri_1.6.gemfile
|
74
|
+
- gemfiles/nokogiri_latest.gemfile
|
58
75
|
- lib/saxy.rb
|
59
76
|
- lib/saxy/element.rb
|
60
77
|
- lib/saxy/parser.rb
|