diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-10-31 08:08:46 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-10-31 08:08:46 +0000 |
commit | 0f519375ab0fe774ccbca66104fe6234709cd466 (patch) | |
tree | 1a6f90a433512f1f5be08298ab8ccee9feb2d9ba | |
parent | d9ec86f41017e2adeae4fa087fca88593bfa1a6b (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-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/time.rb | 10 | ||||
-rw-r--r-- | time.c | 2 |
3 files changed, 14 insertions, 6 deletions
@@ -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}") @@ -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; } |