feedzirra 0.0.24 → 0.0.30

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.
Files changed (38) hide show
  1. data/.rspec +1 -0
  2. data/README.rdoc +207 -0
  3. data/Rakefile +19 -24
  4. data/lib/feedzirra.rb +7 -28
  5. data/lib/feedzirra/core_ext.rb +3 -0
  6. data/lib/{core_ext → feedzirra/core_ext}/date.rb +2 -4
  7. data/lib/{core_ext → feedzirra/core_ext}/string.rb +0 -0
  8. data/lib/feedzirra/feed.rb +99 -41
  9. data/lib/feedzirra/feed_entry_utilities.rb +12 -11
  10. data/lib/feedzirra/parser.rb +15 -0
  11. data/lib/feedzirra/parser/atom.rb +7 -13
  12. data/lib/feedzirra/parser/atom_entry.rb +4 -14
  13. data/lib/feedzirra/parser/atom_feed_burner.rb +4 -10
  14. data/lib/feedzirra/parser/atom_feed_burner_entry.rb +8 -13
  15. data/lib/feedzirra/parser/itunes_rss.rb +4 -4
  16. data/lib/feedzirra/parser/itunes_rss_item.rb +1 -1
  17. data/lib/feedzirra/parser/rss.rb +4 -10
  18. data/lib/feedzirra/parser/rss_entry.rb +2 -12
  19. data/lib/feedzirra/version.rb +3 -0
  20. data/spec/benchmarks/feed_benchmarks.rb +98 -0
  21. data/spec/benchmarks/feedzirra_benchmarks.rb +40 -0
  22. data/spec/benchmarks/fetching_benchmarks.rb +28 -0
  23. data/spec/benchmarks/parsing_benchmark.rb +30 -0
  24. data/spec/benchmarks/updating_benchmarks.rb +33 -0
  25. data/spec/feedzirra/feed_entry_utilities_spec.rb +1 -1
  26. data/spec/feedzirra/feed_spec.rb +38 -5
  27. data/spec/feedzirra/feed_utilities_spec.rb +7 -4
  28. data/spec/feedzirra/parser/atom_feed_burner_entry_spec.rb +5 -0
  29. data/spec/feedzirra/parser/atom_feed_burner_spec.rb +5 -1
  30. data/spec/feedzirra/parser/atom_spec.rb +5 -1
  31. data/spec/feedzirra/parser/itunes_rss_item_spec.rb +1 -1
  32. data/spec/feedzirra/parser/rss_entry_spec.rb +2 -1
  33. data/spec/feedzirra/parser/rss_spec.rb +5 -1
  34. data/spec/sample_feeds/run_against_sample.rb +20 -0
  35. data/spec/spec_helper.rb +10 -2
  36. metadata +141 -59
  37. data/README.textile +0 -208
  38. data/spec/spec.opts +0 -2
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require File.dirname(__FILE__) + '/../../lib/feedzirra.rb'
3
+
4
+ require 'open-uri'
5
+
6
+ require 'benchmark'
7
+ include Benchmark
8
+
9
+ iterations = 10
10
+ urls = File.readlines(File.dirname(__FILE__) + "/../sample_feeds/successful_feed_urls.txt").slice(0, 20)
11
+ puts "benchmarks on #{urls.size} feeds"
12
+ puts "************************************"
13
+ benchmark do |t|
14
+ t.report("feedzirra open uri") do
15
+ iterations.times do
16
+ urls.each do |url|
17
+ Feedzirra::Feed.parse(open(url, "User-Agent" => "feedzirra http://github.com/pauldix/feedzirra/tree/master").read)
18
+ $stdout.print '.'; $stdout.flush
19
+ end
20
+ end
21
+ end
22
+
23
+ t.report("feedzirra fetch and parse") do
24
+ iterations.times do
25
+ Feedzirra::Feed.fetch_and_parse(urls, :on_success => lambda { |url, feed| $stdout.print '.'; $stdout.flush })
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/../../lib/feedzirra.rb'
2
+ require 'rfeedparser'
3
+ require 'feed-normalizer'
4
+
5
+ require 'benchmark'
6
+ include Benchmark
7
+
8
+ iterations = 50
9
+ xml = File.read(File.dirname(__FILE__) + '/../sample_feeds/PaulDixExplainsNothing.xml')
10
+
11
+ benchmark do |t|
12
+ t.report("feedzirra") do
13
+ iterations.times do
14
+ Feedzirra::Feed.parse(xml)
15
+ end
16
+ end
17
+
18
+ t.report("rfeedparser") do
19
+ iterations.times do
20
+ FeedParser.parse(xml)
21
+ end
22
+ end
23
+
24
+ t.report("feed-normalizer") do
25
+ iterations.times do
26
+ # have to use the :force option to make feed-normalizer parse an atom feed
27
+ FeedNormalizer::FeedNormalizer.parse(xml, :force_parser => FeedNormalizer::SimpleRssParser)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ require 'rubygems'
2
+ require File.dirname(__FILE__) + '/../../lib/feedzirra.rb'
3
+
4
+ require 'benchmark'
5
+ include Benchmark
6
+
7
+ urls = File.readlines(File.dirname(__FILE__) + "/../sample_feeds/successful_feed_urls.txt")
8
+ puts "benchmarks on #{urls.size} feeds"
9
+ puts "************************************"
10
+ benchmark do |t|
11
+ feeds = {}
12
+ t.report("feedzirra fetch and parse") do
13
+ feeds = Feedzirra::Feed.fetch_and_parse(urls,
14
+ :on_success => lambda { |url, feed| $stdout.print '.'; $stdout.flush },
15
+ :on_failure => lambda {|url, response_code, header, body| puts "#{response_code} ERROR on #{url}"})
16
+ end
17
+
18
+ # curb caches the dns lookups for 60 seconds. to make things fair we have to wait for the cache to expire
19
+ puts "sleeping to wait for dns cache to clear"
20
+ 65.times {$stdout.print('.'); sleep(1)}
21
+ puts "done"
22
+
23
+ updated_feeds = []
24
+ t.report("feedzirra update") do
25
+ updated_feeds = Feedzirra::Feed.update(feeds.values.reject {|f| f.class == Fixnum},
26
+ :on_success => lambda {|feed| $stdout.print '.'; $stdout.flush},
27
+ :on_failure => lambda {|feed, response_code, header, body| puts "#{response_code} ERROR on #{feed.feed_url}"})
28
+ end
29
+
30
+ updated_feeds.each do |feed|
31
+ puts feed.feed_url if feed.updated?
32
+ end
33
+ end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Feedzirra::FeedUtilities do
4
4
  before(:each) do
