From 38e55bac6197c937c2f1ef356ff3be234758a7c7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 10 Jan 2005 13:14:50 +0000 Subject: 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 --- activerecord/lib/active_record.rb | 1 + activesupport/CHANGELOG | 1 + activesupport/lib/core_ext/fixnum_ext.rb | 36 ++++++++++++++++++++++++++ activesupport/test/core_ext/fixnum_ext_test.rb | 16 ++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 activesupport/CHANGELOG create mode 100644 activesupport/lib/core_ext/fixnum_ext.rb create mode 100644 activesupport/test/core_ext/fixnum_ext_test.rb 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 -- cgit v1.2.3