Added Fixnum#ago/until, Fixnum#since/from_now #450 [bitsweat]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@371 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-01-10 22:49:45 +00:00
parent ebf424061d
commit 14ed815b1c
3 changed files with 31 additions and 6 deletions

View File

@ -1,3 +1,5 @@
* Added Fixnum#ago/until, Fixnum#since/from_now #450 [bitsweat]
* Added that Inflector now accepts Symbols and Classes by calling .to_s on the word supplied
* Added time unit extensions to Fixnum that'll return the period in seconds, like 2.days + 4.hours.

View File

@ -33,4 +33,20 @@ class Fixnum
self * 365.days
end
alias :year :years
# Reads best without arguments: 10.minutes.ago
def ago(time = Time.now)
time - self
end
# Reads best with argument: 10.minutes.until(time)
alias :until :ago
# Reads best with argument: 10.minutes.since(time)
def since(time = Time.now)
time + self
end
# Reads best without arguments: 10.minutes.from_now
alias :from_now :since
end

View File

@ -2,15 +2,22 @@ require 'test/unit'
require File.dirname(__FILE__) + '/../../lib/core_ext/fixnum_ext'
class FixnumExtTest < Test::Unit::TestCase
def test_time_units
expected = {
def setup
@now = Time.now
@seconds = {
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
}
end
expected.each { |actual, expected| assert_equal expected, actual }
def test_time_units
@seconds.each do |actual, expected|
assert_equal expected, actual
assert_equal expected.since(@now), @now + actual
assert_equal expected.until(@now), @now - actual
end
end
end