@@ -1,20 +1,39 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
3
  describe Feedzirra::Feed do
4
+
5
+ describe "#add_common_feed_element" do
6
+ before(:all) do
7
+ Feedzirra::Feed.add_common_feed_element("generator")
8
+ end
9
+
10
+ it "should parse the added element out of Atom feeds" do
11
+ Feedzirra::Feed.parse(sample_wfw_feed).generator.should == "TypePad"
12
+ end
13
+
14
+ it "should parse the added element out of Atom Feedburner feeds" do
15
+ Feedzirra::Parser::Atom.new.should respond_to(:generator)
16
+ end
17
+
18
+ it "should parse the added element out of RSS feeds" do
19
+ Feedzirra::Parser::RSS.new.should respond_to(:generator)
20
+ end
21
+ end
22
+
4
23
  describe "#add_common_feed_entry_element" do
5
24
  before(:all) do
6
25
  Feedzirra::Feed.add_common_feed_entry_element("wfw:commentRss", :as => :comment_rss)
7
26
  end
8
27
 
9
- it "should parse the added element out of Atom feeds" do
28
+ it "should parse the added element out of Atom feeds entries" do
10
29
  Feedzirra::Feed.parse(sample_wfw_feed).entries.first.comment_rss.should == "this is the new val"
11
30
  end
12
31
 
13
- it "should parse the added element out of Atom Feedburner feeds" do
32
+ it "should parse the added element out of Atom Feedburner feeds entries" do
14
33
  Feedzirra::Parser::AtomEntry.new.should respond_to(:comment_rss)
15
34
  end
16
35
 
17
- it "should parse the added element out of RSS feeds" do
36
+ it "should parse the added element out of RSS feeds entries" do
18
37
  Feedzirra::Parser::RSSEntry.new.should respond_to(:comment_rss)
19
38
  end
20
39
  end
@@ -107,7 +126,7 @@ describe Feedzirra::Feed do
107
126
  describe "when adding feed types" do
108
127
  it "should prioritize added types over the built in ones" do
109
128
  feed_text = "Atom asdf"
