diff options
Diffstat (limited to 'jni/ruby/ext/date/lib')
-rw-r--r-- | jni/ruby/ext/date/lib/date.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/jni/ruby/ext/date/lib/date.rb b/jni/ruby/ext/date/lib/date.rb new file mode 100644 index 0000000..4268661 --- /dev/null +++ b/jni/ruby/ext/date/lib/date.rb @@ -0,0 +1,60 @@ +# date.rb: Written by Tadayoshi Funaba 1998-2011 + +require 'date_core' + +class Date + + class Infinity < Numeric # :nodoc: + + include Comparable + + def initialize(d=1) @d = d <=> 0 end + + def d() @d end + + protected :d + + def zero? () false end + def finite? () false end + def infinite? () d.nonzero? end + def nan? () d.zero? end + + def abs() self.class.new end + + def -@ () self.class.new(-d) end + def +@ () self.class.new(+d) end + + def <=> (other) + case other + when Infinity; return d <=> other.d + when Numeric; return d + else + begin + l, r = other.coerce(self) + return l <=> r + rescue NoMethodError + end + end + nil + end + + def coerce(other) + case other + when Numeric; return -d, d + else + super + end + end + + def to_f + return 0 if @d == 0 + if @d > 0 + Float::INFINITY + else + -Float::INFINITY + end + end + + end + +end |