feedtools 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|