diff options
Diffstat (limited to 'lib/date.rb')
-rw-r--r-- | lib/date.rb | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/date.rb b/lib/date.rb index f3edb5374b..802ce8ec14 100644 --- a/lib/date.rb +++ b/lib/date.rb @@ -194,6 +194,7 @@ # puts secs_to_new_year() require 'date/format' +require 'date/delta' # Class representing a date. # @@ -1336,6 +1337,9 @@ class Date def + (n) case n when Numeric; return self.class.new!(@ajd + n, @of, @sg) + when Delta + d = n.__send__(:delta) + return (self >> d.imag) + d.real end raise TypeError, 'expected numeric' end @@ -1352,8 +1356,11 @@ class Date case x when Numeric; return self.class.new!(@ajd - x, @of, @sg) when Date; return @ajd - x.ajd + when Delta + d = x.__send__(:delta) + return (self << d.imag) - d.real end - raise TypeError, 'expected numeric or date' + raise TypeError, 'expected numeric' end # Compare this date with another date. @@ -1371,6 +1378,12 @@ class Date case other when Numeric; return @ajd <=> other when Date; return @ajd <=> other.ajd + else + begin + l, r = other.coerce(self) + return l <=> r + rescue NoMethodError + end end nil end @@ -1385,6 +1398,9 @@ class Date case other when Numeric; return jd == other when Date; return jd == other.jd + else + l, r = other.coerce(self) + return l === r end false end |