110
- Feedzirra::Parser::Atom.should be_able_to_parse(feed_text)
129
+ Feedzirra::Parser::Atom.stub!(:able_to_parse?).and_return(true)
111
130
  new_feed_type = Class.new do
112
131
  def self.able_to_parse?(val)
113
132
  true
@@ -300,7 +319,7 @@ describe Feedzirra::Feed do
300
319
  end
301
320
 
302
321
  it 'should parse the xml' do
303
- Feedzirra::Parser::AtomFeedBurner.should_receive(:parse).with(@paul_feed[:xml]).and_return(@feed)
322
+ Feedzirra::Parser::AtomFeedBurner.should_receive(:parse).with(@paul_feed[:xml], an_instance_of(Proc)).and_return(@feed)
304
323
  Feedzirra::Feed.add_url_to_multi(@multi, @paul_feed[:url], [], {}, {})
305
324
  @easy_curl.on_success.call(@easy_curl)
306
325
  end
@@ -524,12 +543,26 @@ describe Feedzirra::Feed do
524
543
  Feedzirra::Feed.decode_content(@curl_easy)
525
544
  end
526
545
 
546
+ it 'should decode the response body using gzip if the Content-Encoding: is gzip even when the case is wrong' do
547
+ @curl_easy.stub!(:header_str).and_return('content-encoding: gzip')
548
+ string_io = mock('stringio', :read => @curl_easy.body_str, :close => true)
549
+ StringIO.should_receive(:new).and_return(string_io)
550
+ Zlib::GzipReader.should_receive(:new).with(string_io).and_return(string_io)
551
+ Feedzirra::Feed.decode_content(@curl_easy)
552
+ end
553
+
527
554
  it 'should deflate the response body using inflate if the Content-Encoding: is deflate' do
528
555
  @curl_easy.stub!(:header_str).and_return('Content-Encoding: deflate')
529
556
  Zlib::Inflate.should_receive(:inflate).with(@curl_easy.body_str)
530
557
  Feedzirra::Feed.decode_content(@curl_easy)
531
558
  end
532
559
 
560
+ it 'should deflate the response body using inflate if the Content-Encoding: is deflate event if the case is wrong' do
561
+ @curl_easy.stub!(:header_str).and_return('content-encoding: deflate')
562
+ Zlib::Inflate.should_receive(:inflate).with(@curl_easy.body_str)
563
+ Feedzirra::Feed.decode_content(@curl_easy)
564
+ end
565
+
533
566
  it 'should return the response body if it is not encoded' do
534
567
  @curl_easy.stub!(:header_str).and_return('')
535
568
  Feedzirra::Feed.decode_content(@curl_easy).should == '<xml></xml>'
@@ -1,4 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'rubygems'
3
+ require 'active_support'
2
4
 
3
5
  describe Feedzirra::FeedUtilities do
4
6
  before(:each) do
@@ -31,8 +33,9 @@ describe Feedzirra::FeedUtilities do
31
33
  it "should provide a last_modified accessor" do
32
34
  feed = @klass.new
33
35
  time = Time.now
34
- feed.last_modified = time
36
+ feed.last_modified = time
35
37
  feed.last_modified.should == time
38
+ feed.last_modified.class.should == Time
36
39
  end
37
40
 
38
41
  it "should return new_entries? as true when entries are put into new_entries" do
@@ -121,9 +124,9 @@ describe Feedzirra::FeedUtilities do
121
124
  @old_entry = Feedzirra::Parser::AtomEntry.new
122
125
  @old_entry.url = "http://pauldix.net/old.html"
123
126
  @old_entry.published = Time.now.to_s
124
- @new_entry = Feedzirra::Parser::AtomEntry.new
127
+ @new_entry = Feedzirra::Parser::AtomEntry.new
125
128
  @new_entry.url = "http://pauldix.net/new.html"
126
- @new_entry.published = (Time.now + 10).to_s
129
+ @new_entry.published = (Time.now + 10).to_s
127
130
  @feed.entries << @old_entry
128
131
  @updated_feed.entries << @new_entry
129
132
  @updated_feed.entries << @old_entry
@@ -131,7 +134,7 @@ describe Feedzirra::FeedUtilities do
131
134
 
132
135
  it "should update last-modified from the latest entry date" do
133
136
  @feed.update_from_feed(@updated_feed)
134
- @feed.last_modified.should == @new_entry.published
137
+ @feed.last_modified.should == @new_entry.published
135
138
  end
