summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--NEWS2
-rw-r--r--lib/rss/maker.rb8
-rw-r--r--lib/rss/maker/0.9.rb22
-rw-r--r--lib/rss/maker/1.0.rb8
-rw-r--r--lib/rss/maker/2.0.rb15
-rw-r--r--lib/rss/maker/base.rb4
-rw-r--r--lib/rss/maker/entry.rb8
-rw-r--r--lib/rss/maker/feed.rb12
-rw-r--r--lib/rss/rss.rb2
-rw-r--r--test/rss/test_maker_0.9.rb2
-rw-r--r--test/rss/test_maker_2.0.rb29
-rw-r--r--test/rss/test_version.rb2
13 files changed, 92 insertions, 35 deletions
diff --git a/ChangeLog b/ChangeLog
index 48905d6974..40a9e21326 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+Mon Feb 11 17:25:21 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb, NEWS:
+ 0.2.3 -> 0.2.4.
+
+ * lib/rss/maker.rb, lib/rss/maker/, test/rss/test_maker_2.0.rb:
+ fixed a bug that RSS::Maker.make("0.9")'s item doesn't make some
+ elements if description is missed.
+ Reported by Michael Auzenne. Thanks!!!
+
+ * lib/rss/maker/0.9.rb, test/rss/test_maker_0.9.rb:
+ RSS::Maker.make("0.9") generates RSS 0.92 not RSS 0.91.
+
Mon Feb 11 16:57:00 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* ChangeLog: format-time-string under C locale. [ruby-dev:33261]
diff --git a/NEWS b/NEWS
index 24ceb16e42..74b552c6f2 100644
--- a/NEWS
+++ b/NEWS
@@ -85,7 +85,7 @@ with all sufficient information, see the ChangeLog file.
* rss
- * 0.1.6 -> 0.2.3
+ * 0.1.6 -> 0.2.4
* Fix image module URI
diff --git a/lib/rss/maker.rb b/lib/rss/maker.rb
index 666dfa872d..bcba1aaff3 100644
--- a/lib/rss/maker.rb
+++ b/lib/rss/maker.rb
@@ -8,15 +8,15 @@ module RSS
def make(version, &block)
m = maker(version)
raise UnsupportedMakerVersionError.new(version) if m.nil?
- m.make(&block)
+ m[:maker].make(m[:version], &block)
end
def maker(version)
MAKERS[version]
end
- def add_maker(version, maker)
- MAKERS[version] = maker
+ def add_maker(version, normalized_version, maker)
+ MAKERS[version] = {:maker => maker, :version => normalized_version}
end
def versions
@@ -24,7 +24,7 @@ module RSS
end
def makers
- MAKERS.values.uniq
+ MAKERS.values.collect {|info| info[:maker]}.uniq
end
end
end
diff --git a/lib/rss/maker/0.9.rb b/lib/rss/maker/0.9.rb
index c83597dfd5..72b14dc977 100644
--- a/lib/rss/maker/0.9.rb
+++ b/lib/rss/maker/0.9.rb
@@ -7,7 +7,7 @@ module RSS
class RSS09 < RSSBase
- def initialize(feed_version="0.91")
+ def initialize(feed_version="0.92")
super
@feed_type = "rss"
end
@@ -258,23 +258,27 @@ module RSS
def to_feed(rss)
item = Rss::Channel::Item.new
set = setup_values(item)
- if set or title {|t| t.have_required_values?}
+ _not_set_required_variables = not_set_required_variables
+ if _not_set_required_variables.empty?
rss.items << item
set_parent(item, rss.channel)
setup_other_elements(rss, item)
elsif variable_is_set?
- raise NotSetError.new("maker.items", not_set_required_variables)
+ raise NotSetError.new("maker.items", _not_set_required_variables)
end
end
private
def required_variable_names
- %w(link)
+ []
end
def not_set_required_variables
vars = super
- vars << "title" unless title {|t| t.have_required_values?}
+ if @maker.feed_version == "0.91"
+ vars << "title" unless title {|t| t.have_required_values?}
+ vars << "link" unless link {|l| l.have_required_values?}
+ end
vars
end
@@ -454,8 +458,10 @@ module RSS
end
end
- add_maker("0.9", RSS09)
- add_maker("0.91", RSS09)
- add_maker("rss0.91", RSS09)
+ add_maker("0.9", "0.92", RSS09)
+ add_maker("0.91", "0.91", RSS09)
+ add_maker("0.92", "0.92", RSS09)
+ add_maker("rss0.91", "0.91", RSS09)
+ add_maker("rss0.92", "0.92", RSS09)
end
end
diff --git a/lib/rss/maker/1.0.rb b/lib/rss/maker/1.0.rb
index c4af6e9b2e..a1e2594f70 100644
--- a/lib/rss/maker/1.0.rb
+++ b/lib/rss/maker/1.0.rb
@@ -7,8 +7,8 @@ module RSS
class RSS10 < RSSBase
- def initialize
- super("1.0")
+ def initialize(feed_version="1.0")
+ super
@feed_type = "rss"
end
@@ -428,7 +428,7 @@ module RSS
end
end
- add_maker("1.0", RSS10)
- add_maker("rss1.0", RSS10)
+ add_maker("1.0", "1.0", RSS10)
+ add_maker("rss1.0", "1.0", RSS10)
end
end
diff --git a/lib/rss/maker/2.0.rb b/lib/rss/maker/2.0.rb
index 9149c0e24b..67d68126ac 100644
--- a/lib/rss/maker/2.0.rb
+++ b/lib/rss/maker/2.0.rb
@@ -93,7 +93,16 @@ module RSS
class Item < RSS09::Items::Item
private
def required_variable_names
- %w(title description)
+ []
+ end
+
+ def not_set_required_variables
+ vars = super
+ if !title {|t| t.have_required_values?} and
+ !description {|d| d.have_required_values?}
+ vars << "title or description"
+ end
+ vars
end
def variables
@@ -208,7 +217,7 @@ module RSS
end
end
- add_maker("2.0", RSS20)
- add_maker("rss2.0", RSS20)
+ add_maker("2.0", "2.0", RSS20)
+ add_maker("rss2.0", "2.0", RSS20)
end
end
diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb
index fdb8946efc..56bf04657e 100644
--- a/lib/rss/maker/base.rb
+++ b/lib/rss/maker/base.rb
@@ -357,8 +357,8 @@ module RSS
class RSSBase < Base
class << self
- def make(&block)
- new.make(&block)
+ def make(version, &block)
+ new(version).make(&block)
end
end
diff --git a/lib/rss/maker/entry.rb b/lib/rss/maker/entry.rb
index be648832c3..edaa31ec06 100644
--- a/lib/rss/maker/entry.rb
+++ b/lib/rss/maker/entry.rb
@@ -5,8 +5,8 @@ module RSS
module Maker
module Atom
class Entry < RSSBase
- def initialize
- super("1.0")
+ def initialize(feed_version="1.0")
+ super
@feed_type = "atom"
@feed_subtype = "entry"
end
@@ -157,7 +157,7 @@ module RSS
end
end
- add_maker("atom:entry", Atom::Entry)
- add_maker("atom1.0:entry", Atom::Entry)
+ add_maker("atom:entry", "1.0", Atom::Entry)
+ add_maker("atom1.0:entry", "1.0", Atom::Entry)
end
end
diff --git a/lib/rss/maker/feed.rb b/lib/rss/maker/feed.rb
index 95ae735c6b..3a30ad4287 100644
--- a/lib/rss/maker/feed.rb
+++ b/lib/rss/maker/feed.rb
@@ -4,8 +4,8 @@ module RSS
module Maker
module Atom
class Feed < RSSBase
- def initialize
- super("1.0")
+ def initialize(feed_version="1.0")
+ super
@feed_type = "atom"
@feed_subtype = "feed"
end
@@ -421,9 +421,9 @@ module RSS
end
end
- add_maker("atom", Atom::Feed)
- add_maker("atom:feed", Atom::Feed)
- add_maker("atom1.0", Atom::Feed)
- add_maker("atom1.0:feed", Atom::Feed)
+ add_maker("atom", "1.0", Atom::Feed)
+ add_maker("atom:feed", "1.0", Atom::Feed)
+ add_maker("atom1.0", "1.0", Atom::Feed)
+ add_maker("atom1.0:feed", "1.0", Atom::Feed)
end
end
diff --git a/lib/rss/rss.rb b/lib/rss/rss.rb
index 04dfdf8052..5aa4a2cedd 100644
--- a/lib/rss/rss.rb
+++ b/lib/rss/rss.rb
@@ -52,7 +52,7 @@ require "rss/xml-stylesheet"
module RSS
- VERSION = "0.2.3"
+ VERSION = "0.2.4"
URI = "http://purl.org/rss/1.0/"
diff --git a/test/rss/test_maker_0.9.rb b/test/rss/test_maker_0.9.rb
index df92945a86..c211bf605b 100644
--- a/test/rss/test_maker_0.9.rb
+++ b/test/rss/test_maker_0.9.rb
@@ -13,7 +13,7 @@ module RSS
setup_dummy_channel(maker)
setup_dummy_image(maker)
end
- assert_equal("0.91", rss.rss_version)
+ assert_equal("0.92", rss.rss_version)
rss = RSS::Maker.make("0.91") do |maker|
setup_dummy_channel(maker)
diff --git a/test/rss/test_maker_2.0.rb b/test/rss/test_maker_2.0.rb
index 8fd9134f70..c338e343a3 100644
--- a/test/rss/test_maker_2.0.rb
+++ b/test/rss/test_maker_2.0.rb
@@ -430,6 +430,35 @@ module RSS
test_items(false)
end
+ def test_pubDate_without_description
+ title = "TITLE"
+ link = "http://hoge.com/"
+ description = "text hoge fuga"
+ author = "oprah@oxygen.net"
+ pubDate = Time.now
+
+ rss = RSS::Maker.make("2.0") do |maker|
+ setup_dummy_channel(maker)
+
+ maker.items.new_item do |item|
+ item.title = title
+ item.link = link
+ # item.description = description
+ item.author = author
+ item.pubDate = pubDate
+ end
+ end
+ assert_equal(1, rss.items.size)
+ rss.channel.items.each_with_index do |item, i|
+ assert_equal(title, item.title)
+ assert_equal(link, item.link)
+ # assert_equal(description, item.description)
+ assert_equal(author, item.author)
+ assert_equal(pubDate, item.pubDate)
+ assert_equal(pubDate, item.date)
+ end
+ end
+
def test_guid
isPermaLink = "true"
content = "http://inessential.com/2002/09/01.php#a2"
diff --git a/test/rss/test_version.rb b/test/rss/test_version.rb
index 8f6771a4f3..64f6f0482e 100644
--- a/test/rss/test_version.rb
+++ b/test/rss/test_version.rb
@@ -3,7 +3,7 @@ require "rss-testcase"
module RSS
class TestVersion < TestCase
def test_version
- assert_equal("0.2.3", ::RSS::VERSION)
+ assert_equal("0.2.4", ::RSS::VERSION)
end
end
end