ruby-changes:3941
From: ko1@a...
Date: Mon, 11 Feb 2008 17:24:47 +0900 (JST)
Subject: [ruby-changes:3941] kou - Ruby:r15431 (trunk): * lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb:
kou 2008-02-11 17:24:18 +0900 (Mon, 11 Feb 2008) New Revision: 15431 Modified files: trunk/ChangeLog trunk/lib/rss/maker/0.9.rb trunk/lib/rss/maker/1.0.rb trunk/lib/rss/maker/2.0.rb trunk/lib/rss/maker/base.rb trunk/lib/rss/maker/entry.rb trunk/lib/rss/maker/feed.rb trunk/lib/rss/maker.rb trunk/lib/rss/rss.rb trunk/test/rss/test_maker_0.9.rb trunk/test/rss/test_maker_2.0.rb trunk/test/rss/test_version.rb Log: * lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb: 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. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_maker_2.0.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_maker_0.9.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/maker/feed.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/maker/2.0.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_version.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/rss.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/maker/base.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/maker.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/maker/1.0.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/maker/entry.rb?r1=15431&r2=15430&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rss/maker/0.9.rb?r1=15431&r2=15430&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 15430) +++ ChangeLog (revision 15431) @@ -1,3 +1,16 @@ +Mon Feb 11 17:21:18 2008 Kouhei Sutou <kou@c...> + + * lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb: + 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 10:43:31 2008 NARUSE, Yui <naruse@r...> * ruby.c (load_file): the encoding of DATA follows the source Index: lib/rss/maker/1.0.rb =================================================================== --- lib/rss/maker/1.0.rb (revision 15430) +++ lib/rss/maker/1.0.rb (revision 15431) @@ -7,8 +7,8 @@ class RSS10 < RSSBase - def initialize - super("1.0") + def initialize(feed_version="1.0") + super @feed_type = "rss" end @@ -428,7 +428,7 @@ 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 Index: lib/rss/maker/2.0.rb =================================================================== --- lib/rss/maker/2.0.rb (revision 15430) +++ lib/rss/maker/2.0.rb (revision 15431) @@ -93,9 +93,18 @@ 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 super + ["pubDate"] end @@ -208,7 +217,7 @@ 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 Index: lib/rss/maker/entry.rb =================================================================== --- lib/rss/maker/entry.rb (revision 15430) +++ lib/rss/maker/entry.rb (revision 15431) @@ -5,8 +5,8 @@ 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 @@ 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 Index: lib/rss/maker/feed.rb =================================================================== --- lib/rss/maker/feed.rb (revision 15430) +++ lib/rss/maker/feed.rb (revision 15431) @@ -4,8 +4,8 @@ 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 @@ 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 Index: lib/rss/maker/0.9.rb =================================================================== --- lib/rss/maker/0.9.rb (revision 15430) +++ lib/rss/maker/0.9.rb (revision 15431) @@ -7,7 +7,7 @@ class RSS09 < RSSBase - def initialize(feed_version="0.91") + def initialize(feed_version="0.92") super @feed_type = "rss" end @@ -258,23 +258,27 @@ 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 @@ 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 Index: lib/rss/maker/base.rb =================================================================== --- lib/rss/maker/base.rb (revision 15430) +++ lib/rss/maker/base.rb (revision 15431) @@ -357,8 +357,8 @@ class RSSBase < Base class << self - def make(&block) - new.make(&block) + def make(version, &block) + new(version).make(&block) end end Index: lib/rss/maker.rb =================================================================== --- lib/rss/maker.rb (revision 15430) +++ lib/rss/maker.rb (revision 15431) @@ -8,15 +8,15 @@ 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 @@ end def makers - MAKERS.values.uniq + MAKERS.values.collect {|info| info[:maker]}.uniq end end end Index: lib/rss/rss.rb =================================================================== --- lib/rss/rss.rb (revision 15430) +++ lib/rss/rss.rb (revision 15431) @@ -53,7 +53,7 @@ module RSS - VERSION = "0.2.3" + VERSION = "0.2.4" URI = "http://purl.org/rss/1.0/" Index: test/rss/test_maker_2.0.rb =================================================================== --- test/rss/test_maker_2.0.rb (revision 15430) +++ test/rss/test_maker_2.0.rb (revision 15431) @@ -430,6 +430,35 @@ test_items(false) end + def test_pubDate_without_description + title = "TITLE" + link = "http://hoge.com/" + description = "text hoge fuga" + author = "oprah@o..." + 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" Index: test/rss/test_maker_0.9.rb =================================================================== --- test/rss/test_maker_0.9.rb (revision 15430) +++ test/rss/test_maker_0.9.rb (revision 15431) @@ -13,7 +13,7 @@ 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) Index: test/rss/test_version.rb =================================================================== --- test/rss/test_version.rb (revision 15430) +++ test/rss/test_version.rb (revision 15431) @@ -3,7 +3,7 @@ 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/