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.
Files changed (5) hide show
  1. data/CHANGELOG +4 -0
  2. data/lib/feed_tools.rb +40 -1
  3. data/rakefile +2 -2
  4. data/test/rss_test.rb +43 -4
  5. metadata +3 -3
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == FeedTools 0.2.1
2
+ * fixed incorrect dependancy on ActiveRecord 1.10.1
3
+ * more unit tests
4
+ * preliminary support for "bozo-detection"
1
5
  == FeedTools 0.2.0
2
6
  * more complete support for rss, atom, cdf
3
7
  * modular caching mechanism
@@ -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.0"
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.0'
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', '= 1.10.1')
61
+ s.add_dependency('activerecord', '>= 1.10.1')
62
62
 
63
63
  s.require_path = 'lib'
64
64
  s.autorequire = 'feed_tools'
@@ -8,90 +8,129 @@ class RssTest < Test::Unit::TestCase
8
8
  def setup
9
9
  end
10
10
 
11
- def test_title
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 test_description
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 test_ttl
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('&lt;!\' <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.0
7
- date: 2005-07-30
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: