feedtools 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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: