feedzirra 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -1
  3. data/.travis.yml +3 -3
  4. data/{HISTORY.md → CHANGELOG.md} +32 -7
  5. data/Gemfile +4 -1
  6. data/Guardfile +0 -1
  7. data/README.md +102 -87
  8. data/Rakefile +1 -1
  9. data/feedzirra.gemspec +2 -1
  10. data/lib/feedzirra/core_ext/date.rb +1 -1
  11. data/lib/feedzirra/core_ext/string.rb +2 -2
  12. data/lib/feedzirra/feed.rb +16 -16
  13. data/lib/feedzirra/feed_entry_utilities.rb +5 -5
  14. data/lib/feedzirra/parser/atom_entry.rb +2 -2
  15. data/lib/feedzirra/parser/atom_feed_burner.rb +1 -1
  16. data/lib/feedzirra/parser/atom_feed_burner_entry.rb +2 -2
  17. data/lib/feedzirra/parser/google_docs_atom_entry.rb +1 -1
  18. data/lib/feedzirra/parser/itunes_rss_item.rb +2 -2
  19. data/lib/feedzirra/parser/itunes_rss_owner.rb +3 -3
  20. data/lib/feedzirra/parser/rss.rb +1 -1
  21. data/lib/feedzirra/parser/rss_entry.rb +7 -6
  22. data/lib/feedzirra/parser/rss_feed_burner.rb +1 -1
  23. data/lib/feedzirra/parser/rss_feed_burner_entry.rb +1 -1
  24. data/lib/feedzirra/parser.rb +1 -1
  25. data/lib/feedzirra/version.rb +1 -1
  26. data/lib/feedzirra.rb +1 -1
  27. data/spec/benchmarks/feed_benchmarks.rb +7 -7
  28. data/spec/benchmarks/feedzirra_benchmarks.rb +1 -1
  29. data/spec/benchmarks/fetching_benchmarks.rb +3 -3
  30. data/spec/benchmarks/parsing_benchmark.rb +1 -1
  31. data/spec/benchmarks/updating_benchmarks.rb +6 -6
  32. data/spec/feedzirra/feed_entry_utilities_spec.rb +11 -7
  33. data/spec/feedzirra/feed_spec.rb +85 -85
  34. data/spec/feedzirra/feed_utilities_spec.rb +22 -22
  35. data/spec/feedzirra/parser/atom_entry_spec.rb +1 -1
  36. data/spec/feedzirra/parser/atom_feed_burner_entry_spec.rb +7 -7
  37. data/spec/feedzirra/parser/atom_feed_burner_spec.rb +7 -7
  38. data/spec/feedzirra/parser/atom_spec.rb +9 -9
  39. data/spec/feedzirra/parser/itunes_rss_item_spec.rb +11 -11
  40. data/spec/feedzirra/parser/itunes_rss_owner_spec.rb +4 -4
  41. data/spec/feedzirra/parser/itunes_rss_spec.rb +8 -8
  42. data/spec/feedzirra/parser/rss_feed_burner_entry_spec.rb +1 -1
  43. data/spec/feedzirra/parser/rss_feed_burner_spec.rb +8 -8
  44. data/spec/feedzirra/parser/rss_spec.rb +6 -6
  45. data/spec/spec_helper.rb +4 -3
  46. metadata +10 -21
@@ -5,21 +5,21 @@ describe Feedzirra::Parser::Atom do
5
5
  it "should return true for an atom feed" do
6
6
  Feedzirra::Parser::Atom.should be_able_to_parse(sample_atom_feed)
7
7
  end
8
-
8
+
9
9
  it "should return false for an rdf feed" do
10
10
  Feedzirra::Parser::Atom.should_not be_able_to_parse(sample_rdf_feed)
11
11
  end
12
-
12
+
13
13
  it "should return false for an rss feedburner feed" do
14
14
  Feedzirra::Parser::Atom.should_not be_able_to_parse(sample_rss_feed_burner_feed)
15
15
  end
16
16
  end
17
-
17
+
18
18
  describe "parsing" do
19
19
  before(:each) do
20
20
  @feed = Feedzirra::Parser::Atom.parse(sample_atom_feed)
21
21
  end
22
-
22
+
23
23
  it "should parse the title" do
24
24
  @feed.title.should == "Amazon Web Services Blog"
25
25
  end
@@ -31,21 +31,21 @@ describe Feedzirra::Parser::Atom do
31
31
  it "should parse the url" do
32
32
  @feed.url.should == "http://aws.typepad.com/aws/"
33
33
  end
34
-
34
+
35
35
  it "should parse the url even when it doesn't have the type='text/html' attribute" do
36
36
  Feedzirra::Parser::Atom.parse(load_sample("atom_with_link_tag_for_url_unmarked.xml")).url.should == "http://www.innoq.com/planet/"
