diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-20 07:14:37 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-20 07:14:37 +0000 |
commit | b1ca15e4ee49fb8a583add67757a44bd39769fc3 (patch) | |
tree | ba90c25028872307ed19c870ad2ead9c699087ae | |
parent | a6d4e18284842ec93e91aed228392d51dd1ac966 (diff) |
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]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@27915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/rss/maker/base.rb | 47 | ||||
-rw-r--r-- | test/rss/test_maker_0.9.rb | 17 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 65 insertions, 6 deletions
@@ -1,3 +1,8 @@ +Thu May 20 15:59:14 2010 Kouhei Sutou <kou@cozmixng.org> + + * 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@iDaemons.org> * eval.c (recursive_push): Taint internal hash to prevent diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb index 56bf04657e..3037772a08 100644 --- a/lib/rss/maker/base.rb +++ b/lib/rss/maker/base.rb @@ -341,7 +341,7 @@ module RSS :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 @@ module RSS 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 @@ module RSS 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 @@ module RSS 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 @@ module RSS 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 @@ module RSS 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 @@ module RSS 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 diff --git a/test/rss/test_maker_0.9.rb b/test/rss/test_maker_0.9.rb index c211bf605b..8d59d22ef5 100644 --- a/test/rss/test_maker_0.9.rb +++ b/test/rss/test_maker_0.9.rb @@ -434,5 +434,22 @@ module RSS 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 @@ -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 |