diff options
Diffstat (limited to 'activesupport/lib/active_support/core_ext/time/calculations.rb')
-rw-r--r-- | activesupport/lib/active_support/core_ext/time/calculations.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/time/calculations.rb b/activesupport/lib/active_support/core_ext/time/calculations.rb index cd412368dc..70a4768d13 100644 --- a/activesupport/lib/active_support/core_ext/time/calculations.rb +++ b/activesupport/lib/active_support/core_ext/time/calculations.rb @@ -5,6 +5,11 @@ module ActiveSupport #:nodoc: module Calculations def self.included(base) #:nodoc: base.extend(ClassMethods) + + base.send(:alias_method, :plus_without_duration, :+) + base.send(:alias_method, :+, :plus_with_duration) + base.send(:alias_method, :minus_without_duration, :-) + base.send(:alias_method, :-, :minus_with_duration) end module ClassMethods @@ -190,6 +195,22 @@ module ActiveSupport #:nodoc: def tomorrow self.since(1.day) end + + def plus_with_duration(other) #:nodoc: + if ActiveSupport::Duration === other + other.since(self) + else + plus_without_duration(other) + end + end + + def minus_with_duration(other) #:nodoc: + if ActiveSupport::Duration === other + other.until(self) + else + minus_without_duration(other) + end + end end end end |