feedzirra 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/feedzirra/feed.rb +4 -4
- data/lib/feedzirra/feed_entry_utilities.rb +1 -1
- data/lib/feedzirra/feed_utilities.rb +3 -14
- data/lib/feedzirra/parser/atom.rb +1 -1
- data/lib/feedzirra/parser/google_docs_atom.rb +28 -0
- data/lib/feedzirra/parser/google_docs_atom_entry.rb +29 -0
- data/lib/feedzirra/parser.rb +3 -0
- data/lib/feedzirra/version.rb +1 -1
- data/spec/feedzirra/feed_spec.rb +5 -1
- data/spec/feedzirra/parser/google_docs_atom_entry_spec.rb +22 -0
- data/spec/feedzirra/parser/google_docs_atom_spec.rb +31 -0
- data/spec/spec_helper.rb +5 -1
- metadata +95 -144
data/lib/feedzirra/feed.rb
CHANGED
@@ -46,7 +46,7 @@ module Feedzirra
|
|
46
46
|
# === Returns
|
47
47
|
# A array of class names.
|
48
48
|
def self.feed_classes
|
49
|
-
@feed_classes ||= [Feedzirra::Parser::RSSFeedBurner, Feedzirra::Parser::RSS, Feedzirra::Parser::AtomFeedBurner, Feedzirra::Parser::Atom]
|
49
|
+
@feed_classes ||= [Feedzirra::Parser::RSSFeedBurner, Feedzirra::Parser::RSS, Feedzirra::Parser::GoogleDocsAtom, Feedzirra::Parser::AtomFeedBurner, Feedzirra::Parser::Atom, Feedzirra::Parser::ITunesRSS]
|
50
50
|
end
|
51
51
|
|
52
52
|
# Makes all registered feeds types look for the passed in element to parse.
|
@@ -279,7 +279,7 @@ module Feedzirra
|
|
279
279
|
|
280
280
|
if klass
|
281
281
|
begin
|
282
|
-
feed = klass.parse(xml, Proc.new{|message|
|
282
|
+
feed = klass.parse(xml, Proc.new{|message| warn "Error while parsing [#{url}] #{message}" })
|
283
283
|
feed.feed_url = c.last_effective_url
|
284
284
|
feed.etag = etag_from_header(c.header_str)
|
285
285
|
feed.last_modified = last_modified_from_header(c.header_str)
|
@@ -332,7 +332,7 @@ module Feedzirra
|
|
332
332
|
curl.on_success do |c|
|
333
333
|
begin
|
334
334
|
add_feed_to_multi(multi, feed_queue.shift, feed_queue, responses, options) unless feed_queue.empty?
|
335
|
-
updated_feed = Feed.parse(c.body_str){ |message|
|
335
|
+
updated_feed = Feed.parse(c.body_str){ |message| warn "Error while parsing [#{feed.feed_url}] #{message}" }
|
336
336
|
updated_feed.feed_url = c.last_effective_url
|
337
337
|
updated_feed.etag = etag_from_header(c.header_str)
|
338
338
|
updated_feed.last_modified = last_modified_from_header(c.header_str)
|
@@ -381,4 +381,4 @@ module Feedzirra
|
|
381
381
|
Time.parse($1) if $1
|
382
382
|
end
|
383
383
|
end
|
384
|
-
end
|
384
|
+
end
|
@@ -50,23 +50,12 @@ module Feedzirra
|
|
50
50
|
private
|
51
51
|
|
52
52
|
def find_new_entries_for(feed)
|
53
|
-
# this
|
54
|
-
|
55
|
-
# however, they're always ordered with the newest one first.
|
56
|
-
# So we go through the entries just parsed and insert each one as a new entry
|
57
|
-
# until we get to one that has the same url as the the newest for the feed
|
58
|
-
return feed.entries if self.entries.length == 0
|
59
|
-
latest_entry = self.entries.first
|
60
|
-
found_new_entries = []
|
61
|
-
feed.entries.each do |entry|
|
62
|
-
break if entry.url == latest_entry.url
|
63
|
-
found_new_entries << entry
|
64
|
-
end
|
65
|
-
found_new_entries
|
53
|
+
# this algorithm does not optimize based on publication date, but always finds new entries
|
54
|
+
feed.entries.reject {|entry| self.entries.any? {|e| e.url == entry.url} }
|
66
55
|
end
|
67
56
|
|
68
57
|
def existing_entry?(test_entry)
|
69
58
|
entries.any? { |entry| entry.url == test_entry.url }
|
70
59
|
end
|
71
60
|
end
|
72
|
-
end
|
61
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path('./atom', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
module Feedzirra
|
4
|
+
module Parser
|
5
|
+
class GoogleDocsAtom
|
6
|
+
include SAXMachine
|
7
|
+
include FeedUtilities
|
8
|
+
element :title
|
9
|
+
element :subtitle, :as => :description
|
10
|
+
element :link, :as => :url, :value => :href, :with => {:type => "text/html"}
|
11
|
+
element :link, :as => :feed_url, :value => :href, :with => {:type => "application/atom+xml"}
|
12
|
+
elements :link, :as => :links, :value => :href
|
13
|
+
elements :entry, :as => :entries, :class => GoogleDocsAtomEntry
|
14
|
+
|
15
|
+
def url
|
16
|
+
@url ||= links.first
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.able_to_parse?(xml) #:nodoc:
|
20
|
+
%r{<id>https?://docs.google.com/.*\</id\>} =~ xml
|
21
|
+
end
|
22
|
+
|
23
|
+
def feed_url
|
24
|
+
@feed_url ||= links.first
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Feedzirra
|
2
|
+
module Parser
|
3
|
+
class GoogleDocsAtomEntry
|
4
|
+
include SAXMachine
|
5
|
+
include FeedEntryUtilities
|
6
|
+
|
7
|
+
element :title
|
8
|
+
element :link, :as => :url, :value => :href, :with => {:type => "text/html", :rel => "alternate"}
|
9
|
+
element :name, :as => :author
|
10
|
+
element :content
|
11
|
+
element :summary
|
12
|
+
element :published
|
13
|
+
element :id, :as => :entry_id
|
14
|
+
element :created, :as => :published
|
15
|
+
element :issued, :as => :published
|
16
|
+
element :updated
|
17
|
+
element :modified, :as => :updated
|
18
|
+
elements :category, :as => :categories, :value => :term
|
19
|
+
elements :link, :as => :links, :value => :href
|
20
|
+
element :"docs:md5Checksum", :as => :checksum
|
21
|
+
element :"docs:filename", :as => :original_filename
|
22
|
+
element :"docs:suggestedFilename", :as => :suggested_filename
|
23
|
+
|
24
|
+
def url
|
25
|
+
@url ||= links.first
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/feedzirra/parser.rb
CHANGED
@@ -9,6 +9,9 @@ module Feedzirra
|
|
9
9
|
autoload :ITunesRSSItem, 'feedzirra/parser/itunes_rss_item'
|
10
10
|
autoload :ITunesRSSOwner, 'feedzirra/parser/itunes_rss_owner'
|
11
11
|
|
12
|
+
autoload :GoogleDocsAtom, 'feedzirra/parser/google_docs_atom'
|
13
|
+
autoload :GoogleDocsAtomEntry, 'feedzirra/parser/google_docs_atom_entry'
|
14
|
+
|
12
15
|
autoload :Atom, 'feedzirra/parser/atom'
|
13
16
|
autoload :AtomEntry, 'feedzirra/parser/atom_entry'
|
14
17
|
autoload :AtomFeedBurner, 'feedzirra/parser/atom_feed_burner'
|
data/lib/feedzirra/version.rb
CHANGED
data/spec/feedzirra/feed_spec.rb
CHANGED
@@ -97,6 +97,10 @@ describe Feedzirra::Feed do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
describe "#determine_feed_parser_for_xml" do
|
100
|
+
it 'should return the Feedzirra::Parser::GoogleDocsAtom calss for a Google Docs atom feed' do
|
101
|
+
Feedzirra::Feed.determine_feed_parser_for_xml(sample_google_docs_list_feed).should == Feedzirra::Parser::GoogleDocsAtom
|
102
|
+
end
|
103
|
+
|
100
104
|
it "should return the Feedzirra::Parser::Atom class for an atom feed" do
|
101
105
|
Feedzirra::Feed.determine_feed_parser_for_xml(sample_atom_feed).should == Feedzirra::Parser::Atom
|
102
106
|
end
|
@@ -590,4 +594,4 @@ describe Feedzirra::Feed do
|
|
590
594
|
it "should return an return an array of feed objects if multiple feeds are passed in"
|
591
595
|
end
|
592
596
|
end
|
593
|
-
end
|
597
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
describe Feedzirra::Parser::GoogleDocsAtomEntry do
|
4
|
+
describe 'parsing' do
|
5
|
+
before do
|
6
|
+
@feed = Feedzirra::Parser::GoogleDocsAtom.parse(sample_google_docs_list_feed)
|
7
|
+
@entry = @feed.entries.first
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should have the custom checksum element' do
|
11
|
+
@entry.checksum.should eql '2b01142f7481c7b056c4b410d28f33cf'
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should have the custom filename element' do
|
15
|
+
@entry.original_filename.should eql "MyFile.pdf"
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should have the custom suggested filename element' do
|
19
|
+
@entry.suggested_filename.should eql "TaxDocument.pdf"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
describe Feedzirra::Parser::GoogleDocsAtom do
|
4
|
+
describe '.able_to_parser?' do
|
5
|
+
it 'should return true for Google Docs feed' do
|
6
|
+
Feedzirra::Parser::GoogleDocsAtom.should be_able_to_parse(sample_google_docs_list_feed)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should not be able to parse another Atom feed' do
|
10
|
+
Feedzirra::Parser::GoogleDocsAtom.should_not be_able_to_parse(sample_atom_feed)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'parsing' do
|
15
|
+
before do
|
16
|
+
@feed = Feedzirra::Parser::GoogleDocsAtom.parse(sample_google_docs_list_feed)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should return a bunch of objects' do
|
20
|
+
@feed.entries.should_not be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should populate a title, interhited from the Atom entry' do
|
24
|
+
@feed.title.should_not be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should return a bunch of entries of type GoogleDocsAtomEntry' do
|
28
|
+
@feed.entries.first.should be_a Feedzirra::Parser::GoogleDocsAtomEntry
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -64,6 +64,10 @@ end
|
|
64
64
|
def sample_wfw_feed
|
65
65
|
load_sample("PaulDixExplainsNothingWFW.xml")
|
66
66
|
end
|
67
|
+
|
68
|
+
def sample_google_docs_list_feed
|
69
|
+
load_sample("GoogleDocsList.xml")
|
70
|
+
end
|
67
71
|
|
68
72
|
# http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l156
|
69
73
|
# Default Time.to_s changed in 1.9, monkeypatching it back
|
@@ -71,4 +75,4 @@ class Time
|
|
71
75
|
def to_s
|
72
76
|
strftime("%a %b %d %H:%M:%S %Z %Y")
|
73
77
|
end
|
74
|
-
end
|
78
|
+
end
|
metadata
CHANGED
@@ -1,181 +1,134 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedzirra
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
version: 0.1.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Paul Dix
|
13
9
|
- Julien Kirch
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2011-09-30 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: nokogiri
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &70245154994900 !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 4
|
32
|
-
- 4
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
33
22
|
version: 1.4.4
|
34
23
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: sax-machine
|
38
24
|
prerelease: false
|
39
|
-
|
25
|
+
version_requirements: *70245154994900
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: sax-machine
|
28
|
+
requirement: &70245154994260 !ruby/object:Gem::Requirement
|
40
29
|
none: false
|
41
|
-
requirements:
|
30
|
+
requirements:
|
42
31
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
- 1
|
47
|
-
- 0
|
32
|
+
- !ruby/object:Gem::Version
|
48
33
|
version: 0.1.0
|
49
34
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: curb
|
53
35
|
prerelease: false
|
54
|
-
|
36
|
+
version_requirements: *70245154994260
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: curb
|
39
|
+
requirement: &70245154993700 !ruby/object:Gem::Requirement
|
55
40
|
none: false
|
56
|
-
requirements:
|
41
|
+
requirements:
|
57
42
|
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
segments:
|
60
|
-
- 0
|
61
|
-
- 7
|
62
|
-
- 15
|
43
|
+
- !ruby/object:Gem::Version
|
63
44
|
version: 0.7.15
|
64
45
|
type: :runtime
|
65
|
-
version_requirements: *id003
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
name: builder
|
68
46
|
prerelease: false
|
69
|
-
|
47
|
+
version_requirements: *70245154993700
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: builder
|
50
|
+
requirement: &70245154993160 !ruby/object:Gem::Requirement
|
70
51
|
none: false
|
71
|
-
requirements:
|
72
|
-
- -
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
segments:
|
75
|
-
- 2
|
76
|
-
- 1
|
77
|
-
- 2
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
78
55
|
version: 2.1.2
|
79
56
|
type: :runtime
|
80
|
-
version_requirements: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: activesupport
|
83
57
|
prerelease: false
|
84
|
-
|
58
|
+
version_requirements: *70245154993160
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: activesupport
|
61
|
+
requirement: &70245154845640 !ruby/object:Gem::Requirement
|
85
62
|
none: false
|
86
|
-
requirements:
|
63
|
+
requirements:
|
87
64
|
- - ~>
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
- 3
|
91
|
-
- 0
|
92
|
-
- 8
|
93
|
-
version: 3.0.8
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 3.1.1
|
94
67
|
type: :runtime
|
95
|
-
version_requirements: *id005
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
|
-
name: loofah
|
98
68
|
prerelease: false
|
99
|
-
|
69
|
+
version_requirements: *70245154845640
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: loofah
|
72
|
+
requirement: &70245154844980 !ruby/object:Gem::Requirement
|
100
73
|
none: false
|
101
|
-
requirements:
|
74
|
+
requirements:
|
102
75
|
- - ~>
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
segments:
|
105
|
-
- 1
|
106
|
-
- 2
|
107
|
-
- 0
|
76
|
+
- !ruby/object:Gem::Version
|
108
77
|
version: 1.2.0
|
109
78
|
type: :runtime
|
110
|
-
version_requirements: *id006
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rdoc
|
113
79
|
prerelease: false
|
114
|
-
|
80
|
+
version_requirements: *70245154844980
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rdoc
|
83
|
+
requirement: &70245154844420 !ruby/object:Gem::Requirement
|
115
84
|
none: false
|
116
|
-
requirements:
|
85
|
+
requirements:
|
117
86
|
- - ~>
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
|
120
|
-
- 3
|
121
|
-
- 8
|
122
|
-
version: "3.8"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.8'
|
123
89
|
type: :runtime
|
124
|
-
version_requirements: *id007
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rake
|
127
90
|
prerelease: false
|
128
|
-
|
91
|
+
version_requirements: *70245154844420
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rake
|
94
|
+
requirement: &70245154843940 !ruby/object:Gem::Requirement
|
129
95
|
none: false
|
130
|
-
requirements:
|
131
|
-
- -
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
segments:
|
134
|
-
- 0
|
135
|
-
- 8
|
136
|
-
- 7
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
137
99
|
version: 0.8.7
|
138
100
|
type: :runtime
|
139
|
-
version_requirements: *id008
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: i18n
|
142
101
|
prerelease: false
|
143
|
-
|
102
|
+
version_requirements: *70245154843940
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: i18n
|
105
|
+
requirement: &70245154843440 !ruby/object:Gem::Requirement
|
144
106
|
none: false
|
145
|
-
requirements:
|
146
|
-
- -
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
segments:
|
149
|
-
- 0
|
150
|
-
- 5
|
151
|
-
- 0
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
152
110
|
version: 0.5.0
|
153
111
|
type: :runtime
|
154
|
-
version_requirements: *id009
|
155
|
-
- !ruby/object:Gem::Dependency
|
156
|
-
name: rspec
|
157
112
|
prerelease: false
|
158
|
-
|
113
|
+
version_requirements: *70245154843440
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: rspec
|
116
|
+
requirement: &70245154842920 !ruby/object:Gem::Requirement
|
159
117
|
none: false
|
160
|
-
requirements:
|
118
|
+
requirements:
|
161
119
|
- - ~>
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
segments:
|
164
|
-
- 2
|
165
|
-
- 6
|
166
|
-
- 0
|
120
|
+
- !ruby/object:Gem::Version
|
167
121
|
version: 2.6.0
|
168
122
|
type: :development
|
169
|
-
|
170
|
-
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: *70245154842920
|
125
|
+
description: ! 'A feed fetching and parsing library that treats the internet like
|
126
|
+
Godzilla treats Japan: it dominates and eats all.'
|
171
127
|
email: feedzirra@googlegroups.com
|
172
128
|
executables: []
|
173
|
-
|
174
129
|
extensions: []
|
175
|
-
|
176
130
|
extra_rdoc_files: []
|
177
|
-
|
178
|
-
files:
|
131
|
+
files:
|
179
132
|
- lib/feedzirra/core_ext/date.rb
|
180
133
|
- lib/feedzirra/core_ext/string.rb
|
181
134
|
- lib/feedzirra/core_ext.rb
|
@@ -186,6 +139,8 @@ files:
|
|
186
139
|
- lib/feedzirra/parser/atom_entry.rb
|
187
140
|
- lib/feedzirra/parser/atom_feed_burner.rb
|
188
141
|
- lib/feedzirra/parser/atom_feed_burner_entry.rb
|
142
|
+
- lib/feedzirra/parser/google_docs_atom.rb
|
143
|
+
- lib/feedzirra/parser/google_docs_atom_entry.rb
|
189
144
|
- lib/feedzirra/parser/itunes_rss.rb
|
190
145
|
- lib/feedzirra/parser/itunes_rss_item.rb
|
191
146
|
- lib/feedzirra/parser/itunes_rss_owner.rb
|
@@ -208,6 +163,8 @@ files:
|
|
208
163
|
- spec/feedzirra/parser/atom_feed_burner_entry_spec.rb
|
209
164
|
- spec/feedzirra/parser/atom_feed_burner_spec.rb
|
210
165
|
- spec/feedzirra/parser/atom_spec.rb
|
166
|
+
- spec/feedzirra/parser/google_docs_atom_entry_spec.rb
|
167
|
+
- spec/feedzirra/parser/google_docs_atom_spec.rb
|
211
168
|
- spec/feedzirra/parser/itunes_rss_item_spec.rb
|
212
169
|
- spec/feedzirra/parser/itunes_rss_owner_spec.rb
|
213
170
|
- spec/feedzirra/parser/itunes_rss_spec.rb
|
@@ -220,39 +177,31 @@ files:
|
|
220
177
|
- README.rdoc
|
221
178
|
- Rakefile
|
222
179
|
- .rspec
|
223
|
-
has_rdoc: true
|
224
180
|
homepage: http://github.com/pauldix/feedzirra
|
225
181
|
licenses: []
|
226
|
-
|
227
182
|
post_install_message:
|
228
183
|
rdoc_options: []
|
229
|
-
|
230
|
-
require_paths:
|
184
|
+
require_paths:
|
231
185
|
- lib
|
232
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
186
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
233
187
|
none: false
|
234
|
-
requirements:
|
235
|
-
- -
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
|
238
|
-
|
239
|
-
version: "0"
|
240
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ! '>='
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
241
193
|
none: false
|
242
|
-
requirements:
|
243
|
-
- -
|
244
|
-
- !ruby/object:Gem::Version
|
245
|
-
|
246
|
-
- 0
|
247
|
-
version: "0"
|
194
|
+
requirements:
|
195
|
+
- - ! '>='
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
248
198
|
requirements: []
|
249
|
-
|
250
199
|
rubyforge_project:
|
251
|
-
rubygems_version: 1.
|
200
|
+
rubygems_version: 1.8.17
|
252
201
|
signing_key:
|
253
202
|
specification_version: 3
|
254
203
|
summary: A feed fetching and parsing library
|
255
|
-
test_files:
|
204
|
+
test_files:
|
256
205
|
- spec/benchmarks/feed_benchmarks.rb
|
257
206
|
- spec/benchmarks/feedzirra_benchmarks.rb
|
258
207
|
- spec/benchmarks/fetching_benchmarks.rb
|
@@ -265,6 +214,8 @@ test_files:
|
|
265
214
|
- spec/feedzirra/parser/atom_feed_burner_entry_spec.rb
|
266
215
|
- spec/feedzirra/parser/atom_feed_burner_spec.rb
|
267
216
|
- spec/feedzirra/parser/atom_spec.rb
|
217
|
+
- spec/feedzirra/parser/google_docs_atom_entry_spec.rb
|
218
|
+
- spec/feedzirra/parser/google_docs_atom_spec.rb
|
268
219
|
- spec/feedzirra/parser/itunes_rss_item_spec.rb
|
269
220
|
- spec/feedzirra/parser/itunes_rss_owner_spec.rb
|
270
221
|
- spec/feedzirra/parser/itunes_rss_spec.rb
|