summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-20 07:14:37 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-20 07:14:37 +0000
commitb1ca15e4ee49fb8a583add67757a44bd39769fc3 (patch)
treeba90c25028872307ed19c870ad2ead9c699087ae
parenta6d4e18284842ec93e91aed228392d51dd1ac966 (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--ChangeLog5
-rw-r--r--lib/rss/maker/base.rb47
-rw-r--r--test/rss/test_maker_0.9.rb17
-rw-r--r--version.h2
4 files changed, 65 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 33ed37b6e4..ee013e73ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/version.h b/version.h
index aa3fe66aff..498f05cd04 100644
--- a/version.h
+++ b/version.h
@@ -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