136
139
 
137
140
  it "should put new entries into new_entries" do
@@ -20,6 +20,11 @@ describe Feedzirra::Parser::AtomFeedBurnerEntry do
20
20
  @entry.url.should == "http://www.pauldix.net/2009/01/making-a-ruby-c-library-even-faster.html"
21
21
  end
22
22
 
23
+ it "should parse the url when there is no alternate" do
24
+ entry = Feedzirra::Parser::AtomFeedBurner.parse(File.read("#{File.dirname(__FILE__)}/../../sample_feeds/FeedBurnerUrlNoAlternate.xml")).entries.first
25
+ entry.url.should == 'http://example.com/QQQQ.html'
26
+ end
27
+
23
28
  it "should parse the author" do
24
29
  @entry.author.should == "Paul Dix"
25
30
  end
@@ -23,7 +23,11 @@ describe Feedzirra::Parser::AtomFeedBurner do
23
23
  it "should parse the title" do
24
24
  @feed.title.should == "Paul Dix Explains Nothing"
25
25
  end
26
-
26
+
27
+ it "should parse the description" do
28
+ @feed.description.should == "Entrepreneurship, programming, software development, politics, NYC, and random thoughts."
29
+ end
30
+
27
31
  it "should parse the url" do
28
32
  @feed.url.should == "http://www.pauldix.net/"
29
33
  end
@@ -19,7 +19,11 @@ describe Feedzirra::Parser::Atom do
19
19
  it "should parse the title" do
20
20
  @feed.title.should == "Amazon Web Services Blog"
21
21
  end
22
-
22
+
23
+ it "should parse the description" do
24
+ @feed.description.should == "Amazon Web Services, Products, Tools, and Developer Information..."
25
+ end
26
+
23
27
  it "should parse the url" do
24
28
  @feed.url.should == "http://aws.typepad.com/aws/"
25
29
  end
@@ -34,7 +34,7 @@ describe Feedzirra::Parser::ITunesRSSItem do
34
34
  end
35
35
 
36
36
  it "should parse the published date" do
37
- @item.published.should == "Wed, 15 Jun 2005 19:00:00 GMT"
37
+ @item.published.to_s.should == "Wed Jun 15 19:00:00 UTC 2005"
38
38
  end
39
39
 
40
40
  it "should parse the duration" do
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
2
3
 
3
4
  describe Feedzirra::Parser::RSSEntry do
@@ -27,7 +28,7 @@ describe Feedzirra::Parser::RSSEntry do
27
28
  @entry.summary.should == "Oops! When I released nokogiri version 1.0.7, I totally forgot to talk about Nokogiri::Slop() feature that was added. Why is it called \"slop\"? It lets you sloppily explore documents. Basically, it decorates your document with method_missing() that allows you to search your document via method calls.\nGiven this document:\n\ndoc = Nokogiri::Slop&#40;&#60;&#60;-eohtml&#41;\n&#60;html&#62;\n&#160; &#60;body&#62;\n&#160; [...]"
28
29
  end
29
30
 
30
- it "should parse the published date" do
31
+ it "should parse the published date" do
31
32
  @entry.published.to_s.should == "Thu Dec 04 17:17:49 UTC 2008"
32
33
  end
33
34
 
@@ -24,7 +24,11 @@ describe Feedzirra::Parser::RSS do
24
24
  it "should parse the title" do
25
25
  @feed.title.should == "Tender Lovemaking"
26
26
  end
27
-
27
+
28
+ it "should parse the description" do
29
+ @feed.description.should == "The act of making love, tenderly."
30
+ end
31
+
28
32
  it "should parse the url" do
29
33
  @feed.url.should == "http://tenderlovemaking.com"
30
34
  end
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require File.dirname(__FILE__) + "/../../lib/feedzirra.rb"
3
+
4
+ feed_urls = File.readlines(File.dirname(__FILE__) + "/top5kfeeds.dat").collect {|line| line.split.first}
5
+
6
+ success = lambda do |url, feed|
7
+ puts "SUCCESS - #{feed.title} - #{url}"
8
+ end
9
+
10
+ failed_feeds = []
11
+ failure = lambda do |url, response_code, header, body|
12
+ failed_feeds << url if response_code == 200
13
+ puts "*********** FAILED with #{response_code} on #{url}"
14
+ end
15
+
16
+ Feedzirra::Feed.fetch_and_parse(feed_urls, :on_success => success, :on_failure => failure)
17
+
18
+ File.open("./failed_urls.txt", "w") do |f|
19
+ f.write failed_feeds.join("\n")
20
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "rubygems"
2
- require "spec"
2
+ require "rspec"
3
3
 
