From ae3a58e8c53a8966f3bcc53395878593e137e3bf Mon Sep 17 00:00:00 2001 From: tadf Date: Sun, 16 Aug 2009 23:35:28 +0000 Subject: * lib/date/delta.rb: merged from date4. [experimental] * lib/date/delta/parser.*: ditto. * lib/date.rb: followed the above changes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/date.rb | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'lib/date.rb') 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 -- cgit v1.2.3