37
37
  end
38
-
38
+
39
39
  it "should parse the feed_url even when it doesn't have the type='application/atom+xml' attribute" do
40
40
  Feedzirra::Parser::Atom.parse(load_sample("atom_with_link_tag_for_url_unmarked.xml")).feed_url.should == "http://www.innoq.com/planet/atom.xml"
41
41
  end
42
-
42
+
43
43
  it "should parse the feed_url" do
44
44
  @feed.feed_url.should == "http://aws.typepad.com/aws/atom.xml"
45
45
  end
46
-
46
+
47
47
  it "should parse entries" do
48
48
  @feed.entries.size.should == 10
49
49
  end
50
50
  end
51
- end
51
+ end
@@ -6,43 +6,43 @@ describe Feedzirra::Parser::ITunesRSSItem do
6
6
  # but this is actually how it should work. You would never just pass entry xml straight to the ITunesRssItem
7
7
  @item = Feedzirra::Parser::ITunesRSS.parse(sample_itunes_feed).entries.first
8
8
  end
9
-
9
+
10
10
  it "should parse the title" do
11
11
  @item.title.should == "Shake Shake Shake Your Spices"
12
12
  end
13
-
13
+
14
14
  it "should parse the author" do
15
15
  @item.itunes_author.should == "John Doe"
16
- end
16
+ end
17
17
 
18
18
  it "should parse the subtitle" do
19
19
  @item.itunes_subtitle.should == "A short primer on table spices"
20
- end
20
+ end
21
21
 
22
22
  it "should parse the summary" do
23
23
  @item.itunes_summary.should == "This week we talk about salt and pepper shakers, comparing and contrasting pour rates, construction materials, and overall aesthetics. Come and join the party!"
24
- end
24
+ end
25
25
 
26
26
  it "should parse the enclosure" do
27
27
  @item.enclosure_length.should == "8727310"
28
28
  @item.enclosure_type.should == "audio/x-m4a"
29
29
  @item.enclosure_url.should == "http://example.com/podcasts/everything/AllAboutEverythingEpisode3.m4a"
30
- end
30
+ end
31
31
 
32
32
  it "should parse the guid" do
33
33
  @item.guid.should == "http://example.com/podcasts/archive/aae20050615.m4a"
34
- end
34
+ end
35
35
 
36
36
  it "should parse the published date" do
37
37
  @item.published.should == Time.parse_safely("Wed Jun 15 19:00:00 UTC 2005")
38
- end
38
+ end
39
39
 
40
40
  it "should parse the duration" do
41
41
  @item.itunes_duration.should == "7:04"
42
- end
42
+ end
43
43
 
44
44
  it "should parse the keywords" do
45
45
  @item.itunes_keywords.should == "salt, pepper, shaker, exciting"
46
- end
46
+ end
47
47
 
48
- end
48
+ end
@@ -6,13 +6,13 @@ describe Feedzirra::Parser::ITunesRSSOwner do
6
6
  # but this is actually how it should work. You would never just pass entry xml straight to the ITunesRssOwner
7
7
  @owner = Feedzirra::Parser::ITunesRSS.parse(sample_itunes_feed).itunes_owners.first
8
8
  end
9
-
9
+
10
10
  it "should parse the name" do
11
11
  @owner.name.should == "John Doe"
12
12
  end
13
-
13
+
14
14
  it "should parse the email" do
15
15
  @owner.email.should == "john.doe@example.com"
16
- end
16
+ end
17
17
 
18
- end
18
+ end
@@ -9,7 +9,7 @@ describe Feedzirra::Parser::ITunesRSS do
9
9
  it "should return fase for an atom feed" do
10
10
  Feedzirra::Parser::ITunesRSS.should_not be_able_to_parse(sample_atom_feed)
11
11
  end
12
-
12
+
13
13
  it "should return false for an rss feedburner feed" do
14
14
  Feedzirra::Parser::ITunesRSS.should_not be_able_to_parse(sample_rss_feed_burner_feed)
15
15
  end
@@ -19,23 +19,23 @@ describe Feedzirra::Parser::ITunesRSS do
19
19
  before(:each) do
20
20
  @feed = Feedzirra::Parser::ITunesRSS.parse(sample_itunes_feed)
21
21
  end
22
-
22
+
23
23
  it "should parse the subtitle" do
24
24
  @feed.itunes_subtitle.should == "A show about everything"
25
25
  end
26
-
26
+
27
27
  it "should parse the author" do
28
28
  @feed.itunes_author.should == "John Doe"
29
29
  end
30
-
30
+
31
31
  it "should parse an owner" do
32
32
  @feed.itunes_owners.size.should == 1
33
33
  end
34
-
34
+
35
35
  it "should parse an image" do