4
4
  # gem install redgreen for colored test output
5
5
  begin require "redgreen" unless ENV['TM_CURRENT_LINE']; rescue LoadError; end
@@ -7,7 +7,7 @@ begin require "redgreen" unless ENV['TM_CURRENT_LINE']; rescue LoadError; end
7
7
  path = File.expand_path(File.dirname(__FILE__) + "/../lib/")
8
8
  $LOAD_PATH.unshift(path) unless $LOAD_PATH.include?(path)
9
9
 
10
- require "lib/feedzirra"
10
+ require "feedzirra"
11
11
 
12
12
  def load_sample(filename)
13
13
  File.read("#{File.dirname(__FILE__)}/sample_feeds/#{filename}")
@@ -55,4 +55,12 @@ end
55
55
 
56
56
  def sample_wfw_feed
57
57
  load_sample("PaulDixExplainsNothingWFW.xml")
58
+ end
59
+
60
+ # http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l156
61
+ # Default Time.to_s changed in 1.9, monkeypatching it back
62
+ class Time
63
+ def to_s
64
+ strftime("%a %b %d %H:%M:%S %Z %Y")
65
+ end
58
66
  end
metadata CHANGED
@@ -1,131 +1,183 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedzirra
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 35
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 24
9
- version: 0.0.24
9
+ - 30
10
+ version: 0.0.30
10
11
  platform: ruby
11
12
  authors:
12
13
  - Paul Dix
14
+ - Julien Kirch
13
15
  autorequire:
14
16
  bindir: bin
15
17
  cert_chain: []
16
18
 
17
- date: 2009-02-19 00:00:00 -05:00
18
- default_executable:
19
+ date: 2011-07-20 00:00:00 Z
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: nokogiri
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
- - - ">"
27
+ - - ~>
26
28
  - !ruby/object:Gem::Version
29
+ hash: 15
27
30
  segments:
28
- - 0
29
- - 0
30
- - 0
31
- version: 0.0.0
31
+ - 1
32
+ - 4
33
+ - 4
34
+ version: 1.4.4
32
35
  type: :runtime
33
36
  version_requirements: *id001
34
37
  - !ruby/object:Gem::Dependency
35
38
  name: sax-machine
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
- - - ">="
43
+ - - ~>
40
44
  - !ruby/object:Gem::Version
45
+ hash: 55
41
46
  segments:
42
47
  - 0
43
48
  - 0
44
- - 12
45
- version: 0.0.12
49
+ - 20
50
+ version: 0.0.20
46
51
  type: :runtime
47
52
  version_requirements: *id002
48
53
  - !ruby/object:Gem::Dependency
49
54
  name: curb
50
55
  prerelease: false
51
56
  requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
52
58
  requirements:
53
- - - ">="
59
+ - - ~>
54
60
  - !ruby/object:Gem::Version
61
+ hash: 29
55
62
  segments:
56
63
  - 0
57
- - 2
58
- - 3
59
- version: 0.2.3
64
+ - 7
65
+ - 15
66
+ version: 0.7.15
60
67
  type: :runtime
61
68
  version_requirements: *id003
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: builder
64
71
  prerelease: false
65
72
  requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
66
74
  requirements:
67
- - - ">="
75
+ - - ~>
68
76
  - !ruby/object:Gem::Version
77
+ hash: 7
69
78
  segments:
70
- - 2
71
- - 1
72
- - 2
73
- version: 2.1.2
79
+ - 3
80
+ - 0
81
+ - 0
82
+ version: 3.0.0
74
83
  type: :runtime
75
84
  version_requirements: *id004
76
85
  - !ruby/object:Gem::Dependency
77
86
  name: activesupport
78
87
  prerelease: false
79
88
  requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
80
90
  requirements:
81
- - - ">="
91
+ - - ~>
82
92
  - !ruby/object:Gem::Version
93
+ hash: 23
83
94
  segments:
84
- - 2
85
95
  - 3
96
+ - 0
86
97
  - 8
87
- version: 2.3.8
98
+ version: 3.0.8
88
99
  type: :runtime
