saxerator 0.9.4 → 0.9.5
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 +4 -4
- data/lib/saxerator/builder/hash_builder.rb +11 -3
- data/lib/saxerator/version.rb +1 -1
- data/saxerator.gemspec +1 -1
- data/spec/lib/builder/hash_builder_spec.rb +23 -23
- data/spec/lib/builder/xml_builder_spec.rb +2 -2
- data/spec/lib/dsl/all_spec.rb +2 -2
- data/spec/lib/dsl/at_depth_spec.rb +4 -4
- data/spec/lib/dsl/child_of_spec.rb +4 -4
- data/spec/lib/dsl/for_tag_spec.rb +1 -1
- data/spec/lib/dsl/for_tags_spec.rb +2 -2
- data/spec/lib/dsl/with_attribute_spec.rb +3 -3
- data/spec/lib/dsl/with_attributes_spec.rb +4 -4
- data/spec/lib/dsl/within_spec.rb +3 -3
- data/spec/lib/saxerator_spec.rb +53 -29
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a9e778a67df70446a761b0c44b299ec71d17767
|
4
|
+
data.tar.gz: 4dd1010e6d76ec961dfaaac08b03e5c4e9179658
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f575598f8e4eb2a50a828457107084615cecb12dfc4c1c94bb0b673cf7a6cc0c75771400c38d8b9eb403bc95da1be5f9bfcd7d1ff5be85f171090ef7961a6c30
|
7
|
+
data.tar.gz: b33b5a6cd650a36d77ddf69ce33380aad95cc88d9c25d9000a86d1bd88377e4d07f0c7451a592b3b3c8d377c88de2ece5a72dda3c5be4dfdecceb487ee4768b0
|
@@ -6,7 +6,7 @@ module Saxerator
|
|
6
6
|
def initialize(config, name, attributes)
|
7
7
|
@config = config
|
8
8
|
@name = config.generate_key_for(name)
|
9
|
-
@attributes = attributes
|
9
|
+
@attributes = normalize_attributes(attributes)
|
10
10
|
@children = []
|
11
11
|
@text = false
|
12
12
|
end
|
@@ -46,9 +46,9 @@ module Saxerator
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def add_to_hash_element( hash, name, element)
|
49
|
-
name =
|
49
|
+
name = generate_key(name)
|
50
50
|
if hash[name]
|
51
|
-
|
51
|
+
unless hash[name].is_a?(Array)
|
52
52
|
hash[name] = ArrayElement[hash[name]]
|
53
53
|
hash[name].name = name
|
54
54
|
end
|
@@ -63,6 +63,14 @@ module Saxerator
|
|
63
63
|
return to_hash if @children.count > 0 || (@attributes.count > 0 && @config.put_attributes_in_hash?)
|
64
64
|
to_empty_element
|
65
65
|
end
|
66
|
+
|
67
|
+
def normalize_attributes(attributes)
|
68
|
+
Hash[attributes.map {|key, value| [generate_key(key), value] }]
|
69
|
+
end
|
70
|
+
|
71
|
+
def generate_key(name)
|
72
|
+
@config.generate_key_for(name)
|
73
|
+
end
|
66
74
|
end
|
67
75
|
end
|
68
76
|
end
|
data/lib/saxerator/version.rb
CHANGED
data/saxerator.gemspec
CHANGED
@@ -6,87 +6,87 @@ describe "Saxerator (default) hash format" do
|
|
6
6
|
subject(:entry) { Saxerator.parser(xml).for_tag(:entry).first }
|
7
7
|
|
8
8
|
# string
|
9
|
-
specify { entry['title'].
|
9
|
+
specify { expect(entry['title']).to eq('How to eat an airplane') }
|
10
10
|
|
11
11
|
# hash and cdata inside name
|
12
|
-
specify { entry['author'].
|
12
|
+
specify { expect(entry['author']).to eq({'name' => 'Soul<utter'}) }
|
13
13
|
|
14
14
|
# array of hashes
|
15
|
-
specify { entry['contributor'].
|
15
|
+
specify { expect(entry['contributor']).to eq([{'name' => 'Jane Doe'}, {'name' => 'Leviticus Alabaster'}]) }
|
16
16
|
|
17
17
|
# attributes on a hash
|
18
|
-
specify { entry['contributor'][0].attributes['type'].
|
18
|
+
specify { expect(entry['contributor'][0].attributes['type']).to eq('primary') }
|
19
19
|
|
20
20
|
# attributes on a string
|
21
|
-
specify { entry['content'].attributes['type'].
|
21
|
+
specify { expect(entry['content'].attributes['type']).to eq('html') }
|
22
22
|
|
23
23
|
# name on a hash
|
24
|
-
specify { entry.name.
|
24
|
+
specify { expect(entry.name).to eq('entry') }
|
25
25
|
|
26
26
|
# name on a string
|
27
|
-
specify { entry['title'].name.
|
27
|
+
specify { expect(entry['title'].name).to eq('title') }
|
28
28
|
|
29
29
|
describe "#to_s" do
|
30
30
|
it "preserves the element name" do
|
31
|
-
entry['title'].to_a.name.
|
31
|
+
expect(entry['title'].to_a.name).to eq('title')
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "#to_h" do
|
36
36
|
it "preserves the element name" do
|
37
|
-
entry.to_h.name.
|
37
|
+
expect(entry.to_h.name).to eq('entry')
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
describe "#to_a" do
|
42
42
|
it "preserves the element name on a parsed hash" do
|
43
|
-
entry.to_a.name.
|
43
|
+
expect(entry.to_a.name).to eq('entry')
|
44
44
|
end
|
45
45
|
|
46
46
|
it "converts parsed hashes to nested key/value pairs (just like regular hashes)" do
|
47
|
-
entry.to_a.first.
|
47
|
+
expect(entry.to_a.first).to eq(['id', '1'])
|
48
48
|
end
|
49
49
|
|
50
50
|
it "preserves the element name on a parsed string" do
|
51
|
-
entry['title'].to_a.name.
|
51
|
+
expect(entry['title'].to_a.name).to eq('title')
|
52
52
|
end
|
53
53
|
|
54
54
|
it "preserves the element name on an array" do
|
55
|
-
entry['contributor'].to_a.name.
|
55
|
+
expect(entry['contributor'].to_a.name).to eq 'contributor'
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
# name on an array
|
60
|
-
specify { entry['contributor'].name.
|
60
|
+
specify { expect(entry['contributor'].name).to eq('contributor') }
|
61
61
|
|
62
62
|
# character entity decoding
|
63
|
-
specify { entry['content'].
|
63
|
+
specify { expect(entry['content']).to eq("<p>Airplanes are very large — this can present difficulty in digestion.</p>") }
|
64
64
|
|
65
65
|
context "parsing an empty element" do
|
66
66
|
subject(:element) { entry['media:thumbnail'] }
|
67
67
|
|
68
68
|
it "behaves somewhat like nil" do
|
69
|
-
element.
|
70
|
-
(!element).
|
71
|
-
element.to_s.
|
72
|
-
element.to_h.
|
69
|
+
expect(element).to be_nil
|
70
|
+
expect(!element).to eq true
|
71
|
+
expect(element.to_s).to eq ''
|
72
|
+
expect(element.to_h).to eq Hash.new
|
73
73
|
end
|
74
74
|
|
75
|
-
it {
|
75
|
+
it { is_expected.to be_empty }
|
76
76
|
|
77
77
|
it "has attributes" do
|
78
|
-
element.attributes.keys.
|
78
|
+
expect(element.attributes.keys).to eq ['url']
|
79
79
|
end
|
80
80
|
|
81
81
|
[:to_s, :to_h, :to_a].each do |conversion|
|
82
82
|
it "preserves the element name through ##{conversion}" do
|
83
|
-
element.send(conversion).name.
|
83
|
+
expect(element.send(conversion).name).to eq 'media:thumbnail'
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
87
|
[:to_s, :to_h].each do |conversion|
|
88
88
|
it "preserves attributes through ##{conversion}" do
|
89
|
-
element.send(conversion).attributes.keys.
|
89
|
+
expect(element.send(conversion).attributes.keys).to eq ['url']
|
90
90
|
end
|
91
91
|
end
|
92
92
|
end
|
@@ -9,7 +9,7 @@ describe "Saxerator xml format" do
|
|
9
9
|
end.for_tag(:entry).first
|
10
10
|
end
|
11
11
|
|
12
|
-
it {
|
12
|
+
it { is_expected.to be_a(Nokogiri::XML::Node) }
|
13
13
|
it "looks like the original document" do
|
14
14
|
expected_xml = <<-eos
|
15
15
|
<?xml version="1.0"?>
|
@@ -32,6 +32,6 @@ describe "Saxerator xml format" do
|
|
32
32
|
</contributor>
|
33
33
|
</entry>
|
34
34
|
eos
|
35
|
-
entry.to_xml.
|
35
|
+
expect(entry.to_xml).to eq(expected_xml)
|
36
36
|
end
|
37
37
|
end
|
data/spec/lib/dsl/all_spec.rb
CHANGED
@@ -16,7 +16,7 @@ describe "Saxerator::FullDocument#all" do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should allow you to parse an entire document" do
|
19
|
-
parser.all.
|
19
|
+
expect(parser.all).to eq 'blurb' => ['one', 'two', 'three'], 'notablurb' => 'four', 'empty' => {}
|
20
20
|
end
|
21
21
|
|
22
22
|
context "with_put_attributes_in_hash" do
|
@@ -25,7 +25,7 @@ describe "Saxerator::FullDocument#all" do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should allow you to parse an entire document" do
|
28
|
-
parser.all.
|
28
|
+
expect(parser.all).to eq 'blurb' => ['one', 'two', 'three'], 'notablurb' => 'four', 'empty' => { "with" => "attribute" }
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -19,16 +19,16 @@ describe "Saxerator::DSL#at_depth" do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should parse elements at the requested tag depth" do
|
22
|
-
parser.at_depth(2).inject([], :<<).
|
22
|
+
expect(parser.at_depth(2).inject([], :<<)).to eq([
|
23
23
|
'How to eat an airplane', 'Leviticus Alabaster',
|
24
24
|
'To wallop a horse in the face', 'Jeanne Clarewood'
|
25
|
-
]
|
25
|
+
])
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should work in combination with #for_tag" do
|
29
|
-
parser.at_depth(2).for_tag(:name).inject([], :<<).
|
29
|
+
expect(parser.at_depth(2).for_tag(:name).inject([], :<<)).to eq([
|
30
30
|
'How to eat an airplane',
|
31
31
|
'To wallop a horse in the face'
|
32
|
-
]
|
32
|
+
])
|
33
33
|
end
|
34
34
|
end
|
@@ -21,16 +21,16 @@ describe "Saxerator::DSL#child_of" do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should only parse children of the specified tag" do
|
24
|
-
parser.child_of(:grandchildren).inject([], :<<).
|
24
|
+
expect(parser.child_of(:grandchildren).inject([], :<<)).to eq([
|
25
25
|
'Mildred Marston'
|
26
|
-
]
|
26
|
+
])
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should work in combination with #for_tag" do
|
30
|
-
parser.for_tag(:name).child_of(:children).inject([], :<<).
|
30
|
+
expect(parser.for_tag(:name).child_of(:children).inject([], :<<)).to eq([
|
31
31
|
'Rudy McMannis',
|
32
32
|
'Tom McMannis',
|
33
33
|
'Anne Welsh'
|
34
|
-
]
|
34
|
+
])
|
35
35
|
end
|
36
36
|
end
|
@@ -15,6 +15,6 @@ describe "Saxerator::DSL#for_tag" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should only select the specified tag" do
|
18
|
-
parser.for_tag(:blurb).inject([], :<<).
|
18
|
+
expect(parser.for_tag(:blurb).inject([], :<<)).to eq(['one', 'two', 'three'])
|
19
19
|
end
|
20
20
|
end
|
@@ -14,10 +14,10 @@ describe "Saxerator::DSL#for_tags" do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should only select the specified tags" do
|
17
|
-
parser.for_tags(%w(blurb1 blurb3)).inject([], :<<).
|
17
|
+
expect(parser.for_tags(%w(blurb1 blurb3)).inject([], :<<)).to eq(['one', 'three'])
|
18
18
|
end
|
19
19
|
|
20
20
|
it "raises an ArgumentError for a non-Array argument" do
|
21
|
-
|
21
|
+
expect { parser.for_tags("asdf") }.to raise_error ArgumentError
|
22
22
|
end
|
23
23
|
end
|
@@ -16,13 +16,13 @@ describe "Saxerator::DSL#with_attribute" do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should match tags with the specified attributes" do
|
19
|
-
subject.with_attribute(:type).inject([], :<<).
|
19
|
+
expect(subject.with_attribute(:type).inject([], :<<)).to eq([
|
20
20
|
'Leviticus Alabaster',
|
21
21
|
'Eunice Diesel'
|
22
|
-
]
|
22
|
+
])
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should match tags with the specified attributes" do
|
26
|
-
subject.with_attribute(:type, :primary).inject([], :<<).
|
26
|
+
expect(subject.with_attribute(:type, :primary).inject([], :<<)).to eq(['Leviticus Alabaster'])
|
27
27
|
end
|
28
28
|
end
|
@@ -17,16 +17,16 @@ describe "Saxerator::DSL#with_attributes" do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "matches tags with the exact specified attributes" do
|
20
|
-
parser.with_attributes(:type => :primary, :ridiculous => 'true').inject([], :<<).
|
20
|
+
expect(parser.with_attributes(:type => :primary, :ridiculous => 'true').inject([], :<<)).to eq([
|
21
21
|
'Leviticus Alabaster'
|
22
|
-
]
|
22
|
+
])
|
23
23
|
end
|
24
24
|
|
25
25
|
it "matches tags which have the specified attributes" do
|
26
|
-
parser.with_attributes(%w(type ridiculous)).inject([], :<<).
|
26
|
+
expect(parser.with_attributes(%w(type ridiculous)).inject([], :<<)).to eq(['Leviticus Alabaster', 'Eunice Diesel'])
|
27
27
|
end
|
28
28
|
|
29
29
|
it "raises ArgumentError if you pass something other than a Hash or Array" do
|
30
|
-
|
30
|
+
expect { parser.with_attributes('asdf') }.to raise_error ArgumentError
|
31
31
|
end
|
32
32
|
end
|
data/spec/lib/dsl/within_spec.rb
CHANGED
@@ -16,13 +16,13 @@ describe "Saxerator::DSL#within" do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should only parse elements nested within the specified tag" do
|
19
|
-
parser.within(:article).inject([], :<<).
|
19
|
+
expect(parser.within(:article).inject([], :<<)).to eq([
|
20
20
|
'Is our children learning?',
|
21
21
|
'Hazel Nutt'
|
22
|
-
]
|
22
|
+
])
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should work in combination with #for_tag" do
|
26
|
-
parser.for_tag(:name).within(:article).inject([], :<<).
|
26
|
+
expect(parser.for_tag(:name).within(:article).inject([], :<<)).to eq(['Is our children learning?'])
|
27
27
|
end
|
28
28
|
end
|
data/spec/lib/saxerator_spec.rb
CHANGED
@@ -10,14 +10,14 @@ describe Saxerator do
|
|
10
10
|
let(:xml) { fixture_file('flat_blurbs.xml') }
|
11
11
|
|
12
12
|
it "should be able to parse it" do
|
13
|
-
parser.all.
|
13
|
+
expect(parser.all).to eq({'blurb' => ['one', 'two', 'three']})
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should allow multiple operations on the same parser" do
|
17
17
|
# This exposes a bug where if a File is not reset only the first
|
18
18
|
# Enumerable method works as expected
|
19
|
-
parser.for_tag(:blurb).first.
|
20
|
-
parser.for_tag(:blurb).first.
|
19
|
+
expect(parser.for_tag(:blurb).first).to eq('one')
|
20
|
+
expect(parser.for_tag(:blurb).first).to eq('one')
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -32,13 +32,13 @@ describe Saxerator do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should be able to parse it" do
|
35
|
-
parser.all.
|
35
|
+
expect(parser.all).to eq({ 'name' => 'Illiterates that can read', 'author' => 'Eunice Diesel' })
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
context "configuration" do
|
41
|
-
let(:xml) {
|
41
|
+
let(:xml) { '<foo><bar foo="bar">baz</bar></foo>' }
|
42
42
|
|
43
43
|
context "output type" do
|
44
44
|
subject(:parser) do
|
@@ -47,7 +47,13 @@ describe Saxerator do
|
|
47
47
|
|
48
48
|
context "with config.output_type = :hash" do
|
49
49
|
let(:output_type) { :hash }
|
50
|
-
specify { parser.all.
|
50
|
+
specify { expect(parser.all).to eq('bar' => 'baz') }
|
51
|
+
end
|
52
|
+
|
53
|
+
context "with config.output_type = :xml" do
|
54
|
+
let(:output_type) { :xml }
|
55
|
+
specify { expect(parser.all).to be_a Nokogiri::XML::Document }
|
56
|
+
specify { expect(parser.all.to_s).to include '<bar foo="bar">' }
|
51
57
|
end
|
52
58
|
|
53
59
|
context "with an invalid config.output_type" do
|
@@ -58,11 +64,20 @@ describe Saxerator do
|
|
58
64
|
|
59
65
|
context "symbolize keys" do
|
60
66
|
subject(:parser) do
|
61
|
-
Saxerator.parser(xml)
|
67
|
+
Saxerator.parser(xml) do |config|
|
68
|
+
config.symbolize_keys!
|
69
|
+
config.output_type = :hash
|
70
|
+
end
|
62
71
|
end
|
63
72
|
|
64
|
-
specify { parser.all.
|
65
|
-
specify { parser.all.name.
|
73
|
+
specify { expect(parser.all).to eq(:bar => 'baz') }
|
74
|
+
specify { expect(parser.all.name).to eq(:foo) }
|
75
|
+
|
76
|
+
it 'will symbolize attributes' do
|
77
|
+
parser.for_tag('bar').each do |tag|
|
78
|
+
expect(tag.attributes).to include(:foo => 'bar')
|
79
|
+
end
|
80
|
+
end
|
66
81
|
end
|
67
82
|
|
68
83
|
context "with ignore namespaces" do
|
@@ -75,8 +90,8 @@ describe Saxerator do
|
|
75
90
|
}
|
76
91
|
|
77
92
|
subject(:parser) do
|
78
|
-
Saxerator.parser(xml) { |config|
|
79
|
-
config.ignore_namespaces!
|
93
|
+
Saxerator.parser(xml) { |config|
|
94
|
+
config.ignore_namespaces!
|
80
95
|
}
|
81
96
|
end
|
82
97
|
|
@@ -85,7 +100,7 @@ describe Saxerator do
|
|
85
100
|
parser.for_tag("bar").each do |tag|
|
86
101
|
bar_count += 1
|
87
102
|
end
|
88
|
-
bar_count.
|
103
|
+
expect(bar_count).to eq(2)
|
89
104
|
}
|
90
105
|
end
|
91
106
|
|
@@ -95,8 +110,8 @@ describe Saxerator do
|
|
95
110
|
Saxerator.parser(xml) { |config| config.strip_namespaces! }
|
96
111
|
end
|
97
112
|
|
98
|
-
specify { parser.all.
|
99
|
-
specify { parser.all.name.
|
113
|
+
specify { expect(parser.all).to eq({'bar' => 'baz'}) }
|
114
|
+
specify { expect(parser.all.name).to eq('foo') }
|
100
115
|
|
101
116
|
context "combined with symbolize keys" do
|
102
117
|
subject(:parser) do
|
@@ -106,7 +121,7 @@ describe Saxerator do
|
|
106
121
|
end
|
107
122
|
end
|
108
123
|
|
109
|
-
specify { parser.all.
|
124
|
+
specify { expect(parser.all).to eq({:bar => 'baz'}) }
|
110
125
|
end
|
111
126
|
|
112
127
|
context "for specific namespaces" do
|
@@ -122,8 +137,8 @@ describe Saxerator do
|
|
122
137
|
Saxerator.parser(xml) { |config| config.strip_namespaces! :ns1, :ns3 }
|
123
138
|
end
|
124
139
|
|
125
|
-
specify { parser.all.
|
126
|
-
specify { parser.all.name.
|
140
|
+
specify { expect(parser.all).to eq({'ns2:bar' => 'baz', 'bar' => 'biz'}) }
|
141
|
+
specify { expect(parser.all.name).to eq('foo') }
|
127
142
|
end
|
128
143
|
end
|
129
144
|
|
@@ -139,24 +154,33 @@ describe Saxerator do
|
|
139
154
|
end
|
140
155
|
|
141
156
|
it "should be able to parse it" do
|
142
|
-
parser.all.
|
157
|
+
expect(parser.all).to eq({ 'bar' => 'baz', 'foo' => 'bar' })
|
143
158
|
end
|
144
159
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
160
|
+
context 'with configured output_type :xml' do
|
161
|
+
subject(:parser) do
|
162
|
+
Saxerator.parser(xml) do |config|
|
163
|
+
config.put_attributes_in_hash!
|
164
|
+
config.output_type = :xml
|
165
|
+
end
|
166
|
+
end
|
149
167
|
|
150
|
-
|
151
|
-
|
152
|
-
config.put_attributes_in_hash!
|
153
|
-
config.output_type = :xml
|
168
|
+
context "should raise error with " do
|
169
|
+
specify { expect { parser }.to raise_error(ArgumentError) }
|
154
170
|
end
|
155
171
|
end
|
156
172
|
|
157
|
-
context
|
158
|
-
|
173
|
+
context 'with symbolize_keys!' do
|
174
|
+
subject(:parser) do
|
175
|
+
Saxerator.parser(xml) do |config|
|
176
|
+
config.put_attributes_in_hash!
|
177
|
+
config.symbolize_keys!
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'will symbolize attribute hash keys' do
|
182
|
+
expect(parser.all).to include(:bar => 'baz', :foo => 'bar')
|
183
|
+
end
|
159
184
|
end
|
160
185
|
end
|
161
|
-
|
162
186
|
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saxerator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bradley Schaefer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '3.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '3.1'
|
41
41
|
description: |2
|
42
42
|
Saxerator is a streaming xml-to-hash parser designed for working with very large xml files by
|
43
43
|
giving you Enumerable access to manageable chunks of the document.
|
@@ -47,8 +47,8 @@ executables: []
|
|
47
47
|
extensions: []
|
48
48
|
extra_rdoc_files: []
|
49
49
|
files:
|
50
|
-
- .gitignore
|
51
|
-
- .travis.yml
|
50
|
+
- ".gitignore"
|
51
|
+
- ".travis.yml"
|
52
52
|
- Gemfile
|
53
53
|
- LICENSE
|
54
54
|
- README.md
|
@@ -102,12 +102,12 @@ require_paths:
|
|
102
102
|
- lib
|
103
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- -
|
105
|
+
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- -
|
110
|
+
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
requirements: []
|