feedtools 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/lib/feed_tools.rb +40 -1
- data/rakefile +2 -2
- data/test/rss_test.rb +43 -4
- metadata +3 -3
data/CHANGELOG
CHANGED
data/lib/feed_tools.rb
CHANGED
@@ -25,7 +25,7 @@ FEED_TOOLS_ENV = ENV['FEED_TOOLS_ENV'] ||
|
|
25
25
|
ENV['RAILS_ENV'] ||
|
26
26
|
'production' # :nodoc:
|
27
27
|
|
28
|
-
FEED_TOOLS_VERSION = "0.2.
|
28
|
+
FEED_TOOLS_VERSION = "0.2.1"
|
29
29
|
|
30
30
|
$:.unshift(File.dirname(__FILE__))
|
31
31
|
$:.unshift(File.dirname(__FILE__) + "/../../activerecord/lib")
|
@@ -1275,6 +1275,36 @@ module FeedTools
|
|
1275
1275
|
@time_to_live = 1 if @time_to_live < 1
|
1276
1276
|
end
|
1277
1277
|
|
1278
|
+
# Returns the feed generator
|
1279
|
+
def generator
|
1280
|
+
if @generator.nil?
|
1281
|
+
@generator = XPath.first(channel_node, "generator/text()").to_s
|
1282
|
+
@generator = FeedTools.strip_html(@generator)
|
1283
|
+
@generator = nil if @generator == ""
|
1284
|
+
end
|
1285
|
+
return @generator
|
1286
|
+
end
|
1287
|
+
|
1288
|
+
# Sets the feed generator
|
1289
|
+
def generator=(new_generator)
|
1290
|
+
@generator = new_generator
|
1291
|
+
end
|
1292
|
+
|
1293
|
+
# Returns the feed docs
|
1294
|
+
def docs
|
1295
|
+
if @docs.nil?
|
1296
|
+
@docs = XPath.first(channel_node, "docs/text()").to_s
|
1297
|
+
@docs = FeedTools.strip_html(@docs)
|
1298
|
+
@docs = nil if @docs == ""
|
1299
|
+
end
|
1300
|
+
return @docs
|
1301
|
+
end
|
1302
|
+
|
1303
|
+
# Sets the feed docs
|
1304
|
+
def docs=(new_docs)
|
1305
|
+
@docs = new_docs
|
1306
|
+
end
|
1307
|
+
|
1278
1308
|
# Returns the feed language
|
1279
1309
|
def language
|
1280
1310
|
if @language.nil?
|
@@ -1292,6 +1322,7 @@ module FeedTools
|
|
1292
1322
|
@language = "en-us"
|
1293
1323
|
end
|
1294
1324
|
@language = @language.downcase
|
1325
|
+
@language = nil if @language == ""
|
1295
1326
|
end
|
1296
1327
|
return @language
|
1297
1328
|
end
|
@@ -1392,6 +1423,14 @@ module FeedTools
|
|
1392
1423
|
return vidlog
|
1393
1424
|
end
|
1394
1425
|
|
1426
|
+
# True if this feed is malformed somehow
|
1427
|
+
def bozo?
|
1428
|
+
if @bozo.nil?
|
1429
|
+
@bozo = false
|
1430
|
+
end
|
1431
|
+
return @bozo
|
1432
|
+
end
|
1433
|
+
|
1395
1434
|
# True if the feed was not last retrieved from the cache.
|
1396
1435
|
def live?
|
1397
1436
|
return @live
|
data/rakefile
CHANGED
@@ -7,7 +7,7 @@ require 'rake/gempackagetask'
|
|
7
7
|
require 'rake/contrib/rubyforgepublisher'
|
8
8
|
|
9
9
|
PKG_NAME = 'feedtools'
|
10
|
-
PKG_VERSION = '0.2.
|
10
|
+
PKG_VERSION = '0.2.1'
|
11
11
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
12
12
|
|
13
13
|
RELEASE_NAME = "REL #{PKG_VERSION}"
|
@@ -58,7 +58,7 @@ spec = Gem::Specification.new do |s|
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
s.add_dependency('activerecord', '
|
61
|
+
s.add_dependency('activerecord', '>= 1.10.1')
|
62
62
|
|
63
63
|
s.require_path = 'lib'
|
64
64
|
s.autorequire = 'feed_tools'
|
data/test/rss_test.rb
CHANGED
@@ -8,90 +8,129 @@ class RssTest < Test::Unit::TestCase
|
|
8
8
|
def setup
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def test_feed_well_formed
|
12
|
+
feed = FeedTools::Feed.open(
|
13
|
+
'http://feedparser.org/tests/wellformed/rss/aaa_wellformed.xml')
|
14
|
+
assert_equal(false, feed.bozo?)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_feed_title
|
12
18
|
feed = FeedTools::Feed.open(
|
13
19
|
'http://feedparser.org/tests/wellformed/rss/channel_title.xml')
|
14
20
|
assert_equal("Example feed", feed.title)
|
21
|
+
assert_equal(false, feed.bozo?)
|
15
22
|
feed = FeedTools::Feed.open(
|
16
23
|
'http://feedparser.org/tests/wellformed/rss/channel_title_apos.xml')
|
17
24
|
assert_equal("Mark's title", feed.title)
|
25
|
+
assert_equal(false, feed.bozo?)
|
18
26
|
feed = FeedTools::Feed.open(
|
19
27
|
'http://feedparser.org/tests/wellformed/rss/channel_title_gt.xml')
|
20
28
|
assert_equal("2 > 1", feed.title)
|
29
|
+
assert_equal(false, feed.bozo?)
|
21
30
|
feed = FeedTools::Feed.open(
|
22
31
|
'http://feedparser.org/tests/wellformed/rss/channel_title_lt.xml')
|
23
32
|
assert_equal("1 < 2", feed.title)
|
33
|
+
assert_equal(false, feed.bozo?)
|
24
34
|
end
|
25
35
|
|
26
|
-
def
|
36
|
+
def test_feed_description
|
27
37
|
feed = FeedTools::Feed.open(
|
28
38
|
'http://feedparser.org/tests/wellformed/rss/channel_description.xml')
|
29
39
|
assert_equal("Example description", feed.description)
|
40
|
+
assert_equal(false, feed.bozo?)
|
30
41
|
feed = FeedTools::Feed.open(
|
31
42
|
'http://feedparser.org/tests/wellformed/rss/' +
|
32
43
|
'channel_description_escaped_markup.xml')
|
33
44
|
assert_equal("<p>Example description</p>", feed.description)
|
45
|
+
assert_equal(false, feed.bozo?)
|
34
46
|
feed = FeedTools::Feed.open(
|
35
47
|
'http://feedparser.org/tests/wellformed/rss/' +
|
36
48
|
'channel_description_map_tagline.xml')
|
37
49
|
assert_equal("Example description", feed.tagline)
|
50
|
+
assert_equal(false, feed.bozo?)
|
38
51
|
feed = FeedTools::Feed.open(
|
39
52
|
'http://feedparser.org/tests/wellformed/rss/' +
|
40
53
|
'channel_description_naked_markup.xml')
|
41
54
|
assert_equal("<p>Example description</p>", feed.description)
|
55
|
+
assert_equal(false, feed.bozo?)
|
42
56
|
feed = FeedTools::Feed.open(
|
43
57
|
'http://feedparser.org/tests/wellformed/rss/' +
|
44
58
|
'channel_description_shorttag.xml')
|
45
59
|
assert_equal(nil, feed.description)
|
46
60
|
assert_equal('http://example.com/', feed.link)
|
61
|
+
assert_equal(false, feed.bozo?)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_feed_generator
|
65
|
+
feed = FeedTools::Feed.open(
|
66
|
+
'http://feedparser.org/tests/wellformed/rss/channel_generator.xml')
|
67
|
+
assert_equal("Example generator", feed.generator)
|
68
|
+
assert_equal(false, feed.bozo?)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_feed_docs
|
72
|
+
feed = FeedTools::Feed.open(
|
73
|
+
'http://feedparser.org/tests/wellformed/rss/channel_docs.xml')
|
74
|
+
assert_equal("http://www.example.com/", feed.docs)
|
75
|
+
assert_equal(false, feed.bozo?)
|
47
76
|
end
|
48
77
|
|
49
|
-
def
|
78
|
+
def test_feed_ttl
|
50
79
|
feed = FeedTools::Feed.open(
|
51
80
|
'http://feedparser.org/tests/wellformed/rss/channel_ttl.xml')
|
52
|
-
assert_equal(1.hour, feed.ttl)
|
81
|
+
assert_equal(1.hour, feed.ttl)
|
82
|
+
assert_equal(false, feed.bozo?)
|
53
83
|
end
|
54
84
|
|
55
85
|
def test_item_content
|
56
86
|
feed = FeedTools::Feed.open(
|
57
87
|
'http://feedparser.org/tests/wellformed/rss/item_content_encoded.xml')
|
58
88
|
assert_equal('<p>Example content</p>', feed.entries.first.content)
|
89
|
+
assert_equal(false, feed.bozo?)
|
59
90
|
end
|
60
91
|
|
61
92
|
def test_item_description
|
62
93
|
feed = FeedTools::Feed.open(
|
63
94
|
'http://feedparser.org/tests/wellformed/rss/item_description.xml')
|
64
95
|
assert_equal('Example description', feed.entries.first.description)
|
96
|
+
assert_equal(false, feed.bozo?)
|
65
97
|
feed = FeedTools::Feed.open(
|
66
98
|
'http://feedparser.org/tests/wellformed/rss/' +
|
67
99
|
'item_description_escaped_markup.xml')
|
68
100
|
assert_equal('<p>Example description</p>', feed.entries.first.description)
|
101
|
+
assert_equal(false, feed.bozo?)
|
69
102
|
feed = FeedTools::Feed.open(
|
70
103
|
'http://feedparser.org/tests/wellformed/rss/' +
|
71
104
|
'item_description_map_summary.xml')
|
72
105
|
assert_equal('Example description', feed.entries.first.description)
|
106
|
+
assert_equal(false, feed.bozo?)
|
73
107
|
feed = FeedTools::Feed.open(
|
74
108
|
'http://feedparser.org/tests/wellformed/rss/' +
|
75
109
|
'item_description_naked_markup.xml')
|
76
110
|
assert_equal('<p>Example description</p>', feed.entries.first.description)
|
111
|
+
assert_equal(false, feed.bozo?)
|
77
112
|
feed = FeedTools::Feed.open(
|
78
113
|
'http://feedparser.org/tests/wellformed/rss/' +
|
79
114
|
'item_description_not_a_doctype.xml')
|
80
115
|
assert_equal('<!\' <a href=\'foo\'/>', feed.entries.first.description)
|
116
|
+
assert_equal(false, feed.bozo?)
|
81
117
|
end
|
82
118
|
|
83
119
|
def test_item_guid
|
84
120
|
feed = FeedTools::Feed.open(
|
85
121
|
'http://feedparser.org/tests/wellformed/rss/item_guid.xml')
|
86
122
|
assert_equal('http://guid.example.com/', feed.entries.first.guid)
|
123
|
+
assert_equal(false, feed.bozo?)
|
87
124
|
feed = FeedTools::Feed.open(
|
88
125
|
'http://feedparser.org/tests/wellformed/rss/' +
|
89
126
|
'item_guid_conflict_link.xml')
|
90
127
|
assert_equal('http://guid.example.com/', feed.entries.first.guid)
|
91
128
|
assert_equal('http://link.example.com/', feed.entries.first.link)
|
129
|
+
assert_equal(false, feed.bozo?)
|
92
130
|
feed = FeedTools::Feed.open(
|
93
131
|
'http://feedparser.org/tests/wellformed/rss/item_guid_guidislink.xml')
|
94
132
|
assert_equal('http://guid.example.com/', feed.entries.first.guid)
|
95
133
|
assert_equal('http://guid.example.com/', feed.entries.first.link)
|
134
|
+
assert_equal(false, feed.bozo?)
|
96
135
|
end
|
97
136
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: feedtools
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.2.1
|
7
|
+
date: 2005-08-08
|
8
8
|
summary: "Parsing, generation, and caching system for xml news feeds."
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -85,7 +85,7 @@ dependencies:
|
|
85
85
|
version_requirements: !ruby/object:Gem::Version::Requirement
|
86
86
|
requirements:
|
87
87
|
-
|
88
|
-
- "
|
88
|
+
- ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: 1.10.1
|
91
91
|
version:
|