Fixed the half applied 393 changeset

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@395 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-01-11 22:06:05 +00:00
parent d44deadd39
commit 1497522ab0
9 changed files with 183 additions and 81 deletions

@ -1,52 +0,0 @@
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
# 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

@ -0,0 +1,6 @@
$:.unshift(File.dirname(__FILE__))
require 'hash/keys'
class Hash
include ActiveSupport::CoreExtensions::Hash::Keys
end

@ -0,0 +1,36 @@
module ActiveSupport
module CoreExtensions
module Hash
module Keys
# Return a new hash with all keys converted to symbols.
def symbolize_keys
inject({}) do |options, (key, value)|
options[key.to_sym] = value
options
end
end
# Destructively convert all keys to symbols.
def symbolize_keys!
keys.each do |key|
unless key.is_a?(Symbol)
self[key.to_sym] = self[key]
delete(key)
end
end
self
end
alias_method :to_options, :symbolize_keys
alias_method :to_options!, :symbolize_keys!
def assert_valid_keys(valid_keys)
unknown_keys = keys - valid_keys
raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(", ")}") unless unknown_keys.empty?
end
end
end
end
end

@ -1,6 +0,0 @@
class Hash
def assert_valid_keys(valid_keys)
unknown_keys = keys - valid_keys
raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(", ")}") unless unknown_keys.empty?
end
end

@ -0,0 +1,8 @@
$:.unshift(File.dirname(__FILE__))
require 'numeric/time'
require 'numeric/bytes'
class Numeric
include ActiveSupport::CoreExtensions::Numeric::Time
include ActiveSupport::CoreExtensions::Numeric::Bytes
end

@ -0,0 +1,33 @@
module ActiveSupport
module CoreExtensions
module Numeric
module Bytes
def bytes
self
end
alias :byte :bytes
def kilobytes
self * 1024
end
alias :kilobyte :kilobytes
def megabytes
self * 1024.kilobytes
end
alias :megabyte :megabytes
def gigabytes
self * 1024.megabytes
end
alias :gigabyte :gigabytes
def terabytes
self * 1024.gigabytes
end
alias :terabyte :terabytes
end
end
end
end

@ -0,0 +1,58 @@
module ActiveSupport
module CoreExtensions
module Numeric
module Time
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
# 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
end
end
end

@ -1,23 +0,0 @@
require 'test/unit'
require File.dirname(__FILE__) + '/../../lib/core_ext/fixnum_ext'
class FixnumExtTest < Test::Unit::TestCase
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
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

@ -0,0 +1,42 @@
require 'test/unit'
require File.dirname(__FILE__) + '/../../lib/core_ext/numeric'
class NumericExtTimeTest < Test::Unit::TestCase
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
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
class NumericExtSizeTest < Test::Unit::TestCase
def test_unit_in_terms_of_another
relationships = {
1024.kilobytes => 1.megabyte,
3584.0.kilobytes => 3.5.megabytes,
3584.0.megabytes => 3.5.gigabytes,
1.kilobyte ** 4 => 1.terabyte,
1024.kilobytes + 2.megabytes => 3.megabytes,
2.gigabytes / 4 => 512.megabytes,
256.megabytes * 20 + 5.gigabytes => 10.gigabytes
}
relationships.each do |left, right|
assert_equal right, left
end
end
end