36
36
  @feed.itunes_image.should == "http://example.com/podcasts/everything/AllAboutEverything.jpg"
37
37
  end
38
-
38
+
39
39
  it "should parse categories" do
40
40
  @feed.itunes_categories.size == 3
41
41
  @feed.itunes_categories[0] == "Technology"
@@ -46,9 +46,9 @@ describe Feedzirra::Parser::ITunesRSS do
46
46
  it "should parse the summary" do
47
47
  @feed.itunes_summary.should == "All About Everything is a show about everything. Each week we dive into any subject known to man and talk about it as much as we can. Look for our Podcast in the iTunes Music Store"
48
48
  end
49
-
49
+
50
50
  it "should parse entries" do
51
51
  @feed.entries.size.should == 3
52
52
  end
53
53
  end
54
- end
54
+ end
@@ -22,7 +22,7 @@ describe Feedzirra::Parser::RSSFeedBurnerEntry do
22
22
  it "should parse the original url" do
23
23
  @entry.url.should == "http://techcrunch.com/2011/11/02/angies-list-prices-ipo-at-11-to-13-per-share-valued-at-over-600m/"
24
24
  end
25
-
25
+
26
26
  it "should parse the author" do
27
27
  @entry.author.should == "Leena Rao"
28
28
  end
@@ -5,19 +5,19 @@ describe Feedzirra::Parser::RSSFeedBurner do
5
5
  it "should return true for a feedburner rss feed" do
6
6
  Feedzirra::Parser::RSSFeedBurner.should be_able_to_parse(sample_rss_feed_burner_feed)
7
7
  end
8
-
8
+
9
9
  it "should return false for a regular RSS feed" do
10
10
  Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_rss_feed)
11
11
  end
12
-
12
+
13
13
  it "should return false for a feedburner atom feed" do
14
14
  Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_feedburner_atom_feed)
15
15
  end
16
-
16
+
17
17
  it "should return false for an rdf feed" do
18
18
  Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_rdf_feed)
19
19
  end
20
-
20
+
21
21
  it "should return false for a regular atom feed" do
22
22
  Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_atom_feed)
23
23
  end
@@ -27,7 +27,7 @@ describe Feedzirra::Parser::RSSFeedBurner do
27
27
  before(:each) do
28
28
  @feed = Feedzirra::Parser::RSSFeedBurner.parse(sample_rss_feed_burner_feed)
29
29
  end
30
-
30
+
31
31
  it "should parse the title" do
32
32
  @feed.title.should == "TechCrunch"
33
33
  end
@@ -39,14 +39,14 @@ describe Feedzirra::Parser::RSSFeedBurner do
39
39
  it "should parse the url" do
40
40
  @feed.url.should == "http://techcrunch.com"
41
41
  end
42
-
42
+
43
43
  it "should provide an accessor for the feed_url" do
44
44
  @feed.respond_to?(:feed_url).should == true
45
45
  @feed.respond_to?(:feed_url=).should == true
46
46
  end
47
-
47
+
48
48
  it "should parse entries" do
49
49
  @feed.entries.size.should == 20
50
50
  end
51
51
  end
52
- end
52
+ end
@@ -10,11 +10,11 @@ describe Feedzirra::Parser::RSS do
10
10
  # it "should return false for an rdf feed" do
11
11
  # Feedzirra::RSS.should_not be_able_to_parse(sample_rdf_feed)
12
12
  # end
13
-
13
+
14
14
  it "should return false for an atom feed" do
15
15
  Feedzirra::Parser::RSS.should_not be_able_to_parse(sample_atom_feed)
16
16
  end
17
-
17
+
18
18
  it "should return false for an rss feedburner feed" do
19
19
  Feedzirra::Parser::RSS.should_not be_able_to_parse(sample_rss_feed_burner_feed)
20
20
  end
@@ -24,7 +24,7 @@ describe Feedzirra::Parser::RSS do
24
24
  before(:each) do
25
25
  @feed = Feedzirra::Parser::RSS.parse(sample_rss_feed)
26
26
  end
27
-
27
+
28
28
  it "should parse the title" do
29
29
  @feed.title.should == "Tender Lovemaking"
30
30
  end
@@ -36,14 +36,14 @@ describe Feedzirra::Parser::RSS do
36
36
  it "should parse the url" do
37
37
  @feed.url.should == "http://tenderlovemaking.com"
38
38
  end
39
-
39
+
40
40
  it "should provide an accessor for the feed_url" do
41
41
  @feed.respond_to?(:feed_url).should == true
42
42
  @feed.respond_to?(:feed_url=).should == true
43
43
  end
44
-
44
+
45
45
  it "should parse entries" do
46
46
  @feed.entries.size.should == 10
47
47
  end
48
48
  end
49
- end
49
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  begin
2
2
  require 'simplecov'
