aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2009-03-23 22:01:51 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2009-03-23 22:01:51 -0700
commite094940c2b5a5163504859efd3a0bcc49c40451e (patch)
tree999fba1608b264fb169da1e5682a5dba9208e29f
parent0bd668fd8867b01c15f943613707b3c7eb59afff (diff)
downloadrails-e094940c2b5a5163504859efd3a0bcc49c40451e.tar.gz
rails-e094940c2b5a5163504859efd3a0bcc49c40451e.tar.bz2
rails-e094940c2b5a5163504859efd3a0bcc49c40451e.zip
Move Numeric#to_utc_offset_s to TimeZone.seconds_to_utc_offset
-rw-r--r--activesupport/lib/active_support/core_ext/date_time/conversions.rb2
-rw-r--r--activesupport/lib/active_support/core_ext/numeric/conversions.rb15
-rw-r--r--activesupport/lib/active_support/core_ext/time/conversions.rb2
-rw-r--r--activesupport/lib/active_support/time_with_zone.rb2
-rw-r--r--activesupport/lib/active_support/values/time_zone.rb16
-rw-r--r--activesupport/test/core_ext/numeric_ext_test.rb15
-rw-r--r--activesupport/test/time_zone_test.rb12
7 files changed, 30 insertions, 34 deletions
diff --git a/activesupport/lib/active_support/core_ext/date_time/conversions.rb b/activesupport/lib/active_support/core_ext/date_time/conversions.rb
index 7c948267b3..f2cc87e119 100644
--- a/activesupport/lib/active_support/core_ext/date_time/conversions.rb
+++ b/activesupport/lib/active_support/core_ext/date_time/conversions.rb
@@ -56,7 +56,7 @@ module ActiveSupport #:nodoc:
# datetime.formatted_offset # => "-06:00"
# datetime.formatted_offset(false) # => "-0600"
def formatted_offset(colon = true, alternate_utc_string = nil)
- utc? && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ utc? && alternate_utc_string || TimeZone.seconds_to_utc_offset(utc_offset, colon)
end
# Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005 14:30:00 +0000"
diff --git a/activesupport/lib/active_support/core_ext/numeric/conversions.rb b/activesupport/lib/active_support/core_ext/numeric/conversions.rb
deleted file mode 100644
index a16a8e7c09..0000000000
--- a/activesupport/lib/active_support/core_ext/numeric/conversions.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-class Numeric
- UTC_OFFSET_WITH_COLON = '%+03d:%02d'
- UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.sub(':', '')
-
- # Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset)
- # and turns this into an +HH:MM formatted string. Example:
- #
- # -21_600.to_utc_offset_s # => "-06:00"
- def to_utc_offset_s(colon = true)
- format = colon ? UTC_OFFSET_WITH_COLON : UTC_OFFSET_WITHOUT_COLON
- hours = self / 3600
- minutes = (abs % 3600) / 60
- format % [hours, minutes]
- end
-end
diff --git a/activesupport/lib/active_support/core_ext/time/conversions.rb b/activesupport/lib/active_support/core_ext/time/conversions.rb
index e6f9134661..d18a7e5295 100644
--- a/activesupport/lib/active_support/core_ext/time/conversions.rb
+++ b/activesupport/lib/active_support/core_ext/time/conversions.rb
@@ -54,7 +54,7 @@ module ActiveSupport #:nodoc:
# Time.local(2000).formatted_offset # => "-06:00"
# Time.local(2000).formatted_offset(false) # => "-0600"
def formatted_offset(colon = true, alternate_utc_string = nil)
- utc? && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ utc? && alternate_utc_string || TimeZone.seconds_to_utc_offset(utc_offset, colon)
end
# Converts a Time object to a Date, dropping hour, minute, and second precision.
diff --git a/activesupport/lib/active_support/time_with_zone.rb b/activesupport/lib/active_support/time_with_zone.rb
index 518ca7742f..1937deff7c 100644
--- a/activesupport/lib/active_support/time_with_zone.rb
+++ b/activesupport/lib/active_support/time_with_zone.rb
@@ -87,7 +87,7 @@ module ActiveSupport
alias_method :gmtoff, :utc_offset
def formatted_offset(colon = true, alternate_utc_string = nil)
- utc? && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ utc? && alternate_utc_string || TimeZone.seconds_to_utc_offset(utc_offset, colon)
end
# Time uses +zone+ to display the time zone abbreviation, so we're duck-typing it.
diff --git a/activesupport/lib/active_support/values/time_zone.rb b/activesupport/lib/active_support/values/time_zone.rb
index 836f469df7..516ef2d8f0 100644
--- a/activesupport/lib/active_support/values/time_zone.rb
+++ b/activesupport/lib/active_support/values/time_zone.rb
@@ -170,6 +170,20 @@ module ActiveSupport
MAPPING.freeze
end
+ UTC_OFFSET_WITH_COLON = '%+03d:%02d'
+ UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.sub(':', '')
+
+ # Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset)
+ # and turns this into an +HH:MM formatted string. Example:
+ #
+ # TimeZone.seconds_to_utc_offset(-21_600) # => "-06:00"
+ def self.seconds_to_utc_offset(seconds, colon = true)
+ format = colon ? UTC_OFFSET_WITH_COLON : UTC_OFFSET_WITHOUT_COLON
+ hours = seconds / 3600
+ minutes = (seconds.abs % 3600) / 60
+ format % [hours, minutes]
+ end
+
include Comparable
attr_reader :name
@@ -190,7 +204,7 @@ module ActiveSupport
# Returns the offset of this time zone as a formatted string, of the
# format "+HH:MM".
def formatted_offset(colon=true, alternate_utc_string = nil)
- utc_offset == 0 && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
+ utc_offset == 0 && alternate_utc_string || self.class.seconds_to_utc_offset(utc_offset, colon)
end
# Compare this time zone to the parameter. The two are comapred first on
diff --git a/activesupport/test/core_ext/numeric_ext_test.rb b/activesupport/test/core_ext/numeric_ext_test.rb
index 5401ed7c7e..1beb038d56 100644
--- a/activesupport/test/core_ext/numeric_ext_test.rb
+++ b/activesupport/test/core_ext/numeric_ext_test.rb
@@ -145,18 +145,3 @@ class NumericExtSizeTest < Test::Unit::TestCase
assert_equal 3458764513820540928, 3.exabyte
end
end
-
-class NumericExtConversionsTest < Test::Unit::TestCase
-
- def test_to_utc_offset_s_with_colon
- assert_equal "-06:00", -21_600.to_utc_offset_s
- assert_equal "+00:00", 0.to_utc_offset_s
- assert_equal "+05:00", 18_000.to_utc_offset_s
- end
-
- def test_to_utc_offset_s_without_colon
- assert_equal "-0600", -21_600.to_utc_offset_s(false)
- assert_equal "+0000", 0.to_utc_offset_s(false)
- assert_equal "+0500", 18_000.to_utc_offset_s(false)
- end
-end
diff --git a/activesupport/test/time_zone_test.rb b/activesupport/test/time_zone_test.rb
index b01f62460a..d3dbeda2c8 100644
--- a/activesupport/test/time_zone_test.rb
+++ b/activesupport/test/time_zone_test.rb
@@ -196,6 +196,18 @@ class TimeZoneTest < Test::Unit::TestCase
assert_equal(-18_000, zone.utc_offset)
end
+ def test_seconds_to_utc_offset_with_colon
+ assert_equal "-06:00", TimeZone.seconds_to_utc_offset(-21_600)
+ assert_equal "+00:00", TimeZone.seconds_to_utc_offset(0)
+ assert_equal "+05:00", TimeZone.seconds_to_utc_offset(18_000)
+ end
+
+ def test_seconds_to_utc_offset_without_colon
+ assert_equal "-0600", TimeZone.seconds_to_utc_offset(-21_600)
+ assert_equal "+0000", TimeZone.seconds_to_utc_offset(0)
+ assert_equal "+0500", TimeZone.seconds_to_utc_offset(18_000)
+ end
+
def test_formatted_offset_positive
zone = ActiveSupport::TimeZone['Moscow']
assert_equal "+03:00", zone.formatted_offset