89
100
  version_requirements: *id005
90
101
  - !ruby/object:Gem::Dependency
91
102
  name: loofah
92
103
  prerelease: false
93
104
  requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
94
106
  requirements:
95
- - - ">="
107
+ - - ~>
96
108
  - !ruby/object:Gem::Version
109
+ hash: 23
97
110
  segments:
98
- - 0
99
- - 3
100
111
  - 1
101
- version: 0.3.1
112
+ - 0
113
+ - 0
114
+ version: 1.0.0
102
115
  type: :runtime
103
116
  version_requirements: *id006
104
117
  - !ruby/object:Gem::Dependency
105
- name: rspec
118
+ name: rdoc
106
119
  prerelease: false
107
120
  requirement: &id007 !ruby/object:Gem::Requirement
121
+ none: false
108
122
  requirements:
109
- - - ">="
123
+ - - ~>
110
124
  - !ruby/object:Gem::Version
125
+ hash: 23
111
126
  segments:
112
- - 0
113
- version: "0"
114
- type: :development
127
+ - 3
128
+ - 8
129
+ version: "3.8"
130
+ type: :runtime
115
131
  version_requirements: *id007
116
132
  - !ruby/object:Gem::Dependency
117
- name: diff-lcs
133
+ name: rake
118
134
  prerelease: false
119
135
  requirement: &id008 !ruby/object:Gem::Requirement
136
+ none: false
120
137
  requirements:
121
138
  - - ">="
122
139
  - !ruby/object:Gem::Version
140
+ hash: 63
123
141
  segments:
124
142
  - 0
125
- version: "0"
126
- type: :development
143
+ - 9
144
+ - 2
145
+ version: 0.9.2
146
+ type: :runtime
127
147
  version_requirements: *id008
128
- description:
148
+ - !ruby/object:Gem::Dependency
149
+ name: i18n
150
+ prerelease: false
151
+ requirement: &id009 !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ~>
155
+ - !ruby/object:Gem::Version
156
+ hash: 7
157
+ segments:
158
+ - 0
159
+ - 6
160
+ - 0
161
+ version: 0.6.0
162
+ type: :runtime
163
+ version_requirements: *id009
164
+ - !ruby/object:Gem::Dependency
165
+ name: rspec
166
+ prerelease: false
167
+ requirement: &id010 !ruby/object:Gem::Requirement
168
+ none: false
169
+ requirements:
170
+ - - ~>
171
+ - !ruby/object:Gem::Version
172
+ hash: 23
173
+ segments:
174
+ - 2
175
+ - 6
176
+ - 0
177
+ version: 2.6.0
178
+ type: :development
179
+ version_requirements: *id010
180
+ description: "A feed fetching and parsing library that treats the internet like Godzilla treats Japan: it dominates and eats all."
129
181
  email: paul@pauldix.net
130
182
  executables: []
131
183
 
@@ -134,10 +186,12 @@ extensions: []
134
186
  extra_rdoc_files: []
135
187
 
136
188
  files:
137
- - lib/core_ext/date.rb
138
- - lib/core_ext/string.rb
139
- - lib/feedzirra.rb
189
+ - lib/feedzirra/core_ext/date.rb
190
+ - lib/feedzirra/core_ext/string.rb
191
+ - lib/feedzirra/core_ext.rb
140
192
  - lib/feedzirra/feed.rb
193
+ - lib/feedzirra/feed_entry_utilities.rb
194
+ - lib/feedzirra/feed_utilities.rb
141
195
  - lib/feedzirra/parser/atom.rb
142
196
  - lib/feedzirra/parser/atom_entry.rb
143
197
  - lib/feedzirra/parser/atom_feed_burner.rb
@@ -147,25 +201,31 @@ files:
147
201
  - lib/feedzirra/parser/itunes_rss_owner.rb
148
202
  - lib/feedzirra/parser/rss.rb
149
203
  - lib/feedzirra/parser/rss_entry.rb
150
- - lib/feedzirra/feed_utilities.rb
151
- - lib/feedzirra/feed_entry_utilities.rb
152
- - README.textile
153
- - Rakefile
154
- - spec/spec.opts
155
- - spec/spec_helper.rb
204
+ - lib/feedzirra/parser.rb
205
+ - lib/feedzirra/version.rb
206
+ - lib/feedzirra.rb
207
+ - spec/benchmarks/feed_benchmarks.rb
208
+ - spec/benchmarks/feedzirra_benchmarks.rb
209
+ - spec/benchmarks/fetching_benchmarks.rb
210
+ - spec/benchmarks/parsing_benchmark.rb
211
+ - spec/benchmarks/updating_benchmarks.rb
212
+ - spec/feedzirra/feed_entry_utilities_spec.rb
156
213
  - spec/feedzirra/feed_spec.rb
