Module: Comparable

Included in:
Association, Duration, Tuple, VersionNumber
Defined in:
lib/core/facets/comparable/cmp.rb,
lib/core/facets/comparable/bound.rb

Instance Method Summary collapse

Instance Method Details

#at_least(x) ⇒ Object

Returns the lower of self or x.

4.at_least(5)  #=> 5
6.at_least(5)  #=> 6

CREDIT Florian Gross


10
11
12
# File 'lib/core/facets/comparable/bound.rb', line 10

def at_least(x)
  (self >= x) ? self : x
end

#at_most(x) ⇒ Object

Returns the greater of self or x.

4.at_most(5)  #=> 4
6.at_most(5)  #=> 5

CREDIT Florian Gross


21
22
23
# File 'lib/core/facets/comparable/bound.rb', line 21

def at_most(x)
  (self <= x) ? self : x
end

#cap(upper) ⇒ Object

Returns the greater of self or x.

4.cap(5)  #=> 4
6.cap(5)  #=> 5

CREDIT Trans


54
55
56
# File 'lib/core/facets/comparable/bound.rb', line 54

def cap(upper)
  (self <= upper) ? self : upper
end

#clip(lower, upper = nil) ⇒ Object Also known as: bound

Returns self if above the given lower bound, or within the given lower and upper bounds, otherwise returns the the bound of which the value falls outside.

4.clip(3)    #=> 4
4.clip(5)    #=> 5
4.clip(2,7)  #=> 4
9.clip(2,7)  #=> 7
1.clip(2,7)  #=> 2

CREDIT Trans


38
39
40
41
42
43
# File 'lib/core/facets/comparable/bound.rb', line 38

def clip(lower, upper=nil)
  return lower if self < lower
  return self unless upper
  return upper if self > upper
  return self
end

#cmp(o) ⇒ Object

Alternate name for comparison operator #<=>.

3.cmp(1)   #=>  1
3.cmp(3)   #=>  0
3.cmp(10)  #=> -1

This fundamental compare method is used to keep comparison compatible with #succ.

CREDIT Peter Vanbroekhoven


20
21
22
# File 'lib/core/facets/comparable/cmp.rb', line 20

def cmp(o)
  self<=>o
end