saxophone 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/build.yml +25 -0
- data/.ruby-version +1 -1
- data/Gemfile +4 -4
- data/README.md +47 -12
- data/lib/saxophone/handlers/sax_abstract_handler.rb +2 -6
- data/lib/saxophone/sax_document.rb +2 -2
- data/lib/saxophone/version.rb +1 -1
- data/lib/saxophone.rb +16 -0
- data/logo.svg +8 -0
- data/spec/saxophone/global_config_spec.rb +88 -0
- data/spec/saxophone/sax_document_spec.rb +3 -4
- data/spec/spec_helper.rb +0 -20
- metadata +12 -10
- data/.travis.yml +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 99eb0392977bf92c77b61dd1d79feddde93e8d91b5eea7a76fb03892354ee3b6
|
4
|
+
data.tar.gz: 0c2c3c808f9b5c70258238835ee9240b4745876a5948c9fce7879372d4a4077a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c40ff56245b84fc4592a949726455feb15c25fe914e93234203976409e8a6b9d47dc6d7b636f29644992e553bb4f88847594890abee24ce88bdeb7de9bf0ca7a
|
7
|
+
data.tar.gz: f2d65e68ba0dbf5bb91f97a644d1a4a4a74860186f365dc5f1aa3deb443d8260ec42c7a1fb2f5207f3f24d0ac12a53877f9e76f44d177ca3c3b6f3cfbece8bf4
|
@@ -0,0 +1,25 @@
|
|
1
|
+
name: build
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- master
|
6
|
+
pull_request:
|
7
|
+
branches:
|
8
|
+
- master
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
strategy:
|
14
|
+
matrix:
|
15
|
+
ruby: ['2.5', '2.6', '2.7', '3.0']
|
16
|
+
handler: ['nokogiri', 'ox', 'oga']
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v2
|
19
|
+
- uses: ruby/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: ${{ matrix.ruby }}
|
22
|
+
bundler-cache: true
|
23
|
+
- run: bundle exec rake
|
24
|
+
env:
|
25
|
+
HANDLER: ${{ matrix.handler }}
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.1
|
data/Gemfile
CHANGED
@@ -8,12 +8,12 @@ group :development, :test do
|
|
8
8
|
gem 'simplecov', require: false, platforms: [:mri]
|
9
9
|
gem 'coveralls', require: false, platforms: [:mri]
|
10
10
|
|
11
|
-
gem 'activerecord', '~>
|
11
|
+
gem 'activerecord', '~> 6.0'
|
12
12
|
gem 'nokogiri', '>= 1.8.2'
|
13
|
-
gem 'ox', '>= 2.
|
14
|
-
gem 'oga', '>=
|
13
|
+
gem 'ox', '>= 2.10.0'
|
14
|
+
gem 'oga', '>= 2.15'
|
15
15
|
end
|
16
16
|
|
17
17
|
group :test do
|
18
|
-
gem 'sqlite3'
|
18
|
+
gem 'sqlite3', '~> 1.4.2'
|
19
19
|
end
|
data/README.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
<div align="center">
|
2
|
+
<img alt="Saxophone" src="logo.svg" width="400px">
|
3
|
+
<br>
|
4
|
+
<br>
|
5
|
+
<strong>A declarative SAX parsing library backed by Nokogiri, Ox or Oga.</strong>
|
6
|
+
<br>
|
7
|
+
<br>
|
8
|
+
<a href="https://github.com/Absolventa/saxophone/actions/workflows/build.yml">
|
9
|
+
<img src="https://github.com/Absolventa/saxophone/actions/workflows/build.yml/badge.svg" alt="Build Status" style="max-width: 100%;">
|
10
|
+
</a>
|
11
|
+
</div>
|
4
12
|
|
5
13
|
## Origins
|
6
14
|
|
@@ -37,13 +45,13 @@ gem 'nokogiri', '~> 1.6'
|
|
37
45
|
To use **Ox** add this line to your Gemfile:
|
38
46
|
|
39
47
|
```ruby
|
40
|
-
gem 'ox', '>= 2.
|
48
|
+
gem 'ox', '>= 2.10.0'
|
41
49
|
```
|
42
50
|
|
43
51
|
To use **Oga** add this line to your Gemfile:
|
44
52
|
|
45
53
|
```ruby
|
46
|
-
gem 'oga', '>=
|
54
|
+
gem 'oga', '>= 2.15'
|
47
55
|
```
|
48
56
|
|
49
57
|
You can also specify which handler to use manually, like this:
|
@@ -66,34 +74,42 @@ end
|
|
66
74
|
class AtomEntry
|
67
75
|
include Saxophone
|
68
76
|
element :title
|
77
|
+
|
69
78
|
# The :as argument makes this available through entry.author instead of .name
|
70
79
|
element :name, as: :author
|
71
80
|
element "feedburner:origLink", as: :url
|
81
|
+
|
72
82
|
# The :default argument specifies default value for element when it's missing
|
73
83
|
element :summary, class: String, default: "No summary available"
|
84
|
+
|
74
85
|
element :content, class: AtomContent
|
75
86
|
element :published
|
87
|
+
|
76
88
|
ancestor :ancestor
|
77
89
|
end
|
78
90
|
|
79
91
|
class Atom
|
80
92
|
include Saxophone
|
93
|
+
|
81
94
|
# Use block to modify the returned value
|
82
95
|
# Blocks are working with pretty much everything,
|
83
96
|
# except for `elements` with `class` attribute
|
84
97
|
element :title do |title|
|
85
98
|
title.strip
|
86
99
|
end
|
100
|
+
|
87
101
|
# The :with argument means that you only match a link tag
|
88
102
|
# that has an attribute of type: "text/html"
|
89
103
|
element :link, value: :href, as: :url, with: {
|
90
104
|
type: "text/html"
|
91
105
|
}
|
106
|
+
|
92
107
|
# The :value argument means that instead of setting the value
|
93
108
|
# to the text between the tag, it sets it to the attribute value of :href
|
94
109
|
element :link, value: :href, as: :feed_url, with: {
|
95
110
|
type: "application/atom+xml"
|
96
111
|
}
|
112
|
+
|
97
113
|
elements :entry, as: :entries, class: AtomEntry
|
98
114
|
end
|
99
115
|
```
|
@@ -101,7 +117,7 @@ end
|
|
101
117
|
Then parse any XML with your class:
|
102
118
|
|
103
119
|
```ruby
|
104
|
-
feed = Atom.parse(
|
120
|
+
feed = Atom.parse(xml)
|
105
121
|
|
106
122
|
feed.title # Whatever the title of the blog is
|
107
123
|
feed.url # The main URL of the blog
|
@@ -151,11 +167,11 @@ Multiple elements can be mapped to the same alias:
|
|
151
167
|
```ruby
|
152
168
|
class RSSEntry
|
153
169
|
include Saxophone
|
154
|
-
|
155
|
-
element :pubDate,
|
156
|
-
element :pubdate,
|
157
|
-
element :"dc:date",
|
158
|
-
element :"dc:Date",
|
170
|
+
|
171
|
+
element :pubDate, as: :published
|
172
|
+
element :pubdate, as: :published
|
173
|
+
element :"dc:date", as: :published
|
174
|
+
element :"dc:Date", as: :published
|
159
175
|
element :"dcterms:created", as: :published
|
160
176
|
end
|
161
177
|
```
|
@@ -166,6 +182,25 @@ document determines the value assigned to the alias.
|
|
166
182
|
|
167
183
|
If an element is defined in the source but is blank (e.g., `<pubDate></pubDate>`), it is ignored, and non-empty one is picked.
|
168
184
|
|
185
|
+
## Parsing Errors
|
186
|
+
By default, there are no notification or exceptions on parsing errors and warnings. For Nokogiri and Ox, you can
|
187
|
+
specify a custom behavior by passing procs that receive a string:
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
on_error = ->(error_string) { raise error_string }
|
191
|
+
on_warning = ->(warning_string) { raise warning_string }
|
192
|
+
|
193
|
+
feed = Atom.parse(xml, on_error, on_warning)
|
194
|
+
```
|
195
|
+
|
196
|
+
You can also use a global setting (e.g. in `config/initializers/saxophone.rb` when using Saxophone together
|
197
|
+
with Ruby on Rails):
|
198
|
+
|
199
|
+
```ruby
|
200
|
+
Saxophone.on_error = ->(error_string) { raise error_string }
|
201
|
+
Saxophone.on_warning = ->(warning_string) { raise warning_string }
|
202
|
+
```
|
203
|
+
|
169
204
|
## Contributing
|
170
205
|
|
171
206
|
1. Fork it
|
@@ -178,7 +213,7 @@ If an element is defined in the source but is blank (e.g., `<pubDate></pubDate>`
|
|
178
213
|
|
179
214
|
The MIT License
|
180
215
|
|
181
|
-
Copyright (c) 2009-
|
216
|
+
Copyright (c) 2009-2020:
|
182
217
|
|
183
218
|
* [Paul Dix](http://www.pauldix.net)
|
184
219
|
* [Julien Kirch](http://www.archiloque.net)
|
@@ -125,15 +125,11 @@ module Saxophone
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def _error(string)
|
128
|
-
|
129
|
-
@on_error.call(string)
|
130
|
-
end
|
128
|
+
@on_error.call(string)
|
131
129
|
end
|
132
130
|
|
133
131
|
def _warning(string)
|
134
|
-
|
135
|
-
@on_warning.call(string)
|
136
|
-
end
|
132
|
+
@on_warning.call(string)
|
137
133
|
end
|
138
134
|
|
139
135
|
private
|
@@ -4,7 +4,7 @@ module Saxophone
|
|
4
4
|
base.extend(ClassMethods)
|
5
5
|
end
|
6
6
|
|
7
|
-
def parse(xml_input, on_error =
|
7
|
+
def parse(xml_input, on_error = Saxophone.on_error, on_warning = Saxophone.on_warning)
|
8
8
|
handler_klass = Saxophone.const_get("SAX#{Saxophone.handler.capitalize}Handler")
|
9
9
|
|
10
10
|
handler = handler_klass.new(self, on_error, on_warning)
|
@@ -15,7 +15,7 @@ module Saxophone
|
|
15
15
|
|
16
16
|
module InstanceMethods
|
17
17
|
def initialize(attributes = {})
|
18
|
-
attributes
|
18
|
+
attributes&.each do |name, value|
|
19
19
|
send("#{name}=", value)
|
20
20
|
end
|
21
21
|
|
data/lib/saxophone/version.rb
CHANGED
data/lib/saxophone.rb
CHANGED
@@ -14,6 +14,22 @@ module Saxophone
|
|
14
14
|
@@handler = handler
|
15
15
|
end
|
16
16
|
end
|
17
|
+
|
18
|
+
def self.on_error
|
19
|
+
@@on_error ||= ->(_) {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.on_error=(on_error_proc)
|
23
|
+
@@on_error = on_error_proc
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.on_warning
|
27
|
+
@@on_warning ||= ->(_) {}
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.on_warning=(on_warning_proc)
|
31
|
+
@@on_warning = on_warning_proc
|
32
|
+
end
|
17
33
|
end
|
18
34
|
|
19
35
|
# Try handlers
|
data/logo.svg
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<svg viewBox="0 0 764 245" width="764" height="245" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<g fill="none" fill-rule="evenodd">
|
4
|
+
<path d="M157.09 209.91c12.955 0 18.683-3.137 23.592-13.092C182.59 205.41 186.409 208 196.5 208v-6.955c-8.182.137-10.636-3.136-10.636-14.454V151c0-21.955-6.955-29.182-28.773-29.182-15.955 0-22.364 4.637-26.591 18.955l7.227 1.772c3.137-10.5 7.637-13.636 19.364-13.636 16.227 0 21.273 5.182 21.273 22.091v8.455H157.09c-21.682 0-28.636 6-28.636 25.772 0 18.682 6.954 24.682 28.636 24.682Zm0-6.955c-16.226 0-21.135-4.228-21.135-17.728 0-14.59 4.909-18.954 21.136-18.954h21.273v12.136c0 18.682-5.046 24.546-21.273 24.546ZM221.183 208l21.273-35.182L263.864 208h8.454l-25.5-42.136 25.5-42.137h-8.454l-21.41 35.182-21.272-35.182h-8.591l25.636 42.137L212.591 208h8.59Zm103.09 1.91c22.5 0 29.728-10.774 29.728-44.046 0-33.273-7.227-44.046-29.727-44.046s-29.591 10.773-29.591 44.046c0 33.272 7.09 44.045 29.59 44.045Zm0-6.955c-16.772 0-22.09-8.728-22.09-37.091 0-28.364 5.318-37.091 22.09-37.091 16.773 0 22.228 8.727 22.228 37.09 0 28.364-5.455 37.092-22.227 37.092Zm60.546 29.863v-34.5c3.682 8.727 11.727 11.591 22.227 11.591 22.5 0 29.728-10.773 29.728-44.182 0-33.272-7.228-43.909-29.728-43.909-10.227 0-18.272 2.046-22.227 8.455v-6.546h-7.5v109.091h7.5Zm22.227-29.863c-13.363 0-22.227-6-22.227-22.773v-39.818c0-8.864 10.227-11.591 22.227-11.591 16.773 0 22.228 8.727 22.228 36.954 0 28.364-5.455 37.228-22.228 37.228ZM468.41 208v-56.182c0-18.545 4.773-23.045 20.864-23.045 15.954 0 21.136 8.318 21.136 35.318V208h7.5v-43.91c0-32.045-6.954-42.272-28.636-42.272-10.228 0-17.864 2.455-20.864 10.227V98.91h-7.5V208h7.5Zm101.318 1.91c22.5 0 29.728-10.774 29.728-44.046 0-33.273-7.228-44.046-29.728-44.046s-29.59 10.773-29.59 44.046c0 33.272 7.09 44.045 29.59 44.045Zm0-6.955c-16.772 0-22.09-8.728-22.09-37.091 0-28.364 5.318-37.091 22.09-37.091 16.773 0 22.228 8.727 22.228 37.09 0 28.364-5.455 37.092-22.228 37.092Zm61.5 5.045v-56.182c0-18.818 5.591-23.045 24.137-23.045 13.772 0 18.136 5.863 18.136 24.545V208h7.5v-54.682c0-24-6.136-31.5-25.636-31.5-13.228 0-19.228 3-24.137 10.091v-8.182h-7.5V208h7.5Zm102.546 1.91c13.909 0 20.727-3.41 28.363-14.046l-6-4.091c-6.681 8.59-11.863 11.182-22.363 11.182-18.137 0-24.137-8.728-24.41-36.682h54.273c0-33.546-7.227-44.455-29.863-44.455-24.273 0-31.91 10.773-31.91 44.046 0 33.272 7.637 44.045 31.91 44.045Zm22.09-50.455H709.5c.682-23.319 6.955-30.682 24.273-30.682 15.545 0 20.863 7.363 22.09 30.682Z" fill="#000" fill-rule="nonzero"/>
|
5
|
+
<path d="M139.791 3.5c-7.052 1.164-11.908 2.19-14.566 3.077-7.587 2.53-12.196 5.953-15.414 8.235-4.983 3.534-8.586 8.8-11.227 13.486-3.3 5.853-5.02 11.347-5.137 17.714-.68 52.755-1.203 125.916-1.203 151.243 0 1.848-.113 3.67-.333 5.458-2.69 21.86-21.324 38.787-43.912 38.787-24.435 0-44.244-19.81-44.244-44.245v-61.562l41.965-21.24.585 75.634" stroke="#0A0909" stroke-width="7"/>
|
6
|
+
<path d="m76.021 96.23h34.416m-34.416 17.979h34.416m-34.416 18.109h34.416" stroke="#0A0909" stroke-width="5"/>
|
7
|
+
</g>
|
8
|
+
</svg>
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Saxophone global configurations" do
|
4
|
+
before(:all) do
|
5
|
+
class A
|
6
|
+
include Saxophone
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
Object.send(:remove_const, :A)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "handler config" do
|
15
|
+
after(:all) do
|
16
|
+
Saxophone.handler = :ox # restore default settings
|
17
|
+
end
|
18
|
+
|
19
|
+
context "with handler set to ox" do
|
20
|
+
before do
|
21
|
+
Saxophone.handler = :ox
|
22
|
+
end
|
23
|
+
|
24
|
+
it "uses ox as handler" do
|
25
|
+
expect(Saxophone.handler).to eq :ox
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "with handler set to oga" do
|
30
|
+
before do
|
31
|
+
Saxophone.handler = :oga
|
32
|
+
end
|
33
|
+
|
34
|
+
it "uses oga as handler" do
|
35
|
+
expect(Saxophone.handler).to eq :oga
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "with handler set to nokogiri" do
|
40
|
+
before do
|
41
|
+
Saxophone.handler = :nokogiri
|
42
|
+
end
|
43
|
+
|
44
|
+
it "uses nokogiri as handler" do
|
45
|
+
expect(Saxophone.handler).to eq :nokogiri
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "with handler set to some other value" do
|
50
|
+
it "raises error" do
|
51
|
+
expect { Saxophone.handler = :not_a_valid_handler }.to raise_error(LoadError)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "global on_error config" do
|
57
|
+
broken_xml = "<top><title>Te & st</title><b>Matched!</b><c>And Again</c></top>"
|
58
|
+
xml = "<top><title>Test</title><b>Matched!</b><c>And Again</c></top>"
|
59
|
+
|
60
|
+
context "not configured" do
|
61
|
+
it "does not raise exception on valid xml" do
|
62
|
+
expect { A.parse xml }.not_to raise_error
|
63
|
+
end
|
64
|
+
|
65
|
+
it "does not raise exception on broken xml" do
|
66
|
+
expect { A.parse broken_xml }.not_to raise_error
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "configured to raise exception" do
|
71
|
+
before(:all) do
|
72
|
+
Saxophone.on_error = ->(error_string) { raise error_string }
|
73
|
+
end
|
74
|
+
|
75
|
+
after(:all) do
|
76
|
+
Saxophone.on_error = ->(_) {} # restore default settings
|
77
|
+
end
|
78
|
+
|
79
|
+
it "does not raise exception on valid xml" do
|
80
|
+
expect { A.parse xml }.not_to raise_error
|
81
|
+
end
|
82
|
+
|
83
|
+
it "raises exception on broken xml" do
|
84
|
+
expect { A.parse broken_xml }.to raise_error(RuntimeError)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -1172,8 +1172,9 @@ describe "Saxophone" do
|
|
1172
1172
|
describe "with error handling" do
|
1173
1173
|
before do
|
1174
1174
|
@xml = %[
|
1175
|
-
<item id="1">
|
1175
|
+
<item:a:b id="1">
|
1176
1176
|
<title>sweet</title>
|
1177
|
+
</idem>
|
1177
1178
|
]
|
1178
1179
|
|
1179
1180
|
class ItemElement5
|
@@ -1190,9 +1191,7 @@ describe "Saxophone" do
|
|
1190
1191
|
)
|
1191
1192
|
end
|
1192
1193
|
|
1193
|
-
it
|
1194
|
-
expect(@errors.uniq.size).to eq(1)
|
1195
|
-
end
|
1194
|
+
it { expect(@errors.uniq.size).to be >= 1 }
|
1196
1195
|
|
1197
1196
|
it "has no warning" do
|
1198
1197
|
expect(@warnings.uniq.size).to eq(0)
|
data/spec/spec_helper.rb
CHANGED
@@ -1,22 +1,2 @@
|
|
1
|
-
begin
|
2
|
-
require 'simplecov'
|
3
|
-
require 'coveralls'
|
4
|
-
|
5
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
6
|
-
SimpleCov::Formatter::HTMLFormatter,
|
7
|
-
Coveralls::SimpleCov::Formatter
|
8
|
-
]
|
9
|
-
|
10
|
-
SimpleCov.start do
|
11
|
-
add_filter '/spec/'
|
12
|
-
end
|
13
|
-
rescue LoadError
|
14
|
-
end
|
15
|
-
|
16
1
|
require File.expand_path(File.dirname(__FILE__) + '/../lib/saxophone')
|
17
2
|
Saxophone.handler = ENV['HANDLER'].to_sym if ENV['HANDLER']
|
18
|
-
|
19
|
-
RSpec.configure do |config|
|
20
|
-
config.run_all_when_everything_filtered = true
|
21
|
-
config.filter_run :focus
|
22
|
-
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saxophone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Dix
|
@@ -9,10 +9,10 @@ authors:
|
|
9
9
|
- Ezekiel Templin
|
10
10
|
- Dmitry Krasnoukhov
|
11
11
|
- Robin Neumann
|
12
|
-
autorequire:
|
12
|
+
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rspec
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
- - "~>"
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '3.6'
|
31
|
-
description:
|
32
|
-
email:
|
31
|
+
description:
|
32
|
+
email:
|
33
33
|
executables: []
|
34
34
|
extensions: []
|
35
35
|
extra_rdoc_files: []
|
36
36
|
files:
|
37
|
+
- ".github/workflows/build.yml"
|
37
38
|
- ".gitignore"
|
38
39
|
- ".rspec"
|
39
40
|
- ".ruby-version"
|
40
|
-
- ".travis.yml"
|
41
41
|
- Gemfile
|
42
42
|
- README.md
|
43
43
|
- Rakefile
|
@@ -56,9 +56,11 @@ files:
|
|
56
56
|
- lib/saxophone/sax_configure.rb
|
57
57
|
- lib/saxophone/sax_document.rb
|
58
58
|
- lib/saxophone/version.rb
|
59
|
+
- logo.svg
|
59
60
|
- saxophone.gemspec
|
60
61
|
- spec/fixtures/atom-content.html
|
61
62
|
- spec/fixtures/atom.xml
|
63
|
+
- spec/saxophone/global_config_spec.rb
|
62
64
|
- spec/saxophone/sax_activerecord_spec.rb
|
63
65
|
- spec/saxophone/sax_configure_spec.rb
|
64
66
|
- spec/saxophone/sax_document_spec.rb
|
@@ -68,7 +70,7 @@ homepage: http://github.com/Absolventa/saxophone
|
|
68
70
|
licenses:
|
69
71
|
- MIT
|
70
72
|
metadata: {}
|
71
|
-
post_install_message:
|
73
|
+
post_install_message:
|
72
74
|
rdoc_options: []
|
73
75
|
require_paths:
|
74
76
|
- lib
|
@@ -83,14 +85,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
85
|
- !ruby/object:Gem::Version
|
84
86
|
version: '0'
|
85
87
|
requirements: []
|
86
|
-
|
87
|
-
|
88
|
-
signing_key:
|
88
|
+
rubygems_version: 3.2.15
|
89
|
+
signing_key:
|
89
90
|
specification_version: 4
|
90
91
|
summary: Declarative SAX Parsing with Nokogiri, Ox or Oga
|
91
92
|
test_files:
|
92
93
|
- spec/fixtures/atom-content.html
|
93
94
|
- spec/fixtures/atom.xml
|
95
|
+
- spec/saxophone/global_config_spec.rb
|
94
96
|
- spec/saxophone/sax_activerecord_spec.rb
|
95
97
|
- spec/saxophone/sax_configure_spec.rb
|
96
98
|
- spec/saxophone/sax_document_spec.rb
|
data/.travis.yml
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
rvm:
|
4
|
-
- 1.9.3
|
5
|
-
- 2.0
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
8
|
-
- 2.3
|
9
|
-
- 2.4
|
10
|
-
- 2.5
|
11
|
-
- jruby-1.7
|
12
|
-
- rbx-2
|
13
|
-
- ruby-head
|
14
|
-
- jruby-head
|
15
|
-
|
16
|
-
sudo: false
|
17
|
-
|
18
|
-
env:
|
19
|
-
matrix:
|
20
|
-
- HANDLER="nokogiri"
|
21
|
-
- HANDLER="ox"
|
22
|
-
- HANDLER="oga"
|
23
|
-
|
24
|
-
matrix:
|
25
|
-
exclude:
|
26
|
-
- env: HANDLER="ox"
|
27
|
-
rvm: jruby-1.7
|
28
|
-
- env: HANDLER="ox"
|
29
|
-
rvm: jruby-head
|
30
|
-
allow_failures:
|
31
|
-
- env: HANDLER="oga"
|
32
|
-
rvm: jruby-1.7
|
33
|
-
- rvm: rbx-2
|
34
|
-
- rvm: ruby-head
|
35
|
-
- rvm: jruby-head
|