157
- - spec/feedzirra/parser/atom_spec.rb
214
+ - spec/feedzirra/feed_utilities_spec.rb
158
215
  - spec/feedzirra/parser/atom_entry_spec.rb
159
- - spec/feedzirra/parser/atom_feed_burner_spec.rb
160
216
  - spec/feedzirra/parser/atom_feed_burner_entry_spec.rb
161
- - spec/feedzirra/parser/itunes_rss_spec.rb
217
+ - spec/feedzirra/parser/atom_feed_burner_spec.rb
218
+ - spec/feedzirra/parser/atom_spec.rb
162
219
  - spec/feedzirra/parser/itunes_rss_item_spec.rb
163
220
  - spec/feedzirra/parser/itunes_rss_owner_spec.rb
164
- - spec/feedzirra/parser/rss_spec.rb
221
+ - spec/feedzirra/parser/itunes_rss_spec.rb
165
222
  - spec/feedzirra/parser/rss_entry_spec.rb
166
- - spec/feedzirra/feed_utilities_spec.rb
167
- - spec/feedzirra/feed_entry_utilities_spec.rb
168
- has_rdoc: true
223
+ - spec/feedzirra/parser/rss_spec.rb
224
+ - spec/sample_feeds/run_against_sample.rb
225
+ - spec/spec_helper.rb
226
+ - README.rdoc
227
+ - Rakefile
228
+ - .rspec
169
229
  homepage: http://github.com/pauldix/feedzirra
170
230
  licenses: []
171
231
 
@@ -175,25 +235,47 @@ rdoc_options: []
175
235
  require_paths:
176
236
  - lib
177
237
  required_ruby_version: !ruby/object:Gem::Requirement
238
+ none: false
178
239
  requirements:
179
240
  - - ">="
180
241
  - !ruby/object:Gem::Version
242
+ hash: 3
181
243
  segments:
182
244
  - 0
183
245
  version: "0"
184
246
  required_rubygems_version: !ruby/object:Gem::Requirement
247
+ none: false
185
248
  requirements:
186
249
  - - ">="
187
250
  - !ruby/object:Gem::Version
251
+ hash: 3
188
252
  segments:
189
253
  - 0
190
254
  version: "0"
191
255
  requirements: []
192
256
 
193
257
  rubyforge_project:
194
- rubygems_version: 1.3.6
258
+ rubygems_version: 1.8.5
195
259
  signing_key:
196
- specification_version: 2
197
- summary: "A feed fetching and parsing library that treats the internet like Godzilla treats Japan: it dominates and eats all."
198
- test_files: []
199
-
260
+ specification_version: 3
261
+ summary: A feed fetching and parsing library
262
+ test_files:
263
+ - spec/benchmarks/feed_benchmarks.rb
264
+ - spec/benchmarks/feedzirra_benchmarks.rb
265
+ - spec/benchmarks/fetching_benchmarks.rb
266
+ - spec/benchmarks/parsing_benchmark.rb
267
+ - spec/benchmarks/updating_benchmarks.rb
268
+ - spec/feedzirra/feed_entry_utilities_spec.rb
269
+ - spec/feedzirra/feed_spec.rb
270
+ - spec/feedzirra/feed_utilities_spec.rb
271
+ - spec/feedzirra/parser/atom_entry_spec.rb
272
+ - spec/feedzirra/parser/atom_feed_burner_entry_spec.rb
273
+ - spec/feedzirra/parser/atom_feed_burner_spec.rb
274
+ - spec/feedzirra/parser/atom_spec.rb
275
+ - spec/feedzirra/parser/itunes_rss_item_spec.rb
276
+ - spec/feedzirra/parser/itunes_rss_owner_spec.rb
277
+ - spec/feedzirra/parser/itunes_rss_spec.rb
278
+ - spec/feedzirra/parser/rss_entry_spec.rb
279
+ - spec/feedzirra/parser/rss_spec.rb
280
+ - spec/sample_feeds/run_against_sample.rb
281
+ - spec/spec_helper.rb