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:
parent
d44deadd39
commit
1497522ab0
@ -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
|
6
activesupport/lib/core_ext/hash.rb
Normal file
6
activesupport/lib/core_ext/hash.rb
Normal file
@ -0,0 +1,6 @@
|
||||
$:.unshift(File.dirname(__FILE__))
|
||||
require 'hash/keys'
|
||||
|
||||
class Hash
|
||||
include ActiveSupport::CoreExtensions::Hash::Keys
|
||||
end
|
36
activesupport/lib/core_ext/hash/keys.rb
Normal file
36
activesupport/lib/core_ext/hash/keys.rb
Normal file
@ -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
|
8
activesupport/lib/core_ext/numeric.rb
Normal file
8
activesupport/lib/core_ext/numeric.rb
Normal file
@ -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
|
33
activesupport/lib/core_ext/numeric/bytes.rb
Normal file
33
activesupport/lib/core_ext/numeric/bytes.rb
Normal file
@ -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
|
58
activesupport/lib/core_ext/numeric/time.rb
Normal file
58
activesupport/lib/core_ext/numeric/time.rb
Normal file
@ -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
|
42
activesupport/test/core_ext/numeric_ext_test.rb
Normal file
42
activesupport/test/core_ext/numeric_ext_test.rb
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user