summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-10-31 08:08:46 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-10-31 08:08:46 +0000
commit0f519375ab0fe774ccbca66104fe6234709cd466 (patch)
tree1a6f90a433512f1f5be08298ab8ccee9feb2d9ba
parentd9ec86f41017e2adeae4fa087fca88593bfa1a6b (diff)
* time.c (time_dup): duplicate the class of original time.
[ruby-core:09357] * lib/time.rb (Time::make_time, Time::rfc2822, Time::httpdate): should respect subclasses. [ruby-core:09357] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--lib/time.rb10
-rw-r--r--time.c2
3 files changed, 14 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 12c2a44356..10b0e3cfeb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Tue Oct 31 17:03:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_dup): duplicate the class of original time.
+ [ruby-core:09357]
+
+ * lib/time.rb (Time::make_time, Time::rfc2822, Time::httpdate):
+ should respect subclasses. [ruby-core:09357]
+
Tue Oct 31 16:25:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (ary_shared_first): should address offset after
diff --git a/lib/time.rb b/lib/time.rb
index b96c6e73d0..f7a08e947c 100644
--- a/lib/time.rb
+++ b/lib/time.rb
@@ -181,7 +181,7 @@ class Time
t.localtime if !zone_utc?(zone)
t
else
- Time.local(year, mon, day, hour, min, sec, usec)
+ self.local(year, mon, day, hour, min, sec, usec)
end
end
private :make_time
@@ -304,7 +304,7 @@ class Time
year, mon, day, hour, min, sec =
apply_offset(year, mon, day, hour, min, sec, zone_offset(zone))
- t = Time.utc(year, mon, day, hour, min, sec)
+ t = self.utc(year, mon, day, hour, min, sec)
t.localtime if !zone_utc?(zone)
t
else
@@ -331,14 +331,14 @@ class Time
(\d{2}):(\d{2}):(\d{2})\x20
GMT
\s*\z/ix =~ date
- Time.rfc2822(date)
+ self.rfc2822(date)
elsif /\A\s*
(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday),\x20
(\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d)\x20
(\d\d):(\d\d):(\d\d)\x20
GMT
\s*\z/ix =~ date
- Time.parse(date)
+ self.parse(date)
elsif /\A\s*
(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\x20
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
@@ -346,7 +346,7 @@ class Time
(\d\d):(\d\d):(\d\d)\x20
(\d{4})
\s*\z/ix =~ date
- Time.utc($6.to_i, MonthValue[$1.upcase], $2.to_i,
+ self.utc($6.to_i, MonthValue[$1.upcase], $2.to_i,
$3.to_i, $4.to_i, $5.to_i)
else
raise ArgumentError.new("not RFC 2616 compliant date: #{date.inspect}")
diff --git a/time.c b/time.c
index c9be587c47..68ed3844ac 100644
--- a/time.c
+++ b/time.c
@@ -1019,7 +1019,7 @@ time_init_copy(VALUE copy, VALUE time)
static VALUE
time_dup(VALUE time)
{
- VALUE dup = time_s_alloc(rb_cTime);
+ VALUE dup = time_s_alloc(CLASS_OF(time));
time_init_copy(dup, time);
return dup;
}