first commit
This commit is contained in:
+84
@@ -0,0 +1,84 @@
|
||||
##
|
||||
# Comparable
|
||||
#
|
||||
# ISO 15.3.3
|
||||
module Comparable
|
||||
|
||||
##
|
||||
# Return true if +self+ is less
|
||||
# than +other+. Otherwise return
|
||||
# false.
|
||||
#
|
||||
# ISO 15.3.3.2.1
|
||||
def < other
|
||||
cmp = self <=> other
|
||||
if cmp.nil?
|
||||
raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
|
||||
end
|
||||
cmp < 0
|
||||
end
|
||||
|
||||
##
|
||||
# Return true if +self+ is less
|
||||
# than or equal to +other+.
|
||||
# Otherwise return false.
|
||||
#
|
||||
# ISO 15.3.3.2.2
|
||||
def <= other
|
||||
cmp = self <=> other
|
||||
if cmp.nil?
|
||||
raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
|
||||
end
|
||||
cmp <= 0
|
||||
end
|
||||
|
||||
##
|
||||
# Return true if +self+ is equal
|
||||
# to +other+. Otherwise return
|
||||
# false.
|
||||
#
|
||||
# ISO 15.3.3.2.3
|
||||
def == other
|
||||
cmp = self <=> other
|
||||
cmp == 0
|
||||
end
|
||||
|
||||
##
|
||||
# Return true if +self+ is greater
|
||||
# than +other+. Otherwise return
|
||||
# false.
|
||||
#
|
||||
# ISO 15.3.3.2.4
|
||||
def > other
|
||||
cmp = self <=> other
|
||||
if cmp.nil?
|
||||
raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
|
||||
end
|
||||
cmp > 0
|
||||
end
|
||||
|
||||
##
|
||||
# Return true if +self+ is greater
|
||||
# than or equal to +other+.
|
||||
# Otherwise return false.
|
||||
#
|
||||
# ISO 15.3.3.2.5
|
||||
def >= other
|
||||
cmp = self <=> other
|
||||
if cmp.nil?
|
||||
raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
|
||||
end
|
||||
cmp >= 0
|
||||
end
|
||||
|
||||
##
|
||||
# Return true if +self+ is greater
|
||||
# than or equal to +min+ and
|
||||
# less than or equal to +max+.
|
||||
# Otherwise return false.
|
||||
#
|
||||
# ISO 15.3.3.2.6
|
||||
def between?(min, max)
|
||||
self >= min and self <= max
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user