3
+ require 'json'
3
4
  SimpleCov.start do
4
5
  add_filter "/spec/"
5
6
  end
@@ -62,14 +63,14 @@ end
62
63
 
63
64
  def sample_wfw_feed
64
65
  load_sample("PaulDixExplainsNothingWFW.xml")
65
- end
66
+ end
66
67
 
67
68
  def sample_google_docs_list_feed
68
69
  load_sample("GoogleDocsList.xml")
69
- end
70
+ end
70
71
 
71
72
  RSpec.configure do |config|
72
73
  config.treat_symbols_as_metadata_keys_with_true_values = true
73
74
  config.run_all_when_everything_filtered = true
74
75
  config.filter_run :focus
75
- end
76
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedzirra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
5
- prerelease:
4
+ version: 0.2.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Paul Dix
@@ -11,12 +10,11 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-10-15 00:00:00.000000000 Z
13
+ date: 2013-11-15 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: nokogiri
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
19
  - - ~>
22
20
  - !ruby/object:Gem::Version
@@ -24,7 +22,6 @@ dependencies:
24
22
  type: :runtime
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
26
  - - ~>
30
27
  - !ruby/object:Gem::Version
@@ -32,7 +29,6 @@ dependencies:
32
29
  - !ruby/object:Gem::Dependency
33
30
  name: sax-machine
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
33
  - - ~>
38
34
  - !ruby/object:Gem::Version
@@ -40,7 +36,6 @@ dependencies:
40
36
  type: :runtime
41
37
  prerelease: false
42
38
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
39
  requirements:
45
40
  - - ~>
46
41
  - !ruby/object:Gem::Version
@@ -48,7 +43,6 @@ dependencies:
48
43
  - !ruby/object:Gem::Dependency
49
44
  name: curb
50
45
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
46
  requirements:
53
47
  - - ~>
54
48
  - !ruby/object:Gem::Version
@@ -56,7 +50,6 @@ dependencies:
56
50
  type: :runtime
57
51
  prerelease: false
58
52
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
53
  requirements:
61
54
  - - ~>
62
55
  - !ruby/object:Gem::Version
@@ -64,7 +57,6 @@ dependencies:
64
57
  - !ruby/object:Gem::Dependency
65
58
  name: loofah
66
59
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
60
  requirements:
69
61
  - - ~>
70
62
  - !ruby/object:Gem::Version
@@ -72,7 +64,6 @@ dependencies:
72
64
  type: :runtime
73
65
  prerelease: false
74
66
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
67
  requirements:
77
68
  - - ~>
78
69
  - !ruby/object:Gem::Version
@@ -80,7 +71,6 @@ dependencies:
80
71
  - !ruby/object:Gem::Dependency
81
72
  name: rspec
82
73
  requirement: !ruby/object:Gem::Requirement
83
- none: false
84
74
  requirements:
85
75
  - - ~>
86
76
  - !ruby/object:Gem::Version
@@ -88,7 +78,6 @@ dependencies:
88
78
  type: :development
89
79
  prerelease: false
90
80
  version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
81
  requirements:
93
82
  - - ~>
94
83
  - !ruby/object:Gem::Version
@@ -102,9 +91,9 @@ files:
102
91
  - .gitignore
103
92
  - .rspec
104
93
  - .travis.yml
94
+ - CHANGELOG.md
105
95
  - Gemfile
106
96
  - Guardfile
107
- - HISTORY.md
108
97
  - README.md
109
98
  - Rakefile
110
99
  - feedzirra.gemspec
@@ -175,28 +164,28 @@ files:
175
164
  - spec/sample_feeds/trouble_feeds.txt
176
165
  - spec/spec_helper.rb
177
166
  homepage: http://github.com/pauldix/feedzirra
178
- licenses: []
167
+ licenses:
168
+ - MIT
169
+ metadata: {}
179
170
  post_install_message:
180
171
  rdoc_options: []
181
172
  require_paths:
182
173
  - lib
183
174
  required_ruby_version: !ruby/object:Gem::Requirement
184
- none: false
185
175
  requirements:
186
- - - ! '>='
176
+ - - '>='
187
177
  - !ruby/object:Gem::Version
188
178
  version: '0'
189
179
  required_rubygems_version: !ruby/object:Gem::Requirement
190
- none: false
191
180
  requirements:
192
- - - ! '>='
181
+ - - '>='
193
182
  - !ruby/object:Gem::Version
194
183
  version: '0'
195
184
  requirements: []
196
185
  rubyforge_project:
197
- rubygems_version: 1.8.23
186
+ rubygems_version: 2.0.3
198
187
  signing_key:
199
- specification_version: 3
188
+ specification_version: 4
200
189
  summary: A feed fetching and parsing library
201
190
  test_files:
202
191
  - spec/benchmarks/feed_benchmarks.rb