In Files

  • mrbgems/mruby-compar-ext/mrblib/compar.rb
  • mrblib/compar.rb

Comparable

Comparable

ISO 15.3.3

Public Instance Methods

<(other) click to toggle source

Return true if self is less than other. Otherwise return false.

ISO 15.3.3.2.1

 
               # File mrblib/compar.rb, line 13
def < other
  cmp = self <=> other
  if cmp.nil?
    raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
  end
  cmp < 0
end
            
<=(other) click to toggle source

Return true if self is less than or equal to other. Otherwise return false.

ISO 15.3.3.2.2

 
               # File mrblib/compar.rb, line 27
def <= other
  cmp = self <=> other
  if cmp.nil?
    raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
  end
  cmp <= 0
end
            
==(other) click to toggle source

Return true if self is equal to other. Otherwise return false.

ISO 15.3.3.2.3

 
               # File mrblib/compar.rb, line 41
def == other
  cmp = self <=> other
  cmp == 0
end
            
>(other) click to toggle source

Return true if self is greater than other. Otherwise return false.

ISO 15.3.3.2.4

 
               # File mrblib/compar.rb, line 52
def > other
  cmp = self <=> other
  if cmp.nil?
    raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
  end
  cmp > 0
end
            
>=(other) click to toggle source

Return true if self is greater than or equal to other. Otherwise return false.

ISO 15.3.3.2.5

 
               # File mrblib/compar.rb, line 66
def >= other
  cmp = self <=> other
  if cmp.nil?
    raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
  end
  cmp >= 0
end
            
between?(min, max) click to toggle source

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

 
               # File mrblib/compar.rb, line 81
def between?(min, max)
  self >= min and self <= max
end
            
clamp(min, max) click to toggle source

Returns min if obj <=> min is less than zero, max if obj <=> max is greater than zero and obj otherwise.

12.clamp(0, 100)         #=> 12
523.clamp(0, 100)        #=> 100
-3.123.clamp(0, 100)     #=> 0

'd'.clamp('a', 'f')      #=> 'd'
'z'.clamp('a', 'f')      #=> 'f'
 
               # File mrbgems/mruby-compar-ext/mrblib/compar.rb, line 14
def clamp(min, max)
  if (min <=> max) > 0
    raise ArgumentError, "min argument must be smaller than max argument"
  end
  c = self <=> min
  if c == 0
    return self
  elsif c < 0
    return min
  end
  c = self <=> max
  if c > 0
    return max
  else
    return self
  end
end