diff options
Diffstat (limited to 'activesupport/lib/core_ext')
-rw-r--r-- | activesupport/lib/core_ext/fixnum_ext.rb | 52 | ||||
-rw-r--r-- | activesupport/lib/core_ext/hash.rb | 6 | ||||
-rw-r--r-- | activesupport/lib/core_ext/hash/keys.rb | 36 | ||||
-rw-r--r-- | activesupport/lib/core_ext/hash_ext.rb | 6 | ||||
-rw-r--r-- | activesupport/lib/core_ext/numeric.rb | 8 | ||||
-rw-r--r-- | activesupport/lib/core_ext/numeric/bytes.rb | 33 | ||||
-rw-r--r-- | activesupport/lib/core_ext/numeric/time.rb | 58 |
7 files changed, 141 insertions, 58 deletions
diff --git a/activesupport/lib/core_ext/fixnum_ext.rb b/activesupport/lib/core_ext/fixnum_ext.rb deleted file mode 100644 index 14944df3bb..0000000000 --- a/activesupport/lib/core_ext/fixnum_ext.rb +++ /dev/null @@ -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 diff --git a/activesupport/lib/core_ext/hash.rb b/activesupport/lib/core_ext/hash.rb new file mode 100644 index 0000000000..2aa7843e75 --- /dev/null +++ b/activesupport/lib/core_ext/hash.rb @@ -0,0 +1,6 @@ +$:.unshift(File.dirname(__FILE__)) +require 'hash/keys' + +class Hash + include ActiveSupport::CoreExtensions::Hash::Keys +end diff --git a/activesupport/lib/core_ext/hash/keys.rb b/activesupport/lib/core_ext/hash/keys.rb new file mode 100644 index 0000000000..0db37a6374 --- /dev/null +++ b/activesupport/lib/core_ext/hash/keys.rb @@ -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 diff --git a/activesupport/lib/core_ext/hash_ext.rb b/activesupport/lib/core_ext/hash_ext.rb deleted file mode 100644 index 90670c42c7..0000000000 --- a/activesupport/lib/core_ext/hash_ext.rb +++ /dev/null @@ -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
\ No newline at end of file diff --git a/activesupport/lib/core_ext/numeric.rb b/activesupport/lib/core_ext/numeric.rb new file mode 100644 index 0000000000..ddc3d21c38 --- /dev/null +++ b/activesupport/lib/core_ext/numeric.rb @@ -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 diff --git a/activesupport/lib/core_ext/numeric/bytes.rb b/activesupport/lib/core_ext/numeric/bytes.rb new file mode 100644 index 0000000000..59846ff37e --- /dev/null +++ b/activesupport/lib/core_ext/numeric/bytes.rb @@ -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 diff --git a/activesupport/lib/core_ext/numeric/time.rb b/activesupport/lib/core_ext/numeric/time.rb new file mode 100644 index 0000000000..850dc9a783 --- /dev/null +++ b/activesupport/lib/core_ext/numeric/time.rb @@ -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 |