feed-abstract 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/feed-abstract.gemspec +18 -11
- data/lib/feed-abstract/channel/rdf.rb +2 -2
- data/lib/feed-abstract/channel/rss.rb +4 -4
- data/lib/feed-abstract/item/atom.rb +1 -1
- data/lib/feed-abstract/item/rdf.rb +2 -2
- data/lib/feed-abstract/item/rss.rb +3 -3
- data/lib/feed-abstract/mixins.rb +2 -2
- data/lib/feed-abstract/version.rb +1 -1
- data/spec/feed_abstract_channel_spec.rb +19 -1
- data/spec/feed_abstract_item_spec.rb +16 -0
- data/spec/feed_abstract_spec.rb +1 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/test_data/pyblosxom.atom +630 -0
- metadata +107 -85
data/feed-abstract.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "feed-abstract"
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email = [
|
11
|
+
s.authors = ["Daniel Collis-Puro"]
|
12
|
+
s.date = "2011-09-15"
|
13
|
+
s.description = "This library creates a common object graph for the RSS/Atom/RDF parsing classes in the ruby standard library. This allows you parse different feed formats and get back the same (or at least a very similar) set of results - item authors are accessible under an \"author(s)\" attribute, categories/tags/subjects are accessible under \"category(ies)\" attributes, etc. We do our best to make sure the data makes sense, too - RSS items lack an \"updated\" attribute, so we use \"pubDate\" to populate it. "
|
14
|
+
s.email = ["djcp@cyber.law.harvard.edu"]
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.rdoc"
|
17
17
|
]
|
@@ -46,13 +46,14 @@ Gem::Specification.new do |s|
|
|
46
46
|
"spec/test_data/feedburner.rss",
|
47
47
|
"spec/test_data/katanapg.atom",
|
48
48
|
"spec/test_data/oa.africa.rss",
|
49
|
+
"spec/test_data/pyblosxom.atom",
|
49
50
|
"spec/test_data/zotero.rss"
|
50
51
|
]
|
51
|
-
s.homepage =
|
52
|
-
s.rdoc_options = [
|
53
|
-
s.require_paths = [
|
54
|
-
s.rubygems_version =
|
55
|
-
s.summary =
|
52
|
+
s.homepage = "https://github.com/berkmancenter/feed-abstract"
|
53
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
54
|
+
s.require_paths = ["lib"]
|
55
|
+
s.rubygems_version = "1.8.10"
|
56
|
+
s.summary = "Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a common object graph."
|
56
57
|
|
57
58
|
if s.respond_to? :specification_version then
|
58
59
|
s.specification_version = 3
|
@@ -65,6 +66,8 @@ Gem::Specification.new do |s|
|
|
65
66
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
66
67
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
67
68
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
69
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
70
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
68
71
|
else
|
69
72
|
s.add_dependency(%q<feed-abstract>, [">= 0"])
|
70
73
|
s.add_dependency(%q<rspec>, [">= 0"])
|
@@ -73,6 +76,8 @@ Gem::Specification.new do |s|
|
|
73
76
|
s.add_dependency(%q<rspec>, [">= 0"])
|
74
77
|
s.add_dependency(%q<rspec>, [">= 0"])
|
75
78
|
s.add_dependency(%q<rspec>, [">= 0"])
|
79
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
80
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
76
81
|
end
|
77
82
|
else
|
78
83
|
s.add_dependency(%q<feed-abstract>, [">= 0"])
|
@@ -82,6 +87,8 @@ Gem::Specification.new do |s|
|
|
82
87
|
s.add_dependency(%q<rspec>, [">= 0"])
|
83
88
|
s.add_dependency(%q<rspec>, [">= 0"])
|
84
89
|
s.add_dependency(%q<rspec>, [">= 0"])
|
90
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
91
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
85
92
|
end
|
86
93
|
end
|
87
94
|
|
@@ -12,7 +12,7 @@ module FeedAbstract
|
|
12
12
|
# The authors list as an array.
|
13
13
|
def authors
|
14
14
|
return [] if @feed.channel.dc_publishers.empty?
|
15
|
-
@feed.channel.dc_publishers
|
15
|
+
@feed.channel.dc_publishers.reject{|au| au == '' || au.match(/^\s+$/)}
|
16
16
|
end
|
17
17
|
|
18
18
|
# The authors list as a string, joined with a comma.
|
@@ -33,7 +33,7 @@ module FeedAbstract
|
|
33
33
|
# The category list as an array.
|
34
34
|
def categories
|
35
35
|
return [] if @feed.channel.dc_subjects.empty?
|
36
|
-
@feed.channel.dc_subjects.collect{|c| c.content}
|
36
|
+
@feed.channel.dc_subjects.collect{|c| c.content}.reject{|c| c == '' || c.match(/^\s+$/)}
|
37
37
|
end
|
38
38
|
|
39
39
|
# The category list as a string, joined with a comma.
|
@@ -61,7 +61,7 @@ module FeedAbstract
|
|
61
61
|
# The authors (a merge of the RSS managingEditor and dc:publisher elements) as an array.
|
62
62
|
def authors
|
63
63
|
return [] if @feed.channel.managingEditor.nil? && @feed.channel.dc_publishers.empty?
|
64
|
-
[@feed.channel.managingEditor, @feed.channel.dc_publishers].flatten.uniq
|
64
|
+
[@feed.channel.managingEditor, @feed.channel.dc_publishers].flatten.uniq.compact.reject{|au| au == '' || au.match(/^\s+$/)}
|
65
65
|
end
|
66
66
|
|
67
67
|
# The author list joined with a comma.
|
@@ -73,13 +73,13 @@ module FeedAbstract
|
|
73
73
|
# The category list (a merge of the RSS category and dc:subject elements) as an array.
|
74
74
|
def categories
|
75
75
|
return [] if @feed.channel.categories.empty? && @feed.channel.dc_subjects.empty?
|
76
|
-
[@feed.channel.categories, @feed.channel.dc_subjects].flatten.uniq.collect{|c| c.content}
|
76
|
+
[@feed.channel.categories, @feed.channel.dc_subjects].flatten.uniq.compact.collect{|c| c.content}.reject{|c| c == '' || c.match(/^\s+$/)}
|
77
77
|
end
|
78
78
|
|
79
79
|
# The category list as a string, joined with a comma.
|
80
80
|
def category
|
81
|
-
return '' if
|
82
|
-
|
81
|
+
return '' if self.categories.empty?
|
82
|
+
self.categories.join(', ')
|
83
83
|
end
|
84
84
|
|
85
85
|
# A URL to an icon representing this feed.
|
@@ -23,7 +23,7 @@ module FeedAbstract
|
|
23
23
|
# The contributor list as an array.
|
24
24
|
def contributors
|
25
25
|
return [] if @item.contributors.empty?
|
26
|
-
@item.contributors.collect{|c| c.name.content}
|
26
|
+
@item.contributors.reject{|con| con.name.content == '' || con.name.content.match(/^\s+$/)}.collect{|c| c.name.content}
|
27
27
|
end
|
28
28
|
|
29
29
|
#The contributor list as a string joined with a comma.
|
@@ -6,7 +6,7 @@ module FeedAbstract
|
|
6
6
|
|
7
7
|
# The author list (from the dc:creator element) as an array.
|
8
8
|
def authors
|
9
|
-
(@item.dc_creators.empty?) ? [] : @item.dc_creators.collect{|c| c.content}
|
9
|
+
(@item.dc_creators.empty?) ? [] : @item.dc_creators.collect{|c| c.content}.reject{|au| au == '' || au.match(/^\s+$/)}
|
10
10
|
end
|
11
11
|
|
12
12
|
# The author list as a string, joined with a comma.
|
@@ -18,7 +18,7 @@ module FeedAbstract
|
|
18
18
|
# The category list (parsed from the dc:subject element) as an array.
|
19
19
|
def categories
|
20
20
|
return [] if @item.dc_subjects.empty?
|
21
|
-
@item.dc_subjects.collect{|c| c.content}
|
21
|
+
@item.dc_subjects.collect{|c| c.content}.reject{|c| c == '' || c.match(/^\s+$/)}
|
22
22
|
end
|
23
23
|
|
24
24
|
# The category list as a string, joined with a comma.
|
@@ -33,7 +33,7 @@ module FeedAbstract
|
|
33
33
|
|
34
34
|
# The author list (a merge of the RSS author and dc:creator elements) as an array.
|
35
35
|
def authors
|
36
|
-
[@item.author, @item.dc_creators.collect{|c| c.content}].flatten.uniq.compact
|
36
|
+
[@item.author, @item.dc_creators.collect{|c| c.content}].flatten.uniq.compact.reject{|au| au == '' || au.match(/^\s+$/)}
|
37
37
|
end
|
38
38
|
|
39
39
|
# The author list as a string, joined with a comma.
|
@@ -43,7 +43,7 @@ module FeedAbstract
|
|
43
43
|
|
44
44
|
# The contributors (parsed from the dc:contributor element) as an array.
|
45
45
|
def contributors
|
46
|
-
(@item.dc_contributors.empty?) ? [] : @item.dc_contributors
|
46
|
+
(@item.dc_contributors.empty?) ? [] : @item.dc_contributors.reject{|au| au == '' || au.match(/^\s+$/)}
|
47
47
|
end
|
48
48
|
|
49
49
|
# The contributor list as a string joined with a comma.
|
@@ -54,7 +54,7 @@ module FeedAbstract
|
|
54
54
|
# The category list as an array.
|
55
55
|
def categories
|
56
56
|
return [] if @item.categories.empty?
|
57
|
-
@item.categories.collect{|c| c.content}
|
57
|
+
@item.categories.collect{|c| c.content}.reject{|c| c == '' || c.match(/^\s+$/)}
|
58
58
|
end
|
59
59
|
|
60
60
|
# The category list as a string, joined with a comma.
|
data/lib/feed-abstract/mixins.rb
CHANGED
@@ -38,7 +38,7 @@ module FeedAbstractMixins
|
|
38
38
|
# An array of author names
|
39
39
|
def authors
|
40
40
|
return [] if @source.authors.empty?
|
41
|
-
@source.authors.collect{|au| au.name.content}
|
41
|
+
@source.authors.collect{|au| au.name.content}.reject{|au| au == '' || au.match(/^\s+$/)}
|
42
42
|
end
|
43
43
|
|
44
44
|
# The authors list as a string, joined with a comma.
|
@@ -50,7 +50,7 @@ module FeedAbstractMixins
|
|
50
50
|
# The categories list as an array.
|
51
51
|
def categories
|
52
52
|
return [] if @source.categories.empty?
|
53
|
-
@source.categories.collect{|c| c.term}
|
53
|
+
@source.categories.collect{|c| c.term}.reject{|c| c == '' || c.match(/^\s+$/)}
|
54
54
|
end
|
55
55
|
|
56
56
|
# The categories list as a string joined with a comma.
|
@@ -17,6 +17,7 @@ module FeedAbstract
|
|
17
17
|
it { @delicious.channel.should respond_to att}
|
18
18
|
it { @zotero.channel.should respond_to att}
|
19
19
|
it { @feedburner.channel.should respond_to att}
|
20
|
+
it { @pyblosxom.channel.should respond_to att}
|
20
21
|
|
21
22
|
it { @docatom.channel.send(att).should_not == false}
|
22
23
|
it { @kpgatom.channel.send(att).should_not == false}
|
@@ -26,6 +27,7 @@ module FeedAbstract
|
|
26
27
|
it { @delicious.channel.send(att).should_not == false}
|
27
28
|
it { @zotero.channel.send(att).should_not == false}
|
28
29
|
it { @feedburner.channel.send(att).should_not == false}
|
30
|
+
it { @pyblosxom.channel.send(att).should_not == false}
|
29
31
|
end
|
30
32
|
|
31
33
|
it "should have the correct title" do
|
@@ -37,6 +39,7 @@ module FeedAbstract
|
|
37
39
|
@delicious.channel.title.should == 'Delicious/djcp'
|
38
40
|
@zotero.channel.title.should == 'Zotero / PROS Paper Group / Items'
|
39
41
|
@feedburner.channel.title.should == 'CNN.com'
|
42
|
+
@pyblosxom.channel.title.should == 'Copyrighteous'
|
40
43
|
end
|
41
44
|
|
42
45
|
it "should have the correct subtitle and description" do
|
@@ -63,6 +66,9 @@ module FeedAbstract
|
|
63
66
|
|
64
67
|
@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
68
|
@feedburner.channel.subtitle.should == 'CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.'
|
69
|
+
|
70
|
+
@pyblosxom.channel.description.should == "\n\n"
|
71
|
+
@pyblosxom.channel.subtitle.should == "\n\n"
|
66
72
|
end
|
67
73
|
|
68
74
|
it "should have the correct link" do
|
@@ -74,6 +80,7 @@ module FeedAbstract
|
|
74
80
|
@delicious.channel.link.should == 'http://www.delicious.com/djcp'
|
75
81
|
@zotero.channel.link.should == 'https://api.zotero.org/groups/52650/items'
|
76
82
|
@feedburner.channel.link.should == 'http://www.cnn.com/?eref=rss_topstories'
|
83
|
+
@pyblosxom.channel.link.should == 'http://mako.cc/copyrighteous'
|
77
84
|
end
|
78
85
|
|
79
86
|
it "should have the correct generator" do
|
@@ -85,6 +92,7 @@ module FeedAbstract
|
|
85
92
|
@delicious.channel.generator.should == 'Delicious'
|
86
93
|
@zotero.channel.generator.should == 'Zotero'
|
87
94
|
@feedburner.channel.generator.should == ''
|
95
|
+
@pyblosxom.channel.generator.should == "\nPyBlosxom http://pyblosxom.sourceforge.net/ 1.5rc2 20100803\n"
|
88
96
|
end
|
89
97
|
|
90
98
|
it "should have the correct language" do
|
@@ -96,6 +104,7 @@ module FeedAbstract
|
|
96
104
|
@delicious.channel.language.should == ''
|
97
105
|
@zotero.channel.language.should == ''
|
98
106
|
@feedburner.channel.language.should == 'en-us'
|
107
|
+
@pyblosxom.channel.language.should == 'en'
|
99
108
|
end
|
100
109
|
|
101
110
|
it "should have the correct authors" do
|
@@ -107,6 +116,7 @@ module FeedAbstract
|
|
107
116
|
@delicious.channel.authors.should == []
|
108
117
|
@zotero.channel.authors.should == []
|
109
118
|
@feedburner.channel.authors.should == []
|
119
|
+
@pyblosxom.channel.authors.should == ['Benjamin Mako Hill']
|
110
120
|
|
111
121
|
@docatom.channel.author.should == 'Doc Searls'
|
112
122
|
@kpgatom.channel.author.should == 'Nick Pappas'
|
@@ -116,6 +126,7 @@ module FeedAbstract
|
|
116
126
|
@delicious.channel.author.should == ''
|
117
127
|
@zotero.channel.author.should == ''
|
118
128
|
@feedburner.channel.author.should == ''
|
129
|
+
@pyblosxom.channel.author.should == 'Benjamin Mako Hill'
|
119
130
|
|
120
131
|
end
|
121
132
|
|
@@ -128,15 +139,17 @@ module FeedAbstract
|
|
128
139
|
@delicious.channel.categories.should == []
|
129
140
|
@zotero.channel.categories.should == []
|
130
141
|
@feedburner.channel.categories.should == []
|
142
|
+
@pyblosxom.channel.categories.should == []
|
131
143
|
|
132
144
|
@docatom.channel.category.should == ''
|
133
145
|
@kpgatom.channel.category.should == 'photos'
|
134
|
-
@djcprss2.channel.category.should == 'Tech, Open Source'
|
146
|
+
@djcprss2.channel.category.should == 'Tech, Open Source, oa.africa, oa.test'
|
135
147
|
@djcprss92.channel.category.should == ''
|
136
148
|
@oa.channel.category.should == 'oa.africa, oa.test'
|
137
149
|
@delicious.channel.category.should == ''
|
138
150
|
@zotero.channel.category.should == ''
|
139
151
|
@feedburner.channel.category.should == ''
|
152
|
+
@pyblosxom.channel.category.should == ''
|
140
153
|
end
|
141
154
|
|
142
155
|
it "should have the correct icon" do
|
@@ -148,6 +161,7 @@ module FeedAbstract
|
|
148
161
|
@delicious.channel.icon.should == ''
|
149
162
|
@zotero.channel.icon.should == ''
|
150
163
|
@feedburner.channel.icon.should == 'http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif'
|
164
|
+
@pyblosxom.channel.icon.should == ''
|
151
165
|
end
|
152
166
|
|
153
167
|
it "should have the correct logo" do
|
@@ -159,6 +173,7 @@ module FeedAbstract
|
|
159
173
|
@delicious.channel.logo.should == ''
|
160
174
|
@zotero.channel.logo.should == ''
|
161
175
|
@feedburner.channel.logo.should == 'http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif'
|
176
|
+
@pyblosxom.channel.logo.should == ''
|
162
177
|
end
|
163
178
|
|
164
179
|
it "should have the correct rights" do
|
@@ -170,6 +185,7 @@ module FeedAbstract
|
|
170
185
|
@delicious.channel.rights.should == ''
|
171
186
|
@zotero.channel.rights.should == ''
|
172
187
|
@feedburner.channel.rights.should == ' 2011 Cable News Network LP, LLLP.'
|
188
|
+
@pyblosxom.channel.rights.should == 'Creative Commons Attribution-ShareAlike'
|
173
189
|
end
|
174
190
|
|
175
191
|
it "should have the correct updated value" do
|
@@ -181,6 +197,7 @@ module FeedAbstract
|
|
181
197
|
@delicious.channel.updated.should == ''
|
182
198
|
@zotero.channel.updated.should == Time.parse('2011-09-02T17:16:11Z')
|
183
199
|
@feedburner.channel.updated.should == Time.parse('Sat, 03 Sep 2011 16:14:16 EDT')
|
200
|
+
@pyblosxom.channel.updated.should == Time.parse('2011-09-15T05:21:00Z')
|
184
201
|
end
|
185
202
|
|
186
203
|
it "should have the correct guid" do
|
@@ -192,6 +209,7 @@ module FeedAbstract
|
|
192
209
|
@delicious.channel.guid.should == 'http://www.delicious.com/djcp'
|
193
210
|
@zotero.channel.guid.should == 'http://zotero.org/groups/52650/items'
|
194
211
|
@feedburner.channel.guid.should == 'http://www.cnn.com/?eref=rss_topstories'
|
212
|
+
@pyblosxom.channel.guid.should == 'http://mako.cc/copyrighteous/'
|
195
213
|
end
|
196
214
|
end
|
197
215
|
end
|
@@ -30,6 +30,8 @@ module FeedAbstract
|
|
30
30
|
@deliciousitem.title.should == 'aspic and other delights'
|
31
31
|
@zoteroitem.title.should == 'An experimental application of the Delphi method to the use of experts'
|
32
32
|
@feedburneritem.title.should == 'Did Libya help CIA with renditions of terror suspects?'
|
33
|
+
@pyblosxomitem.title.should == "Anxiety\n"
|
34
|
+
|
33
35
|
end
|
34
36
|
|
35
37
|
it "should have the correct summary" do
|
@@ -44,6 +46,8 @@ module FeedAbstract
|
|
44
46
|
@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
47
|
<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
48
|
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sV5N-C76mOM" height="1" width="1"/>|
|
49
|
+
|
50
|
+
@pyblosxomitem.summary.should == ""
|
47
51
|
end
|
48
52
|
|
49
53
|
it "should have the correct content" do
|
@@ -93,6 +97,7 @@ module FeedAbstract
|
|
93
97
|
</table>
|
94
98
|
</div>|
|
95
99
|
@feedburneritem.content.should == ''
|
100
|
+
@pyblosxomitem.content.should == %Q|<div><a href='http://www.flickr.com/photos/nffcnnr/401047557/' target='_blank'><img src='http://farm1.static.flickr.com/137/401047557_1dda26e16f.jpg' width=350 alt='MailBoxes by nffcnnr, on Flickr' title='MailBoxes by nffcnnr, on Flickr' border='0'/></a><br/><a href='http://creativecommons.org/licenses/by/2.0/' target='_blank'><img src='http://i.creativecommons.org/l/by/2.0/80x15.png' alt='Creative Commons Attribution 2.0 Generic License' title='Creative Commons Attribution 2.0 Generic License' border='0' align='left'></a> by <a href='http://www.flickr.com/people/nffcnnr/' target='_blank'> nffcnnr</a><a href='http://www.imagecodr.org/' target='_blank'> </a></div><p>I am haunted by the nagging fear that I have mailboxes, tucked into a\ndark corner of an office somewhere, and perhaps even full of checks\nand important documents, that I don't know exist.</p>\n|
|
96
101
|
end
|
97
102
|
|
98
103
|
it "should have the correct link" do
|
@@ -103,6 +108,7 @@ module FeedAbstract
|
|
103
108
|
@deliciousitem.link.should == 'http://aspicandotherdelights.tumblr.com/'
|
104
109
|
@zoteroitem.link.should == 'https://api.zotero.org/groups/52650/items/FHDJ5PXZ'
|
105
110
|
@feedburneritem.link.should == 'http://rss.cnn.com/~r/rss/cnn_topstories/~3/sV5N-C76mOM/index.html'
|
111
|
+
@pyblosxomitem.link.should == 'http://mako.cc/copyrighteous/20110913-00'
|
106
112
|
end
|
107
113
|
|
108
114
|
it "should have the correct author" do
|
@@ -113,6 +119,7 @@ module FeedAbstract
|
|
113
119
|
@deliciousitem.author.should == 'djcp'
|
114
120
|
@zoteroitem.author.should == 'ingle.atul'
|
115
121
|
@feedburneritem.author.should == ''
|
122
|
+
@pyblosxomitem.author.should == ''
|
116
123
|
end
|
117
124
|
|
118
125
|
it "should have the correct authors" do
|
@@ -123,6 +130,7 @@ module FeedAbstract
|
|
123
130
|
@deliciousitem.authors.should == ['djcp']
|
124
131
|
@zoteroitem.authors.should == ['ingle.atul']
|
125
132
|
@feedburneritem.authors.should == []
|
133
|
+
@pyblosxomitem.authors.should == []
|
126
134
|
end
|
127
135
|
|
128
136
|
it "should have the correct contributor" do
|
@@ -133,6 +141,7 @@ module FeedAbstract
|
|
133
141
|
@deliciousitem.contributor.should == ''
|
134
142
|
@zoteroitem.contributor.should == ''
|
135
143
|
@feedburneritem.contributor.should == ''
|
144
|
+
@pyblosxomitem.contributor.should == ''
|
136
145
|
end
|
137
146
|
|
138
147
|
it "should have the correct contributors" do
|
@@ -143,6 +152,7 @@ module FeedAbstract
|
|
143
152
|
@deliciousitem.contributors.should == []
|
144
153
|
@zoteroitem.contributors.should == []
|
145
154
|
@feedburneritem.contributors.should == []
|
155
|
+
@pyblosxomitem.contributors.should == []
|
146
156
|
end
|
147
157
|
|
148
158
|
it "should have the correct category" do
|
@@ -153,6 +163,7 @@ module FeedAbstract
|
|
153
163
|
@deliciousitem.category.should == 'cooking, oddness'
|
154
164
|
@zoteroitem.category.should == ''
|
155
165
|
@feedburneritem.category.should == ''
|
166
|
+
@pyblosxomitem.category.should == ''
|
156
167
|
end
|
157
168
|
|
158
169
|
it "should have the correct categories" do
|
@@ -163,6 +174,7 @@ module FeedAbstract
|
|
163
174
|
@deliciousitem.categories.should == ['cooking', 'oddness']
|
164
175
|
@zoteroitem.categories.should == []
|
165
176
|
@feedburneritem.categories.should == []
|
177
|
+
@pyblosxomitem.categories.should == []
|
166
178
|
end
|
167
179
|
|
168
180
|
it "should have the correct rights" do
|
@@ -173,6 +185,7 @@ module FeedAbstract
|
|
173
185
|
@deliciousitem.rights.should == ''
|
174
186
|
@zoteroitem.rights.should == ''
|
175
187
|
@feedburneritem.rights.should == ''
|
188
|
+
@pyblosxomitem.rights.should == ''
|
176
189
|
end
|
177
190
|
|
178
191
|
it "should have been updated at the correct time" do
|
@@ -183,6 +196,7 @@ module FeedAbstract
|
|
183
196
|
@deliciousitem.updated.should == Time.parse('Fri, 19 Aug 2011 00:56:26 +0000')
|
184
197
|
@zoteroitem.updated.should == Time.parse('2011-09-02T17:16:11Z')
|
185
198
|
@feedburneritem.updated.should == Time.parse('Sat, 03 Sep 2011 16:11:39 EDT')
|
199
|
+
@pyblosxomitem.updated.should == Time.parse('2011-09-15T05:21:00Z')
|
186
200
|
end
|
187
201
|
|
188
202
|
it "should have been published at the proper time" do
|
@@ -193,6 +207,7 @@ module FeedAbstract
|
|
193
207
|
@deliciousitem.published.should == Time.parse('Fri, 19 Aug 2011 00:56:26 +0000')
|
194
208
|
@zoteroitem.published.should == Time.parse('2011-09-02T17:14:22Z')
|
195
209
|
@feedburneritem.published.should == Time.parse('Sat, 03 Sep 2011 16:11:39 EDT')
|
210
|
+
@pyblosxomitem.published.should == Time.parse('2011-09-15T05:21:00Z')
|
196
211
|
end
|
197
212
|
|
198
213
|
it "should have the proper guid" do
|
@@ -203,6 +218,7 @@ module FeedAbstract
|
|
203
218
|
@deliciousitem.guid.should == 'http://www.delicious.com/url/6e0504ca698232809a0b5065e8b83031#djcp'
|
204
219
|
@zoteroitem.guid.should == 'http://zotero.org/groups/pros_paper/items/FHDJ5PXZ'
|
205
220
|
@feedburneritem.guid.should == 'http://www.cnn.com/2011/WORLD/africa/09/03/libya.west.spies/index.html?eref=rss_topstories'
|
221
|
+
@pyblosxomitem.guid.should == 'http://mako.cc/copyrighteous/2011/09/15/20110913-00'
|
206
222
|
end
|
207
223
|
|
208
224
|
end
|
data/spec/feed_abstract_spec.rb
CHANGED
@@ -15,6 +15,7 @@ module FeedAbstract
|
|
15
15
|
it "should recognize atom feeds properly" do
|
16
16
|
@docatom.channel.class.should == Channel::Atom
|
17
17
|
@kpgatom.channel.class.should == Channel::Atom
|
18
|
+
@pyblosxom.channel.class.should == Channel::Atom
|
18
19
|
end
|
19
20
|
|
20
21
|
it "should recognize rss feeds properly" do
|
data/spec/spec_helper.rb
CHANGED
@@ -12,8 +12,9 @@ def instantiate_feeds
|
|
12
12
|
@delicious = FeedAbstract::Feed.new(File.open('spec/test_data/djcp_delicious.rss'))
|
13
13
|
@zotero = FeedAbstract::Feed.new(File.open('spec/test_data/zotero.rss'))
|
14
14
|
@feedburner = FeedAbstract::Feed.new(File.open('spec/test_data/feedburner.rss'))
|
15
|
+
@pyblosxom = FeedAbstract::Feed.new(File.open('spec/test_data/pyblosxom.atom'))
|
15
16
|
|
16
|
-
@all_feeds = [@docatom, @kpgatom, @djcprss2, @djcprss92, @oa, @delicious, @zotero, @feedburner]
|
17
|
+
@all_feeds = [@docatom, @kpgatom, @djcprss2, @djcprss92, @oa, @delicious, @zotero, @feedburner,@pyblosxom]
|
17
18
|
end
|
18
19
|
|
19
20
|
def instantiate_example_items
|
@@ -24,4 +25,5 @@ def instantiate_example_items
|
|
24
25
|
@deliciousitem = @delicious.items.first
|
25
26
|
@zoteroitem = @zotero.items.first
|
26
27
|
@feedburneritem = @feedburner.items.first
|
28
|
+
@pyblosxomitem = @pyblosxom.items.first
|
27
29
|
end
|