[前][次][番号順一覧][スレッド一覧]

ruby-changes:3942

From: ko1@a...
Date: Mon, 11 Feb 2008 17:27:04 +0900 (JST)
Subject: [ruby-changes:3942] kou - Ruby:r15432 (ruby_1_8): * lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb, NEWS:

kou	2008-02-11 17:26:47 +0900 (Mon, 11 Feb 2008)

  New Revision: 15432

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/NEWS
    branches/ruby_1_8/lib/rss/maker/0.9.rb
    branches/ruby_1_8/lib/rss/maker/1.0.rb
    branches/ruby_1_8/lib/rss/maker/2.0.rb
    branches/ruby_1_8/lib/rss/maker/base.rb
    branches/ruby_1_8/lib/rss/maker/entry.rb
    branches/ruby_1_8/lib/rss/maker/feed.rb
    branches/ruby_1_8/lib/rss/maker.rb
    branches/ruby_1_8/lib/rss/rss.rb
    branches/ruby_1_8/test/rss/test_maker_0.9.rb
    branches/ruby_1_8/test/rss/test_maker_2.0.rb
    branches/ruby_1_8/test/rss/test_version.rb

  Log:
    * 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.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/maker/1.0.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/maker/entry.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/maker/feed.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/test/rss/test_version.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/maker/0.9.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/maker.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/test/rss/test_maker_0.9.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/test/rss/test_maker_2.0.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/maker/2.0.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/rss.rb?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/NEWS?r1=15432&r2=15431&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/rss/maker/base.rb?r1=15432&r2=15431&diff_format=u

Index: ruby_1_8/NEWS
===================================================================
--- ruby_1_8/NEWS	(revision 15431)
+++ ruby_1_8/NEWS	(revision 15432)
@@ -85,7 +85,7 @@
 
 * rss
 
-  * 0.1.6 -> 0.2.3
+  * 0.1.6 -> 0.2.4
 
   * Fix image module URI
 
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 15431)
+++ ruby_1_8/ChangeLog	(revision 15432)
@@ -1,3 +1,16 @@
+Mon Feb 11 17:25:21 2008  Kouhei Sutou  <kou@c...>
+
+	* 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@m...>
 
 	* ChangeLog: format-time-string under C locale. [ruby-dev:33261]
Index: ruby_1_8/lib/rss/maker/1.0.rb
===================================================================
--- ruby_1_8/lib/rss/maker/1.0.rb	(revision 15431)
+++ ruby_1_8/lib/rss/maker/1.0.rb	(revision 15432)
@@ -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: ruby_1_8/lib/rss/maker/2.0.rb
===================================================================
--- ruby_1_8/lib/rss/maker/2.0.rb	(revision 15431)
+++ ruby_1_8/lib/rss/maker/2.0.rb	(revision 15432)
@@ -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: ruby_1_8/lib/rss/maker/entry.rb
===================================================================
--- ruby_1_8/lib/rss/maker/entry.rb	(revision 15431)
+++ ruby_1_8/lib/rss/maker/entry.rb	(revision 15432)
@@ -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: ruby_1_8/lib/rss/maker/feed.rb
===================================================================
--- ruby_1_8/lib/rss/maker/feed.rb	(revision 15431)
+++ ruby_1_8/lib/rss/maker/feed.rb	(revision 15432)
@@ -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: ruby_1_8/lib/rss/maker/0.9.rb
===================================================================
--- ruby_1_8/lib/rss/maker/0.9.rb	(revision 15431)
+++ ruby_1_8/lib/rss/maker/0.9.rb	(revision 15432)
@@ -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: ruby_1_8/lib/rss/maker/base.rb
===================================================================
--- ruby_1_8/lib/rss/maker/base.rb	(revision 15431)
+++ ruby_1_8/lib/rss/maker/base.rb	(revision 15432)
@@ -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: ruby_1_8/lib/rss/maker.rb
===================================================================
--- ruby_1_8/lib/rss/maker.rb	(revision 15431)
+++ ruby_1_8/lib/rss/maker.rb	(revision 15432)
@@ -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: ruby_1_8/lib/rss/rss.rb
===================================================================
--- ruby_1_8/lib/rss/rss.rb	(revision 15431)
+++ ruby_1_8/lib/rss/rss.rb	(revision 15432)
@@ -52,7 +52,7 @@
 
 module RSS
 
-  VERSION = "0.2.3"
+  VERSION = "0.2.4"
 
   URI = "http://purl.org/rss/1.0/"
 
Index: ruby_1_8/test/rss/test_maker_2.0.rb
===================================================================
--- ruby_1_8/test/rss/test_maker_2.0.rb	(revision 15431)
+++ ruby_1_8/test/rss/test_maker_2.0.rb	(revision 15432)
@@ -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: ruby_1_8/test/rss/test_maker_0.9.rb
===================================================================
--- ruby_1_8/test/rss/test_maker_0.9.rb	(revision 15431)
+++ ruby_1_8/test/rss/test_maker_0.9.rb	(revision 15432)
@@ -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: ruby_1_8/test/rss/test_version.rb
===================================================================
--- ruby_1_8/test/rss/test_version.rb	(revision 15431)
+++ ruby_1_8/test/rss/test_version.rb	(revision 15432)
@@ -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/

[前][次][番号順一覧][スレッド一覧]