feed-abstract 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/feed-abstract.rb +1 -0
- data/lib/feed-abstract/channel/atom.rb +5 -0
- data/lib/feed-abstract/channel/rdf.rb +5 -0
- data/lib/feed-abstract/channel/rss.rb +7 -2
- data/lib/feed-abstract/feed.rb +32 -3
- data/lib/feed-abstract/version.rb +1 -1
- data/spec/feed_abstract_channel_spec.rb +47 -10
- data/spec/feed_abstract_item_spec.rb +28 -31
- data/spec/feed_abstract_spec.rb +15 -7
- data/spec/spec_helper.rb +25 -0
- data/spec/test_data/djcp.rss92 +62 -0
- data/spec/test_data/feedburner.rss +108 -0
- metadata +42 -52
data/lib/feed-abstract.rb
CHANGED
@@ -14,6 +14,11 @@ module FeedAbstract
|
|
14
14
|
@feed.channel.title
|
15
15
|
end
|
16
16
|
|
17
|
+
def language
|
18
|
+
return '' if @feed.channel.language.nil?
|
19
|
+
@feed.channel.language
|
20
|
+
end
|
21
|
+
|
17
22
|
def description
|
18
23
|
@feed.channel.description
|
19
24
|
end
|
@@ -43,8 +48,8 @@ module FeedAbstract
|
|
43
48
|
|
44
49
|
# A Time object.
|
45
50
|
def updated
|
46
|
-
return '' if @feed.channel.lastBuildDate.nil?
|
47
|
-
@feed.channel.lastBuildDate
|
51
|
+
return '' if @feed.channel.lastBuildDate.nil? && @feed.channel.pubDate.nil?
|
52
|
+
(@feed.channel.lastBuildDate.nil?) ? @feed.channel.pubDate : @feed.channel.lastBuildDate
|
48
53
|
end
|
49
54
|
|
50
55
|
# A globally unique ID for this feed. A URL in this case.
|
data/lib/feed-abstract/feed.rb
CHANGED
@@ -10,8 +10,12 @@ module FeedAbstract
|
|
10
10
|
|
11
11
|
# === Parameters
|
12
12
|
# * xml - a string or object instance that responds to <b>read</b>
|
13
|
-
# * :do_validate - whether or not the feed should be validated. Passed through to RSS::Parser
|
14
|
-
# * :ignore_unknown_element - passed through to RSS::Parser
|
13
|
+
# * :do_validate - whether or not the feed should be validated. Passed through to RSS::Parser. Defaults to false.
|
14
|
+
# * :ignore_unknown_element - passed through to RSS::Parser. Defaults to true.
|
15
|
+
# * :input_encoding - Defaults to "UTF-8". This is the encoding of the feed as passed to FeedAbstract::Feed.new
|
16
|
+
# * :output_encoding - Defaults to "UTF-8". This is the encoding of the feed as it's passed to the underlying parser - generally you should keep this as "UTF-8".
|
17
|
+
# * :force_encoding - Force input text to be UTF-8 (or whatever you set :output_encoding to), removing invalid byte sequences before passing to RSS::Parser. Defaults to true because RSS::Parser will thrown an error if it sees invalid byte sequences.
|
18
|
+
# * :transliterate_characters - Ask Iconv to transliterate unknown characters when forcing encoding conversion. This only works reliably when you set the :input_encoding properly. Defaults to false and should probably be left there because it's quirky and doesn't appear to work reliably.
|
15
19
|
#
|
16
20
|
# === Returns
|
17
21
|
# An object with three attributes:
|
@@ -42,8 +46,33 @@ module FeedAbstract
|
|
42
46
|
# f = FeedAbstract::Feed.new(Net::HTTP.get(URI.parse('http://rss.slashdot.org/Slashdot/slashdot')))
|
43
47
|
# puts f.items.collect{|i| i.link}
|
44
48
|
#
|
45
|
-
def initialize(xml = nil,
|
49
|
+
def initialize(xml = nil, opts = {})
|
50
|
+
options = {
|
51
|
+
:do_validate => false,
|
52
|
+
:ignore_unknown_element => true,
|
53
|
+
:input_encoding => 'UTF-8',
|
54
|
+
:output_encoding => 'UTF-8',
|
55
|
+
:force_encoding => true,
|
56
|
+
:transliterate_characters => false
|
57
|
+
}.merge(opts)
|
58
|
+
|
46
59
|
input = (xml.respond_to?(:read)) ? xml.read : xml
|
60
|
+
|
61
|
+
if options[:force_encoding]
|
62
|
+
ic = Iconv.new(options[:output_encoding].upcase + ((options[:transliterate_characters]) ? '//TRANSLIT' : '') + '//IGNORE',options[:input_encoding].upcase)
|
63
|
+
if input.respond_to?(:encoding)
|
64
|
+
# ruby 1.9
|
65
|
+
# Only transcode if the encoding isn't valid.
|
66
|
+
# See: http://po-ru.com/diary/fixing-invalid-utf-8-in-ruby-revisited/ for why we're appending the extra space.
|
67
|
+
unless (input.encoding.to_s.upcase == options[:output_encoding].upcase && input.valid_encoding?)
|
68
|
+
input = ic.iconv(input << ' ')[0..-2]
|
69
|
+
end
|
70
|
+
else
|
71
|
+
# ruby 1.8
|
72
|
+
input = ic.iconv(input << ' ')[0..-2]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
47
76
|
@raw_feed = RSS::Parser.parse(input,options[:do_validate], options[:ignore_unknown_element])
|
48
77
|
if @raw_feed == nil
|
49
78
|
raise FeedAbstract::ParserError
|
@@ -5,37 +5,38 @@ module FeedAbstract
|
|
5
5
|
|
6
6
|
describe 'Channels' do
|
7
7
|
before(:all) do
|
8
|
-
|
9
|
-
@kpgatom = Feed.new(File.read('spec/test_data/katanapg.atom'))
|
10
|
-
@djcprss2 = Feed.new(File.read('spec/test_data/djcp.rss'))
|
11
|
-
@oa = Feed.new(File.read('spec/test_data/oa.africa.rss'))
|
12
|
-
@delicious = Feed.new(File.read('spec/test_data/djcp_delicious.rss'))
|
13
|
-
@zotero = Feed.new(File.read('spec/test_data/zotero.rss'))
|
8
|
+
instantiate_feeds
|
14
9
|
end
|
15
10
|
|
16
|
-
[:title, :subtitle, :description, :link, :generator, :authors, :author, :categories, :category, :icon, :logo, :rights, :updated, :guid].each do|att|
|
11
|
+
[:title, :language, :subtitle, :description, :link, :generator, :authors, :author, :categories, :category, :icon, :logo, :rights, :updated, :guid].each do|att|
|
17
12
|
it { @docatom.channel.should respond_to att}
|
18
13
|
it { @kpgatom.channel.should respond_to att}
|
19
14
|
it { @djcprss2.channel.should respond_to att}
|
15
|
+
it { @djcprss92.channel.should respond_to att}
|
20
16
|
it { @oa.channel.should respond_to att}
|
21
17
|
it { @delicious.channel.should respond_to att}
|
22
18
|
it { @zotero.channel.should respond_to att}
|
19
|
+
it { @feedburner.channel.should respond_to att}
|
23
20
|
|
24
21
|
it { @docatom.channel.send(att).should_not == false}
|
25
22
|
it { @kpgatom.channel.send(att).should_not == false}
|
26
23
|
it { @djcprss2.channel.send(att).should_not == false}
|
24
|
+
it { @djcprss92.channel.send(att).should_not == false}
|
27
25
|
it { @oa.channel.send(att).should_not == false}
|
28
26
|
it { @delicious.channel.send(att).should_not == false}
|
29
27
|
it { @zotero.channel.send(att).should_not == false}
|
28
|
+
it { @feedburner.channel.send(att).should_not == false}
|
30
29
|
end
|
31
30
|
|
32
31
|
it "should have the correct title" do
|
33
32
|
@docatom.channel.title.should == 'Doc Searls Weblog'
|
34
33
|
@kpgatom.channel.title.should == 'Katana Photo Groups: (Latest Updates)'
|
35
34
|
@djcprss2.channel.title.should == 'Dan Collis-Puro'
|
35
|
+
@djcprss92.channel.title.should == 'Dan Collis-Puro'
|
36
36
|
@oa.channel.title.should == 'Connotea: petersuber\'s bookmarks matching tag oa.africa'
|
37
37
|
@delicious.channel.title.should == 'Delicious/djcp'
|
38
38
|
@zotero.channel.title.should == 'Zotero / PROS Paper Group / Items'
|
39
|
+
@feedburner.channel.title.should == 'CNN.com'
|
39
40
|
end
|
40
41
|
|
41
42
|
it "should have the correct subtitle and description" do
|
@@ -48,6 +49,9 @@ module FeedAbstract
|
|
48
49
|
@djcprss2.channel.subtitle.should == 'Tech. Open Source. Stuff that doesn\'t suck.'
|
49
50
|
@djcprss2.channel.description.should == 'Tech. Open Source. Stuff that doesn\'t suck.'
|
50
51
|
|
52
|
+
@djcprss92.channel.subtitle.should == 'Tech. Open Source. Stuff that doesn\'t suck.'
|
53
|
+
@djcprss92.channel.description.should == 'Tech. Open Source. Stuff that doesn\'t suck.'
|
54
|
+
|
51
55
|
@oa.channel.description.should == 'Connotea: petersuber\'s bookmarks matching tag oa.africa'
|
52
56
|
@oa.channel.subtitle.should == 'Connotea: petersuber\'s bookmarks matching tag oa.africa'
|
53
57
|
|
@@ -56,42 +60,62 @@ module FeedAbstract
|
|
56
60
|
|
57
61
|
@zotero.channel.subtitle.should == ''
|
58
62
|
@zotero.channel.description.should == ''
|
63
|
+
|
64
|
+
@feedburner.channel.description.should == 'CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.'
|
65
|
+
@feedburner.channel.subtitle.should == 'CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.'
|
59
66
|
end
|
60
67
|
|
61
68
|
it "should have the correct link" do
|
62
69
|
@docatom.channel.link.should == 'http://blogs.law.harvard.edu/doc'
|
63
70
|
@kpgatom.channel.link.should == 'http://www.katanapg.com/latest'
|
64
71
|
@djcprss2.channel.link.should == 'http://blogs.law.harvard.edu/djcp'
|
65
|
-
|
72
|
+
@djcprss92.channel.link.should == 'http://blogs.law.harvard.edu/djcp'
|
66
73
|
@oa.channel.link.should == 'http://www.connotea.org/user/petersuber/tag/oa.africa'
|
67
74
|
@delicious.channel.link.should == 'http://www.delicious.com/djcp'
|
68
|
-
|
69
75
|
@zotero.channel.link.should == 'https://api.zotero.org/groups/52650/items'
|
76
|
+
@feedburner.channel.link.should == 'http://www.cnn.com/?eref=rss_topstories'
|
70
77
|
end
|
71
78
|
|
72
79
|
it "should have the correct generator" do
|
73
80
|
@docatom.channel.generator.should == 'WordPress'
|
74
81
|
@kpgatom.channel.generator.should == ''
|
75
82
|
@djcprss2.channel.generator.should == 'WordPress'
|
83
|
+
@djcprss92.channel.generator.should == ''
|
76
84
|
@oa.channel.generator.should == 'Connotea'
|
77
85
|
@delicious.channel.generator.should == 'Delicious'
|
78
86
|
@zotero.channel.generator.should == 'Zotero'
|
87
|
+
@feedburner.channel.generator.should == ''
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should have the correct language" do
|
91
|
+
@docatom.channel.language.should == 'en'
|
92
|
+
@kpgatom.channel.language.should == ''
|
93
|
+
@djcprss2.channel.language.should == 'en'
|
94
|
+
@djcprss92.channel.language.should == 'en'
|
95
|
+
@oa.channel.language.should == ''
|
96
|
+
@delicious.channel.language.should == ''
|
97
|
+
@zotero.channel.language.should == ''
|
98
|
+
@feedburner.channel.language.should == 'en-us'
|
79
99
|
end
|
80
100
|
|
81
101
|
it "should have the correct authors" do
|
82
102
|
@docatom.channel.authors.should == ['Doc Searls']
|
83
103
|
@kpgatom.channel.authors.should == ['Nick Pappas']
|
84
104
|
@djcprss2.channel.authors.should == ['DJCP']
|
105
|
+
@djcprss92.channel.authors.should == []
|
85
106
|
@oa.channel.authors.should == []
|
86
107
|
@delicious.channel.authors.should == []
|
87
108
|
@zotero.channel.authors.should == []
|
109
|
+
@feedburner.channel.authors.should == []
|
88
110
|
|
89
111
|
@docatom.channel.author.should == 'Doc Searls'
|
90
112
|
@kpgatom.channel.author.should == 'Nick Pappas'
|
91
113
|
@djcprss2.channel.author.should == 'DJCP'
|
114
|
+
@djcprss92.channel.author.should == ''
|
92
115
|
@oa.channel.author.should == ''
|
93
116
|
@delicious.channel.author.should == ''
|
94
117
|
@zotero.channel.author.should == ''
|
118
|
+
@feedburner.channel.author.should == ''
|
95
119
|
|
96
120
|
end
|
97
121
|
|
@@ -99,62 +123,75 @@ module FeedAbstract
|
|
99
123
|
@docatom.channel.categories.should == []
|
100
124
|
@kpgatom.channel.categories.should == ['photos']
|
101
125
|
@djcprss2.channel.categories.should == ['Tech','Open Source','oa.africa','oa.test']
|
126
|
+
@djcprss92.channel.categories.should == []
|
102
127
|
@oa.channel.categories.should == ['oa.africa','oa.test']
|
103
128
|
@delicious.channel.categories.should == []
|
104
129
|
@zotero.channel.categories.should == []
|
130
|
+
@feedburner.channel.categories.should == []
|
105
131
|
|
106
132
|
@docatom.channel.category.should == ''
|
107
133
|
@kpgatom.channel.category.should == 'photos'
|
108
134
|
@djcprss2.channel.category.should == 'Tech, Open Source'
|
135
|
+
@djcprss92.channel.category.should == ''
|
109
136
|
@oa.channel.category.should == 'oa.africa, oa.test'
|
110
137
|
@delicious.channel.category.should == ''
|
111
138
|
@zotero.channel.category.should == ''
|
139
|
+
@feedburner.channel.category.should == ''
|
112
140
|
end
|
113
141
|
|
114
142
|
it "should have the correct icon" do
|
115
143
|
@docatom.channel.icon.should == ''
|
116
144
|
@kpgatom.channel.icon.should == '/favicon.ico'
|
117
145
|
@djcprss2.channel.icon.should == '/foobar.gif'
|
146
|
+
@djcprss92.channel.icon.should == ''
|
118
147
|
@oa.channel.icon.should == 'http://example.com/image.gif'
|
119
148
|
@delicious.channel.icon.should == ''
|
120
149
|
@zotero.channel.icon.should == ''
|
150
|
+
@feedburner.channel.icon.should == 'http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif'
|
121
151
|
end
|
122
152
|
|
123
153
|
it "should have the correct logo" do
|
124
154
|
@docatom.channel.logo.should == ''
|
125
155
|
@kpgatom.channel.logo.should == '/images/rss.gif'
|
126
156
|
@djcprss2.channel.logo.should == '/foobar.gif'
|
157
|
+
@djcprss92.channel.logo.should == ''
|
127
158
|
@oa.channel.logo.should == 'http://example.com/image.gif'
|
128
159
|
@delicious.channel.logo.should == ''
|
129
160
|
@zotero.channel.logo.should == ''
|
161
|
+
@feedburner.channel.logo.should == 'http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif'
|
130
162
|
end
|
131
163
|
|
132
164
|
it "should have the correct rights" do
|
133
165
|
@docatom.channel.rights.should == ''
|
134
166
|
@kpgatom.channel.rights.should == ''
|
135
167
|
@djcprss2.channel.rights.should == '2011 DJCP'
|
168
|
+
@djcprss92.channel.rights.should == ''
|
136
169
|
@oa.channel.rights.should == 'Connotea 2011'
|
137
170
|
@delicious.channel.rights.should == ''
|
138
171
|
@zotero.channel.rights.should == ''
|
172
|
+
@feedburner.channel.rights.should == ' 2011 Cable News Network LP, LLLP.'
|
139
173
|
end
|
140
174
|
|
141
175
|
it "should have the correct updated value" do
|
142
176
|
@docatom.channel.updated.should == Time.parse('2011-07-29 12:33:29 UTC')
|
143
177
|
@kpgatom.channel.updated.should == Time.parse('2011-08-24 23:59:40 -0400')
|
144
178
|
@djcprss2.channel.updated.should == Time.parse('Tue, 02 Aug 2011 01:05:26 +0000')
|
179
|
+
@djcprss92.channel.updated.should == Time.parse('Sat, 03 Sep 2011 01:16:50 +0000')
|
145
180
|
@oa.channel.updated.should == Time.parse('2011-09-01T08:07:21Z')
|
146
181
|
@delicious.channel.updated.should == ''
|
147
182
|
@zotero.channel.updated.should == Time.parse('2011-09-02T17:16:11Z')
|
183
|
+
@feedburner.channel.updated.should == Time.parse('Sat, 03 Sep 2011 16:14:16 EDT')
|
148
184
|
end
|
149
185
|
|
150
186
|
it "should have the correct guid" do
|
151
187
|
@docatom.channel.guid.should == 'http://blogs.law.harvard.edu/doc/feed/atom/'
|
152
188
|
@kpgatom.channel.guid.should == 'urn:uuid:www.katanapg.com-latest-xml'
|
153
|
-
|
154
189
|
@djcprss2.channel.guid.should == 'http://blogs.law.harvard.edu/djcp'
|
190
|
+
@djcprss92.channel.guid.should == 'http://blogs.law.harvard.edu/djcp'
|
155
191
|
@oa.channel.guid.should == 'http://www.connotea.org/user/petersuber/tag/oa.africa'
|
156
192
|
@delicious.channel.guid.should == 'http://www.delicious.com/djcp'
|
157
193
|
@zotero.channel.guid.should == 'http://zotero.org/groups/52650/items'
|
194
|
+
@feedburner.channel.guid.should == 'http://www.cnn.com/?eref=rss_topstories'
|
158
195
|
end
|
159
196
|
end
|
160
197
|
end
|
@@ -5,39 +5,21 @@ module FeedAbstract
|
|
5
5
|
|
6
6
|
describe Item do
|
7
7
|
before(:all) do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@kpgatom = Feed.new(File.read('spec/test_data/katanapg.atom'))
|
12
|
-
@kpgatomitem = @kpgatom.items.first
|
13
|
-
|
14
|
-
@djcprss2 = Feed.new(File.read('spec/test_data/djcp.rss'))
|
15
|
-
@djcprss2item = @djcprss2.items.first
|
16
|
-
|
17
|
-
@oa = Feed.new(File.read('spec/test_data/oa.africa.rss'))
|
18
|
-
@oaitem = @oa.items.first
|
19
|
-
|
20
|
-
@delicious = Feed.new(File.read('spec/test_data/djcp_delicious.rss'))
|
21
|
-
@deliciousitem = @delicious.items.first
|
22
|
-
|
23
|
-
@zotero = Feed.new(File.read('spec/test_data/zotero.rss'))
|
24
|
-
@zoteroitem = @zotero.items.first
|
8
|
+
instantiate_feeds
|
9
|
+
instantiate_example_items
|
25
10
|
end
|
26
11
|
|
27
|
-
|
28
|
-
it { @docatomitem.should respond_to att}
|
29
|
-
it { @kpgatomitem.should respond_to att}
|
30
|
-
it { @djcprss2item.should respond_to att}
|
31
|
-
it { @oaitem.should respond_to att}
|
32
|
-
it { @deliciousitem.should respond_to att}
|
33
|
-
it { @zoteroitem.should respond_to att}
|
12
|
+
it{@docatom.should respond_to :items}
|
34
13
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
14
|
+
it "responds to all attributes without causing an error" do
|
15
|
+
@all_feeds.each do |feed|
|
16
|
+
[:title, :summary, :content, :link, :authors, :author, :contributor, :contributors, :categories, :category, :rights, :updated, :guid, :published].each do|att|
|
17
|
+
feed.items.each do|item|
|
18
|
+
item.should respond_to att
|
19
|
+
item.send(att).should_not == false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
41
23
|
end
|
42
24
|
|
43
25
|
it "should have the correct title" do
|
@@ -47,6 +29,7 @@ module FeedAbstract
|
|
47
29
|
@oaitem.title.should == 'Mali doctoral students learn about access to e-resources | EIFL'
|
48
30
|
@deliciousitem.title.should == 'aspic and other delights'
|
49
31
|
@zoteroitem.title.should == 'An experimental application of the Delphi method to the use of experts'
|
32
|
+
@feedburneritem.title.should == 'Did Libya help CIA with renditions of terror suspects?'
|
50
33
|
end
|
51
34
|
|
52
35
|
it "should have the correct summary" do
|
@@ -58,6 +41,9 @@ module FeedAbstract
|
|
58
41
|
@oaitem.summary.should == %q|""On August 13, 2011, Consortium Malien des Bibliothèques (COMBI) organized a workshop on access and use of e-resources (both commercial and open access)....There was a special focus on resources made freely available through EIFL for Malian institutions and also on the various international initiatives working to improve access to scientific information in Mali. Digital libraries and portals for open access journals were also demonstrated...."" Posted by petersuber to oa.notes ru.no oa.event oa.africa oa.new on Thu Aug 18 2011|
|
59
42
|
@deliciousitem.summary.should == ''
|
60
43
|
@zoteroitem.summary.should == ''
|
44
|
+
@feedburneritem.summary.should == %q|Documents seized at Libyan intelligence headquarters have unearthed insights into the CIA's surprisingly close relationship with counterparts in the Gadhafi regime.<div class="feedflare">
|
45
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sV5N-C76mOM:9JZ1FBt9fS4:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sV5N-C76mOM:9JZ1FBt9fS4:gIN9vFwOqvQ" border="0"></img></a>
|
46
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sV5N-C76mOM" height="1" width="1"/>|
|
61
47
|
end
|
62
48
|
|
63
49
|
it "should have the correct content" do
|
@@ -68,7 +54,6 @@ module FeedAbstract
|
|
68
54
|
<p>A couple months back I <a href="http://www.youtube.com/watch?v=4dn1jkWgFvM&feature=youtu.be">gave a talk</a> at the <a href="http://personaldemocracy.com/">Personal Democracy Forum</a> where I was warmly introduced as one of those elders we should all listen to. That was nice, but here’s the strange part: when it comes to what I do in the world, I’m still young. Most of the people I hang and work with are half my age or less, yet I rarely notice or think about that, because it’s irrelevant. My job is changing the world, and that’s an calling that tends to involve smart, young, energetic people. The difference with a few of us is that we’ve been young a lot longer.</p>
|
69
55
|
<p>But I don’t have illusions about the facts of life. It’s in one’s sixties that the croak rate starts to angle north on the Y axis as age ticks east on the X. Still, I’m in no less hurry to make things happen than I ever was. I’m just more patient. That’s because one of the things I’ve learned is that now is always earlier than it seems. None of the future has happened yet, and it’s always bigger than the past.</p>
|
70
56
|
|
|
71
|
-
|
72
57
|
@kpgatomitem.content.should == %q|<div xmlns="http://www.w3.org/1999/xhtml">
|
73
58
|
<img src="http://misuzu.katanapg.com/62/1134022551906b98/thumb.jpg"/>
|
74
59
|
</div>|
|
@@ -107,6 +92,7 @@ module FeedAbstract
|
|
107
92
|
</tr>
|
108
93
|
</table>
|
109
94
|
</div>|
|
95
|
+
@feedburneritem.content.should == ''
|
110
96
|
end
|
111
97
|
|
112
98
|
it "should have the correct link" do
|
@@ -116,6 +102,7 @@ module FeedAbstract
|
|
116
102
|
@oaitem.link.should == 'http://www.eifl.net/news/mali-doctoral-students-learn-about-access-e-r'
|
117
103
|
@deliciousitem.link.should == 'http://aspicandotherdelights.tumblr.com/'
|
118
104
|
@zoteroitem.link.should == 'https://api.zotero.org/groups/52650/items/FHDJ5PXZ'
|
105
|
+
@feedburneritem.link.should == 'http://rss.cnn.com/~r/rss/cnn_topstories/~3/sV5N-C76mOM/index.html'
|
119
106
|
end
|
120
107
|
|
121
108
|
it "should have the correct author" do
|
@@ -125,6 +112,7 @@ module FeedAbstract
|
|
125
112
|
@oaitem.author.should == 'petersuber'
|
126
113
|
@deliciousitem.author.should == 'djcp'
|
127
114
|
@zoteroitem.author.should == 'ingle.atul'
|
115
|
+
@feedburneritem.author.should == ''
|
128
116
|
end
|
129
117
|
|
130
118
|
it "should have the correct authors" do
|
@@ -134,6 +122,7 @@ module FeedAbstract
|
|
134
122
|
@oaitem.authors.should == ['petersuber']
|
135
123
|
@deliciousitem.authors.should == ['djcp']
|
136
124
|
@zoteroitem.authors.should == ['ingle.atul']
|
125
|
+
@feedburneritem.authors.should == []
|
137
126
|
end
|
138
127
|
|
139
128
|
it "should have the correct contributor" do
|
@@ -143,6 +132,7 @@ module FeedAbstract
|
|
143
132
|
@oaitem.contributor.should == ''
|
144
133
|
@deliciousitem.contributor.should == ''
|
145
134
|
@zoteroitem.contributor.should == ''
|
135
|
+
@feedburneritem.contributor.should == ''
|
146
136
|
end
|
147
137
|
|
148
138
|
it "should have the correct contributors" do
|
@@ -152,6 +142,7 @@ module FeedAbstract
|
|
152
142
|
@oaitem.contributors.should == []
|
153
143
|
@deliciousitem.contributors.should == []
|
154
144
|
@zoteroitem.contributors.should == []
|
145
|
+
@feedburneritem.contributors.should == []
|
155
146
|
end
|
156
147
|
|
157
148
|
it "should have the correct category" do
|
@@ -161,6 +152,7 @@ module FeedAbstract
|
|
161
152
|
@oaitem.category.should == 'oa.notes, ru.no, oa.event, oa.africa, oa.new'
|
162
153
|
@deliciousitem.category.should == 'cooking, oddness'
|
163
154
|
@zoteroitem.category.should == ''
|
155
|
+
@feedburneritem.category.should == ''
|
164
156
|
end
|
165
157
|
|
166
158
|
it "should have the correct categories" do
|
@@ -170,6 +162,7 @@ module FeedAbstract
|
|
170
162
|
@oaitem.categories.should == ["oa.notes", "ru.no", "oa.event", "oa.africa", "oa.new"]
|
171
163
|
@deliciousitem.categories.should == ['cooking', 'oddness']
|
172
164
|
@zoteroitem.categories.should == []
|
165
|
+
@feedburneritem.categories.should == []
|
173
166
|
end
|
174
167
|
|
175
168
|
it "should have the correct rights" do
|
@@ -179,6 +172,7 @@ module FeedAbstract
|
|
179
172
|
@oaitem.rights.should == ''
|
180
173
|
@deliciousitem.rights.should == ''
|
181
174
|
@zoteroitem.rights.should == ''
|
175
|
+
@feedburneritem.rights.should == ''
|
182
176
|
end
|
183
177
|
|
184
178
|
it "should have been updated at the correct time" do
|
@@ -188,6 +182,7 @@ module FeedAbstract
|
|
188
182
|
@oaitem.updated.should == Time.parse('2011-08-18T21:14:38Z')
|
189
183
|
@deliciousitem.updated.should == Time.parse('Fri, 19 Aug 2011 00:56:26 +0000')
|
190
184
|
@zoteroitem.updated.should == Time.parse('2011-09-02T17:16:11Z')
|
185
|
+
@feedburneritem.updated.should == Time.parse('Sat, 03 Sep 2011 16:11:39 EDT')
|
191
186
|
end
|
192
187
|
|
193
188
|
it "should have been published at the proper time" do
|
@@ -197,6 +192,7 @@ module FeedAbstract
|
|
197
192
|
@oaitem.published.should == Time.parse('2011-08-18T21:14:38Z')
|
198
193
|
@deliciousitem.published.should == Time.parse('Fri, 19 Aug 2011 00:56:26 +0000')
|
199
194
|
@zoteroitem.published.should == Time.parse('2011-09-02T17:14:22Z')
|
195
|
+
@feedburneritem.published.should == Time.parse('Sat, 03 Sep 2011 16:11:39 EDT')
|
200
196
|
end
|
201
197
|
|
202
198
|
it "should have the proper guid" do
|
@@ -206,6 +202,7 @@ module FeedAbstract
|
|
206
202
|
@oaitem.guid.should == 'http://www.connotea.org/user/petersuber/uri/924b97cee02e01888a93473ca6752213'
|
207
203
|
@deliciousitem.guid.should == 'http://www.delicious.com/url/6e0504ca698232809a0b5065e8b83031#djcp'
|
208
204
|
@zoteroitem.guid.should == 'http://zotero.org/groups/pros_paper/items/FHDJ5PXZ'
|
205
|
+
@feedburneritem.guid.should == 'http://www.cnn.com/2011/WORLD/africa/09/03/libya.west.spies/index.html?eref=rss_topstories'
|
209
206
|
end
|
210
207
|
|
211
208
|
end
|
data/spec/feed_abstract_spec.rb
CHANGED
@@ -4,25 +4,33 @@ require 'spec_helper'
|
|
4
4
|
module FeedAbstract
|
5
5
|
|
6
6
|
describe Feed do
|
7
|
+
before(:all) do
|
8
|
+
instantiate_feeds
|
9
|
+
end
|
7
10
|
|
8
11
|
it "should be able to instantiate" do
|
9
12
|
Feed.respond_to?(:new).should == true
|
10
13
|
end
|
11
14
|
|
12
15
|
it "should recognize atom feeds properly" do
|
13
|
-
|
14
|
-
|
16
|
+
@docatom.channel.class.should == Channel::Atom
|
17
|
+
@kpgatom.channel.class.should == Channel::Atom
|
15
18
|
end
|
16
19
|
|
17
20
|
it "should recognize rss feeds properly" do
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
+
@djcprss2.channel.class.should == Channel::RSS
|
22
|
+
@djcprss92.channel.class.should == Channel::RSS
|
23
|
+
@delicious.channel.class.should == Channel::RSS
|
21
24
|
end
|
22
25
|
|
23
26
|
it "should recognize rdf feeds properly" do
|
24
|
-
|
25
|
-
|
27
|
+
@oa.channel.class.should == Channel::RDF
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should have items" do
|
31
|
+
@all_feeds.each do|feed|
|
32
|
+
feed.should respond_to :items
|
33
|
+
end
|
26
34
|
end
|
27
35
|
|
28
36
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,27 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
$:.unshift File.dirname(__FILE__) + '/../lib'
|
2
4
|
require 'feed-abstract'
|
5
|
+
|
6
|
+
def instantiate_feeds
|
7
|
+
@docatom = FeedAbstract::Feed.new(File.open('spec/test_data/doc.atom'))
|
8
|
+
@kpgatom = FeedAbstract::Feed.new(File.open('spec/test_data/katanapg.atom'))
|
9
|
+
@djcprss2 = FeedAbstract::Feed.new(File.open('spec/test_data/djcp.rss'))
|
10
|
+
@djcprss92 = FeedAbstract::Feed.new(File.open('spec/test_data/djcp.rss92'))
|
11
|
+
@oa = FeedAbstract::Feed.new(File.open('spec/test_data/oa.africa.rss'))
|
12
|
+
@delicious = FeedAbstract::Feed.new(File.open('spec/test_data/djcp_delicious.rss'))
|
13
|
+
@zotero = FeedAbstract::Feed.new(File.open('spec/test_data/zotero.rss'))
|
14
|
+
@feedburner = FeedAbstract::Feed.new(File.open('spec/test_data/feedburner.rss'))
|
15
|
+
|
16
|
+
@all_feeds = [@docatom, @kpgatom, @djcprss2, @djcprss92, @oa, @delicious, @zotero, @feedburner]
|
17
|
+
end
|
18
|
+
|
19
|
+
def instantiate_example_items
|
20
|
+
@docatomitem = @docatom.items.first
|
21
|
+
@kpgatomitem = @kpgatom.items.first
|
22
|
+
@djcprss2item = @djcprss2.items.first
|
23
|
+
@oaitem = @oa.items.first
|
24
|
+
@deliciousitem = @delicious.items.first
|
25
|
+
@zoteroitem = @zotero.items.first
|
26
|
+
@feedburneritem = @feedburner.items.first
|
27
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
|
2
|
+
<channel>
|
3
|
+
<title>Dan Collis-Puro</title>
|
4
|
+
<link>http://blogs.law.harvard.edu/djcp</link>
|
5
|
+
<description>Tech. Open Source. Stuff that doesn't suck.</description>
|
6
|
+
<lastBuildDate>Sat, 03 Sep 2011 01:16:50 +0000</lastBuildDate>
|
7
|
+
<docs>http://backend.userland.com/rss092</docs>
|
8
|
+
<language>en</language>
|
9
|
+
<!-- generator="WordPress/3.2.1" -->
|
10
|
+
|
11
|
+
<item>
|
12
|
+
<title>S1:E10 – Hide and “Q”</title>
|
13
|
+
<description><![CDATA[“Q is annoying. I thought Riker was going crazy after getting the powers at the beginning, but Picard make him feel like an idiot. Troi’s not in this.” TNG watches TNG – an ongoing series where my 11 year old … <a href="http://blogs.law.harvard.edu/djcp/2011/09/s1e10-hide-and-q/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
14
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/09/s1e10-hide-and-q/</link>
|
15
|
+
</item>
|
16
|
+
<item>
|
17
|
+
<title>S1:E8 – The Battle</title>
|
18
|
+
<description><![CDATA[“I thought he was going to hurt himself. The Ferengi are mean, but the Ferengi first officer was good because he didn’t leave the bad guy that wanted revenge in command. Wesley was funny when he said “Adults!”" TNG watches … <a href="http://blogs.law.harvard.edu/djcp/2011/08/s1e8-the-battle/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
19
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/08/s1e8-the-battle/</link>
|
20
|
+
</item>
|
21
|
+
<item>
|
22
|
+
<title>S1:E7 – Justice</title>
|
23
|
+
<description><![CDATA[“Everybody’s blonde – they’re all way too happy. I bet it will all be an animation. I bet that ship is making the whole planet. It’s sucking all the data out – of Data. They wear weird clothes. Eww. So … <a href="http://blogs.law.harvard.edu/djcp/2011/08/s1e7-justice/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
24
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/08/s1e7-justice/</link>
|
25
|
+
</item>
|
26
|
+
<item>
|
27
|
+
<title>S1:E6 – Lonely Among Us</title>
|
28
|
+
<description><![CDATA[“It’s an evil power that’s making her want to control the bridge! The ones that had beards ate raw animals – that was gross.” TNG watches TNG – an ongoing series where my almost 11 year old daughter discovers Star … <a href="http://blogs.law.harvard.edu/djcp/2011/08/s1e6-lonely-among-us/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
29
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/08/s1e6-lonely-among-us/</link>
|
30
|
+
</item>
|
31
|
+
<item>
|
32
|
+
<title>S1:E5 – Where No One Has Gone Before</title>
|
33
|
+
<description><![CDATA[“Riker and Troi are friends! The intro to the show takes too long. I like Wesley, even though he’s a nerd. He’s a know-it-all but I like him. Referring to Kosinki, the warp-drive “consultant”: Self-confident, self-satisifed pig! I like the part … <a href="http://blogs.law.harvard.edu/djcp/2011/07/s1e5-where-no-one-has-gone-before/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
34
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/07/s1e5-where-no-one-has-gone-before/</link>
|
35
|
+
</item>
|
36
|
+
<item>
|
37
|
+
<title>S1:E4 – The Last Outpost</title>
|
38
|
+
<description><![CDATA[“It’s good because it says you shouldn’t battle each other. Commander Riker is pretty cool in this one. The Ferengi are sort of dumb and mean. Data is really funny when he gets his fingers caught in the Chinese finger … <a href="http://blogs.law.harvard.edu/djcp/2011/07/s1e4-the-last-outpost/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
39
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/07/s1e4-the-last-outpost/</link>
|
40
|
+
</item>
|
41
|
+
<item>
|
42
|
+
<title>S1:E3 – Code of Honor</title>
|
43
|
+
<description><![CDATA[“Good story, I don’t remember too much. Lieutenant Yar shows how awesome she is.” TNG watches TNG – an ongoing series where my almost 11 year old daughter discovers Star Trek.]]></description>
|
44
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/07/s1e3-code-of-honor/</link>
|
45
|
+
</item>
|
46
|
+
<item>
|
47
|
+
<title>S1:E2 – The Naked Now</title>
|
48
|
+
<description><![CDATA[“This one sorta creeped me out. It was really weird. Most of them got cuckoo, the Doctor fell in love with the Captain. They get drunk, and even Wes! He takes over the ship, and Riker doesn’t get drunk, he … <a href="http://blogs.law.harvard.edu/djcp/2011/07/s1e2-the-naked-now/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
49
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/07/s1e2-the-naked-now/</link>
|
50
|
+
</item>
|
51
|
+
<item>
|
52
|
+
<title>S1:E1 – Encounter at Farpoint</title>
|
53
|
+
<description><![CDATA[“It has a nice ending. It sorta said SOME true stuff about people, but we’re a little more advanced than Q thinks we are. This show is weird – at the end, they figure out that the people in Farpoint … <a href="http://blogs.law.harvard.edu/djcp/2011/07/s1e1-encounter-at-farpoint/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
54
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/07/s1e1-encounter-at-farpoint/</link>
|
55
|
+
</item>
|
56
|
+
<item>
|
57
|
+
<title>TNG watches TNG</title>
|
58
|
+
<description><![CDATA[My daughter knows NOTHING about Star Trek – she’s never seen an episode, doesn’t know what a Klingon or a Vulcan is. She does have the ability to enjoy large, complicated storylines as evidenced by her love of LoTR, Harry … <a href="http://blogs.law.harvard.edu/djcp/2011/07/tng-watches-tng/">Continue reading <span class="meta-nav">→</span></a>]]></description>
|
59
|
+
<link>http://blogs.law.harvard.edu/djcp/2011/07/tng-watches-tng/</link>
|
60
|
+
</item>
|
61
|
+
</channel>
|
62
|
+
</rss>
|
@@ -0,0 +1,108 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://rss.cnn.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel>
|
3
|
+
<title>CNN.com</title>
|
4
|
+
<link>http://www.cnn.com/?eref=rss_topstories</link>
|
5
|
+
<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
|
6
|
+
<language>en-us</language>
|
7
|
+
<copyright>� 2011 Cable News Network LP, LLLP.</copyright>
|
8
|
+
<pubDate>Sat, 03 Sep 2011 16:14:16 EDT</pubDate>
|
9
|
+
<ttl>5</ttl>
|
10
|
+
<image>
|
11
|
+
<title>CNN.com</title>
|
12
|
+
<link>http://www.cnn.com/?eref=rss_topstories</link>
|
13
|
+
<url>http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif</url>
|
14
|
+
<width>144</width>
|
15
|
+
<height>33</height>
|
16
|
+
<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
|
17
|
+
</image>
|
18
|
+
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://rss.cnn.com/rss/cnn_topstories" /><feedburner:info uri="rss/cnn_topstories" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://rss.cnn.com/rss/cnn_topstories?format=skin</thespringbox:skin><item>
|
19
|
+
<title>Did Libya help CIA with renditions of terror suspects?</title>
|
20
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/WORLD/africa/09/03/libya.west.spies/index.html?eref=rss_topstories</guid>
|
21
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/sV5N-C76mOM/index.html</link>
|
22
|
+
<description>Documents seized at Libyan intelligence headquarters have unearthed insights into the CIA's surprisingly close relationship with counterparts in the Gadhafi regime.<div class="feedflare">
|
23
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sV5N-C76mOM:9JZ1FBt9fS4:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sV5N-C76mOM:9JZ1FBt9fS4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sV5N-C76mOM:9JZ1FBt9fS4:gIN9vFwOqvQ" border="0"></img></a>
|
24
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sV5N-C76mOM" height="1" width="1"/></description>
|
25
|
+
<pubDate>Sat, 03 Sep 2011 16:11:39 EDT</pubDate>
|
26
|
+
<feedburner:origLink>http://www.cnn.com/2011/WORLD/africa/09/03/libya.west.spies/index.html?eref=rss_topstories</feedburner:origLink></item>
|
27
|
+
<item>
|
28
|
+
<title>Tropical storm hovers off Gulf Coast</title>
|
29
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/US/09/03/tropical.weather.gulf/index.html?eref=rss_topstories</guid>
|
30
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/YHu7oeSim2g/index.html</link>
|
31
|
+
<description>The slow-moving rainmaker is expected to dump 8 to 10 inches on New Orleans. Forecasters warn that "a few tornadoes will be possible" along the Gulf Coast.<div class="feedflare">
|
32
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=YHu7oeSim2g:x-PiCXe0iz0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=YHu7oeSim2g:x-PiCXe0iz0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=YHu7oeSim2g:x-PiCXe0iz0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=YHu7oeSim2g:x-PiCXe0iz0:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=YHu7oeSim2g:x-PiCXe0iz0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=YHu7oeSim2g:x-PiCXe0iz0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=YHu7oeSim2g:x-PiCXe0iz0:gIN9vFwOqvQ" border="0"></img></a>
|
33
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/YHu7oeSim2g" height="1" width="1"/></description>
|
34
|
+
<pubDate>Sat, 03 Sep 2011 12:41:40 EDT</pubDate>
|
35
|
+
<feedburner:origLink>http://www.cnn.com/2011/US/09/03/tropical.weather.gulf/index.html?eref=rss_topstories</feedburner:origLink></item>
|
36
|
+
<item>
|
37
|
+
<title>Katia a hurricane, again</title>
|
38
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/WORLD/americas/09/02/atlantic.katia.alert/index.html?eref=rss_topstories</guid>
|
39
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/S0QQre3az4o/index.html</link>
|
40
|
+
<description>The storm named Katia has become a hurricane again in the Atlantic, the National Hurricane Center said Friday. It had briefly weakened into a tropical storm but has since regained strength, the center said.<div class="feedflare">
|
41
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=S0QQre3az4o:zqdMwUmJU00:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=S0QQre3az4o:zqdMwUmJU00:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=S0QQre3az4o:zqdMwUmJU00:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=S0QQre3az4o:zqdMwUmJU00:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=S0QQre3az4o:zqdMwUmJU00:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=S0QQre3az4o:zqdMwUmJU00:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=S0QQre3az4o:zqdMwUmJU00:gIN9vFwOqvQ" border="0"></img></a>
|
42
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/S0QQre3az4o" height="1" width="1"/></description>
|
43
|
+
<pubDate>Sat, 03 Sep 2011 10:15:32 EDT</pubDate>
|
44
|
+
<feedburner:origLink>http://www.cnn.com/2011/WORLD/americas/09/02/atlantic.katia.alert/index.html?eref=rss_topstories</feedburner:origLink></item>
|
45
|
+
<item>
|
46
|
+
<title>Vatican rejects criticism by Ireland</title>
|
47
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/WORLD/europe/09/03/vatican.ireland.abuse/index.html?eref=rss_topstories</guid>
|
48
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/sPJoliU4n1Y/index.html</link>
|
49
|
+
<description>The Vatican has rejected criticism that church leaders sought to cover up extensive abuse of young people by priests in Ireland, in a lengthy statement sent to the Irish government Saturday.<div class="feedflare">
|
50
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPJoliU4n1Y:Fg0IxcgfVXc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPJoliU4n1Y:Fg0IxcgfVXc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPJoliU4n1Y:Fg0IxcgfVXc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sPJoliU4n1Y:Fg0IxcgfVXc:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPJoliU4n1Y:Fg0IxcgfVXc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPJoliU4n1Y:Fg0IxcgfVXc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sPJoliU4n1Y:Fg0IxcgfVXc:gIN9vFwOqvQ" border="0"></img></a>
|
51
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sPJoliU4n1Y" height="1" width="1"/></description>
|
52
|
+
<pubDate>Sat, 03 Sep 2011 10:41:12 EDT</pubDate>
|
53
|
+
<feedburner:origLink>http://www.cnn.com/2011/WORLD/europe/09/03/vatican.ireland.abuse/index.html?eref=rss_topstories</feedburner:origLink></item>
|
54
|
+
<item>
|
55
|
+
<title>Military plane goes missing in Chile</title>
|
56
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/WORLD/americas/09/02/chile.plane/index.html?eref=rss_topstories</guid>
|
57
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/v_9sR8IcXxY/index.html</link>
|
58
|
+
<description>A military plane with 21 people aboard went missing off Chile's Pacific coast near the Juan Fernandez islands, Chile's defense minister said on Friday.<div class="feedflare">
|
59
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=v_9sR8IcXxY:lnWtazcZt0I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=v_9sR8IcXxY:lnWtazcZt0I:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=v_9sR8IcXxY:lnWtazcZt0I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=v_9sR8IcXxY:lnWtazcZt0I:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=v_9sR8IcXxY:lnWtazcZt0I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=v_9sR8IcXxY:lnWtazcZt0I:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=v_9sR8IcXxY:lnWtazcZt0I:gIN9vFwOqvQ" border="0"></img></a>
|
60
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/v_9sR8IcXxY" height="1" width="1"/></description>
|
61
|
+
<pubDate>Sat, 03 Sep 2011 10:44:27 EDT</pubDate>
|
62
|
+
<feedburner:origLink>http://www.cnn.com/2011/WORLD/americas/09/02/chile.plane/index.html?eref=rss_topstories</feedburner:origLink></item>
|
63
|
+
<item>
|
64
|
+
<title>WikiLeaks puts out U.S. embassy cables</title>
|
65
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/WORLD/europe/09/02/us.wikileaks/index.html?eref=rss_topstories</guid>
|
66
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/fsqFTZM5poc/index.html</link>
|
67
|
+
<description>WikiLeaks threw open the doors Friday to its archive of more than a quarter million secret U.S. diplomatic cables, unfiltered and unedited, exposing and possibly endangering confidential diplomatic sources.<div class="feedflare">
|
68
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=fsqFTZM5poc:4NoqUQxI2fM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=fsqFTZM5poc:4NoqUQxI2fM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=fsqFTZM5poc:4NoqUQxI2fM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=fsqFTZM5poc:4NoqUQxI2fM:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=fsqFTZM5poc:4NoqUQxI2fM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=fsqFTZM5poc:4NoqUQxI2fM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=fsqFTZM5poc:4NoqUQxI2fM:gIN9vFwOqvQ" border="0"></img></a>
|
69
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/fsqFTZM5poc" height="1" width="1"/></description>
|
70
|
+
<pubDate>Fri, 02 Sep 2011 11:13:08 EDT</pubDate>
|
71
|
+
<feedburner:origLink>http://www.cnn.com/2011/WORLD/europe/09/02/us.wikileaks/index.html?eref=rss_topstories</feedburner:origLink></item>
|
72
|
+
<item>
|
73
|
+
<title>Police help Apple in search for iPhone</title>
|
74
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/TECH/mobile/09/02/iphone.5.prototype/index.html?eref=rss_topstories</guid>
|
75
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DwBJNaLCZF0/index.html</link>
|
76
|
+
<description>Police said they helped Apple investigators search a man's home here recently.<div class="feedflare">
|
77
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DwBJNaLCZF0:U6LymrChQ34:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DwBJNaLCZF0:U6LymrChQ34:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DwBJNaLCZF0:U6LymrChQ34:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DwBJNaLCZF0:U6LymrChQ34:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DwBJNaLCZF0:U6LymrChQ34:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DwBJNaLCZF0:U6LymrChQ34:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DwBJNaLCZF0:U6LymrChQ34:gIN9vFwOqvQ" border="0"></img></a>
|
78
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/DwBJNaLCZF0" height="1" width="1"/></description>
|
79
|
+
<pubDate>Sat, 03 Sep 2011 10:37:39 EDT</pubDate>
|
80
|
+
<feedburner:origLink>http://www.cnn.com/2011/TECH/mobile/09/02/iphone.5.prototype/index.html?eref=rss_topstories</feedburner:origLink></item>
|
81
|
+
<item>
|
82
|
+
<title>Goodwill rolls at 'Bama-Kent State game</title>
|
83
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/US/09/02/alabama.football.tornado/index.html?eref=rss_topstories</guid>
|
84
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/m2-BJEkCrZg/index.html</link>
|
85
|
+
<description>There are college football fans. And then there are University of Alabama football fans.<div class="feedflare">
|
86
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=m2-BJEkCrZg:qFGEeDMnNKw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=m2-BJEkCrZg:qFGEeDMnNKw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=m2-BJEkCrZg:qFGEeDMnNKw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=m2-BJEkCrZg:qFGEeDMnNKw:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=m2-BJEkCrZg:qFGEeDMnNKw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=m2-BJEkCrZg:qFGEeDMnNKw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=m2-BJEkCrZg:qFGEeDMnNKw:gIN9vFwOqvQ" border="0"></img></a>
|
87
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/m2-BJEkCrZg" height="1" width="1"/></description>
|
88
|
+
<pubDate>Sat, 03 Sep 2011 13:30:46 EDT</pubDate>
|
89
|
+
<feedburner:origLink>http://www.cnn.com/2011/US/09/02/alabama.football.tornado/index.html?eref=rss_topstories</feedburner:origLink></item>
|
90
|
+
<item>
|
91
|
+
<title>Apple's philanthropy needs a reboot</title>
|
92
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/OPINION/09/03/martin.cary.apple.charity/index.html?eref=rss_topstories</guid>
|
93
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/a024YgJrn7M/index.html</link>
|
94
|
+
<description>As newly crowned CEO Tim Cook gets used to his new role and the extraordinary power and pressure that it brings, many Apple fans will likely urge him to continue leading the company much as his famous, turtle-necked predecessor Steve Jobs did.<div class="feedflare">
|
95
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=a024YgJrn7M:RfWjapU4TZo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=a024YgJrn7M:RfWjapU4TZo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=a024YgJrn7M:RfWjapU4TZo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=a024YgJrn7M:RfWjapU4TZo:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=a024YgJrn7M:RfWjapU4TZo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=a024YgJrn7M:RfWjapU4TZo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=a024YgJrn7M:RfWjapU4TZo:gIN9vFwOqvQ" border="0"></img></a>
|
96
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/a024YgJrn7M" height="1" width="1"/></description>
|
97
|
+
<pubDate>Sat, 03 Sep 2011 13:50:56 EDT</pubDate>
|
98
|
+
<feedburner:origLink>http://www.cnn.com/2011/OPINION/09/03/martin.cary.apple.charity/index.html?eref=rss_topstories</feedburner:origLink></item>
|
99
|
+
<item>
|
100
|
+
<title>Angelou criticizes King inscription</title>
|
101
|
+
<guid isPermaLink="false">http://www.cnn.com/2011/US/09/03/maya.angelou.king.memorial/index.html?eref=rss_topstories</guid>
|
102
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/tmBtePJ7dbY/index.html</link>
|
103
|
+
<description>Celebrated poet and author Maya Angelou continued her criticism of the inscription etched on the Martin Luther King Jr. National Memorial, saying an edit of the civil rights leader's statement makes him appear arrogant.<div class="feedflare">
|
104
|
+
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=tmBtePJ7dbY:m5hFV2bU73Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=tmBtePJ7dbY:m5hFV2bU73Q:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=tmBtePJ7dbY:m5hFV2bU73Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=tmBtePJ7dbY:m5hFV2bU73Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=tmBtePJ7dbY:m5hFV2bU73Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=tmBtePJ7dbY:m5hFV2bU73Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=tmBtePJ7dbY:m5hFV2bU73Q:gIN9vFwOqvQ" border="0"></img></a>
|
105
|
+
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/tmBtePJ7dbY" height="1" width="1"/></description>
|
106
|
+
<pubDate>Sat, 03 Sep 2011 15:34:36 EDT</pubDate>
|
107
|
+
<feedburner:origLink>http://www.cnn.com/2011/US/09/03/maya.angelou.king.memorial/index.html?eref=rss_topstories</feedburner:origLink></item>
|
108
|
+
</channel></rss>
|
metadata
CHANGED
@@ -1,46 +1,41 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: feed-abstract
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
version: 0.0.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Daniel Collis-Puro
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-09-06 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rspec
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &72099580 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 2
|
30
|
-
- 6
|
31
|
-
version: "2.6"
|
18
|
+
requirements:
|
19
|
+
- - =
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.6'
|
32
22
|
type: :development
|
33
|
-
|
34
|
-
|
35
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *72099580
|
25
|
+
description: ! 'This library creates a common object graph for the RSS/Atom/RDF parsing
|
26
|
+
classes in the ruby standard library. This allows you parse different feed formats
|
27
|
+
and get back the same (or at least a very similar) set of results - item authors
|
28
|
+
are accessible under an "author(s)" attribute, categories/tags/subjects are accessible
|
29
|
+
under "category(ies)" attributes, etc. We do our best to make sure the data makes
|
30
|
+
sense, too - RSS items lack an "updated" attribute, so we use "pubDate" to populate
|
31
|
+
it. '
|
32
|
+
email:
|
36
33
|
- djcp@cyber.law.harvard.edu
|
37
34
|
executables: []
|
38
|
-
|
39
35
|
extensions: []
|
40
|
-
|
41
|
-
extra_rdoc_files:
|
36
|
+
extra_rdoc_files:
|
42
37
|
- README.rdoc
|
43
|
-
files:
|
38
|
+
files:
|
44
39
|
- .gitignore
|
45
40
|
- Gemfile
|
46
41
|
- README.rdoc
|
@@ -64,43 +59,38 @@ files:
|
|
64
59
|
- spec/feed_abstract_spec.rb
|
65
60
|
- spec/spec_helper.rb
|
66
61
|
- spec/test_data/djcp.rss
|
62
|
+
- spec/test_data/djcp.rss92
|
67
63
|
- spec/test_data/djcp_code.rss
|
68
64
|
- spec/test_data/djcp_delicious.rss
|
69
65
|
- spec/test_data/doc.atom
|
66
|
+
- spec/test_data/feedburner.rss
|
70
67
|
- spec/test_data/katanapg.atom
|
71
68
|
- spec/test_data/oa.africa.rss
|
72
69
|
- spec/test_data/zotero.rss
|
73
|
-
has_rdoc: true
|
74
70
|
homepage: https://github.com/berkmancenter/feed-abstract
|
75
71
|
licenses: []
|
76
|
-
|
77
72
|
post_install_message:
|
78
|
-
rdoc_options:
|
73
|
+
rdoc_options:
|
79
74
|
- --charset=UTF-8
|
80
|
-
require_paths:
|
75
|
+
require_paths:
|
81
76
|
- lib
|
82
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
78
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
|
89
|
-
version: "0"
|
90
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
84
|
none: false
|
92
|
-
requirements:
|
93
|
-
- -
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
|
96
|
-
- 0
|
97
|
-
version: "0"
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
98
89
|
requirements: []
|
99
|
-
|
100
90
|
rubyforge_project:
|
101
|
-
rubygems_version: 1.
|
91
|
+
rubygems_version: 1.8.6
|
102
92
|
signing_key:
|
103
93
|
specification_version: 3
|
104
|
-
summary: Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a
|
94
|
+
summary: Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a
|
95
|
+
common object graph.
|
105
96
|
test_files: []
|
106
|
-
|