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

ruby-changes:14472

From: kou <ko1@a...>
Date: Wed, 13 Jan 2010 00:00:36 +0900 (JST)
Subject: [ruby-changes:14472] Ruby:r26307 (ruby_1_8): merge r26304.

kou	2010-01-13 00:00:22 +0900 (Wed, 13 Jan 2010)

  New Revision: 26307

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

  Log:
    merge r26304.
    
    * 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/ChangeLog
    branches/ruby_1_8/lib/rss/maker/base.rb
    branches/ruby_1_8/test/rss/test_maker_0.9.rb

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 26306)
+++ ruby_1_8/ChangeLog	(revision 26307)
@@ -1,3 +1,8 @@
+Tue Jan 12 23:58:27 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]
+
 Tue Jan 12 12:49:39 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* misc/ruby-mode.el (ruby-here-doc-beg-match): fix for here-doc
Index: ruby_1_8/lib/rss/maker/base.rb
===================================================================
--- ruby_1_8/lib/rss/maker/base.rb	(revision 26306)
+++ ruby_1_8/lib/rss/maker/base.rb	(revision 26307)
@@ -358,7 +358,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
@@ -370,6 +370,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
 
     module SetupDefaultLanguage
@@ -503,12 +508,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
@@ -703,11 +720,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
@@ -764,6 +790,8 @@
         end
 
         class SourceBase < Base
+          include SetupDefaultDate
+
           %w(authors categories contributors generator icon
              logo rights subtitle title).each do |name|
             def_classed_element(name)
@@ -775,7 +803,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
@@ -783,6 +811,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/test/rss/test_maker_0.9.rb
===================================================================
--- ruby_1_8/test/rss/test_maker_0.9.rb	(revision 26306)
+++ ruby_1_8/test/rss/test_maker_0.9.rb	(revision 26307)
@@ -453,5 +453,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/

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