aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorGeoff Buesing <gbuesing@gmail.com>2008-02-16 23:39:40 +0000
committerGeoff Buesing <gbuesing@gmail.com>2008-02-16 23:39:40 +0000
commit25e139e545f11c7764abe250f8f33d58874516d7 (patch)
treeaadbd8b19c84cdfed0423cde3b6191eeeb7d88b5 /activesupport
parente7ebd656b31244c3da5abf45e100c8e976c79d50 (diff)
downloadrails-25e139e545f11c7764abe250f8f33d58874516d7.tar.gz
rails-25e139e545f11c7764abe250f8f33d58874516d7.tar.bz2
rails-25e139e545f11c7764abe250f8f33d58874516d7.zip
Time.=== returns true for TimeWithZone instances
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8885 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/CHANGELOG2
-rw-r--r--activesupport/lib/active_support/core_ext/time/calculations.rb5
-rw-r--r--activesupport/test/core_ext/time_ext_test.rb6
3 files changed, 13 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
index 589ae8a365..af853f5f15 100644
--- a/activesupport/CHANGELOG
+++ b/activesupport/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Time.=== returns true for TimeWithZone instances [Geoff Buesing]
+
* TimeWithZone #+ and #- behave consistently with numeric arguments regardless of whether wrapped time is a Time or DateTime; consistenty answers false to #acts_like?(:date) [Geoff Buesing]
* Add String#squish and String#squish! to remove consecutive chunks of whitespace. #11123 [jordi, Henrik N]
diff --git a/activesupport/lib/active_support/core_ext/time/calculations.rb b/activesupport/lib/active_support/core_ext/time/calculations.rb
index 7fbfca5b2a..ad260f809b 100644
--- a/activesupport/lib/active_support/core_ext/time/calculations.rb
+++ b/activesupport/lib/active_support/core_ext/time/calculations.rb
@@ -24,6 +24,11 @@ module ActiveSupport #:nodoc:
COMMON_YEAR_DAYS_IN_MONTH = [nil, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
module ClassMethods
+ # Overriding case equality method so that it returns true for ActiveSupport::TimeWithZone instances
+ def ===(other)
+ other.is_a?(::Time)
+ end
+
# Return the number of days in the given month.
# If no year is specified, it will use the current year.
def days_in_month(month, year = now.year)
diff --git a/activesupport/test/core_ext/time_ext_test.rb b/activesupport/test/core_ext/time_ext_test.rb
index 40e8c5ecfd..d4a555d55e 100644
--- a/activesupport/test/core_ext/time_ext_test.rb
+++ b/activesupport/test/core_ext/time_ext_test.rb
@@ -468,6 +468,12 @@ class TimeExtCalculationsTest < Test::Unit::TestCase
end
end
+ def test_case_equality
+ assert Time === Time.utc(2000)
+ assert Time === ActiveSupport::TimeWithZone.new(Time.utc(2000), TimeZone['UTC'])
+ assert_equal false, Time === DateTime.civil(2000)
+ end
+
protected
def with_env_tz(new_tz = 'US/Eastern')
old_tz, ENV['TZ'] = ENV['TZ'], new_tz