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

ruby-changes:15970

From: shyouhei <ko1@a...>
Date: Thu, 20 May 2010 16:14:47 +0900 (JST)
Subject: [ruby-changes:15970] Ruby:r27915 (ruby_1_8_7): merge revision(s) 26307:

shyouhei	2010-05-20 16:14:37 +0900 (Thu, 20 May 2010)

  New Revision: 27915

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27915

  Log:
    merge revision(s) 26307:
    * lib/rss/maker/base.rb, test/rss/test_maker_0.9.rb:
    accept any time format in maker. [ruby-core:26923]

  Modified files:
    branches/ruby_1_8_7/ChangeLog
    branches/ruby_1_8_7/lib/rss/maker/base.rb
    branches/ruby_1_8_7/test/rss/test_maker_0.9.rb
    branches/ruby_1_8_7/version.h

Index: ruby_1_8_7/ChangeLog
===================================================================
--- ruby_1_8_7/ChangeLog	(revision 27914)
+++ ruby_1_8_7/ChangeLog	(revision 27915)
@@ -1,3 +1,8 @@
+Thu May 20 15:59:14 2010  Kouhei Sutou  <kou@c...>
+
+	* lib/rss/maker/base.rb, test/rss/test_maker_0.9.rb:
+	accept any time format in maker. [ruby-core:26923]
+
 Thu May 20 15:54:08 2010  Akinori MUSHA  <knu@i...>
 
 	* eval.c (recursive_push): Taint internal hash to prevent
Index: ruby_1_8_7/version.h
===================================================================
--- ruby_1_8_7/version.h	(revision 27914)
+++ ruby_1_8_7/version.h	(revision 27915)
@@ -2,7 +2,7 @@
 #define RUBY_RELEASE_DATE "2010-05-20"
 #define RUBY_VERSION_CODE 187
 #define RUBY_RELEASE_CODE 20100520
-#define RUBY_PATCHLEVEL 256
+#define RUBY_PATCHLEVEL 257
 
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 8
Index: ruby_1_8_7/lib/rss/maker/base.rb
===================================================================
--- ruby_1_8_7/lib/rss/maker/base.rb	(revision 27914)
+++ ruby_1_8_7/lib/rss/maker/base.rb	(revision 27915)
@@ -341,7 +341,7 @@
           :date => date,
           :dc_dates => dc_dates.to_a.dup,
         }
-        _date = date
+        _date = _parse_date_if_needed(date)
         if _date and !dc_dates.any? {|dc_date| dc_date.value == _date}
           dc_date = self.class::DublinCoreDates::DublinCoreDate.new(self)
           dc_date.value = _date.dup
@@ -353,6 +353,11 @@
         date = keep[:date]
         dc_dates.replace(keep[:dc_dates])
       end
+
+      def _parse_date_if_needed(date_value)
+        date_value = Time.parse(date_value) if date_value.is_a?(String)
+        date_value
+      end
     end
 
     class RSSBase < Base
@@ -472,12 +477,24 @@
       end
 
       %w(id about language
-         managingEditor webMaster rating docs date
-         lastBuildDate ttl).each do |element|
+         managingEditor webMaster rating docs ttl).each do |element|
         attr_accessor element
         add_need_initialize_variable(element)
       end
 
+      %w(date lastBuildDate).each do |date_element|
+        attr_reader date_element
+        add_need_initialize_variable(date_element)
+      end
+
+      def date=(_date)
+        @date = _parse_date_if_needed(_date)
+      end
+
+      def lastBuildDate=(_date)
+        @lastBuildDate = _parse_date_if_needed(_date)
+      end
+
       def pubDate
         date
       end
@@ -672,11 +689,20 @@
           def_classed_elements(name, attribute)
 	end
 
-        %w(date comments id published).each do |element|
+        %w(comments id published).each do |element|
           attr_accessor element
           add_need_initialize_variable(element)
         end
 
+        %w(date).each do |date_element|
+          attr_reader date_element
+          add_need_initialize_variable(date_element)
+        end
+
+        def date=(_date)
+          @date = _parse_date_if_needed(_date)
+        end
+
         def pubDate
           date
         end
@@ -725,6 +751,8 @@
         end
 
         class SourceBase < Base
+          include SetupDefaultDate
+
           %w(authors categories contributors generator icon
              logo rights subtitle title).each do |name|
             def_classed_element(name)
@@ -736,7 +764,7 @@
             def_classed_elements(name, attribute)
           end
 
-          %w(id content date).each do |element|
+          %w(id content).each do |element|
             attr_accessor element
             add_need_initialize_variable(element)
           end
@@ -744,6 +772,15 @@
           alias_method(:url, :link)
           alias_method(:url=, :link=)
 
+          %w(date).each do |date_element|
+            attr_reader date_element
+            add_need_initialize_variable(date_element)
+          end
+
+          def date=(_date)
+            @date = _parse_date_if_needed(_date)
+          end
+
           def updated
             date
           end
Index: ruby_1_8_7/test/rss/test_maker_0.9.rb
===================================================================
--- ruby_1_8_7/test/rss/test_maker_0.9.rb	(revision 27914)
+++ ruby_1_8_7/test/rss/test_maker_0.9.rb	(revision 27915)
@@ -434,5 +434,22 @@
       end
       assert_nil(rss.channel.textInput)
     end
+
+    def test_date_in_string
+      date = Time.now
+
+      rss = RSS::Maker.make("0.91") do |maker|
+        setup_dummy_channel(maker)
+        setup_dummy_image(maker)
+
+        maker.items.new_item do |item|
+          item.title = "The first item"
+          item.link = "http://example.com/blog/1.html"
+          item.date = date.rfc822
+        end
+      end
+
+      assert_equal(date.iso8601, rss.items[0].date.iso8601)
+    end
   end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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