aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-01-10 13:14:50 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-01-10 13:14:50 +0000
commit38e55bac6197c937c2f1ef356ff3be234758a7c7 (patch)
tree9c87c8065ef8ff720ed08fb7a5d07b59c58c4623
parent576b1627254ff0d40063312d7df876706a87eba6 (diff)
downloadrails-38e55bac6197c937c2f1ef356ff3be234758a7c7.tar.gz
rails-38e55bac6197c937c2f1ef356ff3be234758a7c7.tar.bz2
rails-38e55bac6197c937c2f1ef356ff3be234758a7c7.zip
Added time unit extensions to Fixnum that'll return the period in seconds, like 2.days + 4.hours
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@365 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rwxr-xr-xactiverecord/lib/active_record.rb1
-rw-r--r--activesupport/CHANGELOG1
-rw-r--r--activesupport/lib/core_ext/fixnum_ext.rb36
-rw-r--r--activesupport/test/core_ext/fixnum_ext_test.rb16
4 files changed, 54 insertions, 0 deletions
diff --git a/activerecord/lib/active_record.rb b/activerecord/lib/active_record.rb
index 3a6fe1eb6e..7a7b39890a 100755
--- a/activerecord/lib/active_record.rb
+++ b/activerecord/lib/active_record.rb
@@ -24,6 +24,7 @@
$:.unshift(File.dirname(__FILE__))
+require 'action_controller/support/core_ext'
require 'active_record/support/clean_logger'
require 'active_record/support/misc'
require 'active_record/support/dependencies'
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
new file mode 100644
index 0000000000..f16ab7941f
--- /dev/null
+++ b/activesupport/CHANGELOG
@@ -0,0 +1 @@
+* Added time unit extensions to Fixnum that'll return the period in seconds, like 2.days + 4.hours. \ No newline at end of file
diff --git a/activesupport/lib/core_ext/fixnum_ext.rb b/activesupport/lib/core_ext/fixnum_ext.rb
new file mode 100644
index 0000000000..c7b875c021
--- /dev/null
+++ b/activesupport/lib/core_ext/fixnum_ext.rb
@@ -0,0 +1,36 @@
+class Fixnum
+ def minutes
+ self * 60
+ end
+ alias :minute :minutes
+
+ def hours
+ self * 60.minutes
+ end
+ alias :hour :hours
+
+ def days
+ self * 24.hours
+ end
+ alias :day :days
+
+ def weeks
+ self * 7.days
+ end
+ alias :week :weeks
+
+ def fortnights
+ self * 2.weeks
+ end
+ alias :fortnight :fortnights
+
+ def months
+ self * 30.days
+ end
+ alias :month :months
+
+ def years
+ self * 365.days
+ end
+ alias :year :years
+end \ No newline at end of file
diff --git a/activesupport/test/core_ext/fixnum_ext_test.rb b/activesupport/test/core_ext/fixnum_ext_test.rb
new file mode 100644
index 0000000000..4014ad07d0
--- /dev/null
+++ b/activesupport/test/core_ext/fixnum_ext_test.rb
@@ -0,0 +1,16 @@
+require 'test/unit'
+require File.dirname(__FILE__) + '/../../lib/core_ext/fixnum_ext'
+
+class FixnumExtTest < Test::Unit::TestCase
+ def test_time_units
+ expected = {
+ 1.minute => 60,
+ 10.minutes => 600,
+ 1.hour + 15.minutes => 4500,
+ 2.days + 4.hours + 30.minutes => 189000,
+ 5.years + 1.month + 1.fortnight => 161481600
+ }
+
+ expected.each { |actual, expected| assert_equal expected, actual }
+ end
+end \ No newline at end of file