Sha256: 97fb9b5d9eade63d132e122aa9ffd68aa0bfa92d806e40d741df3842ece1961d
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
#!/usr/bin/env ruby # coding: utf-8 # Copyright muflax <mail@muflax.com>, 2011 # License: GNU GPL 3 <http://www.gnu.org/copyleft/gpl.html> class Range def +(other) ; pair_or_num :+, other ; end def -(other) ; pair_or_num :-, other ; end def *(other) ; pair_or_num :*, other ; end def /(other) ; pair_or_num :/, other.to_f ; end def **(other) ; pair_or_num :**, other ; end def %(other) ; pair_or_num :%, other ; end def to_f ; (self.begin.to_f..self.end.to_f) ; end def to_i ; (self.begin.round..self.end.round) ; end def round places=0 (self.begin.round(places)..self.end.round(places)) end def average (self.begin + self.end) / 2.0 end def coerce(other) case other when Range ; return other, self when Numeric ; return (other..other), self else super end end private def pair_or_num operator, other case other when Range ; calc_pairs operator, other when Numeric ; calc_pairs operator, (other..other) else raise NoMethodError end end def calc_pairs operator, other results = [ self.begin .send(operator, other.begin), self.begin .send(operator, other.end), self.end .send(operator, other.begin), self.end .send(operator, other.end), ] (results.min..results.max) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
range_math-1.0.1 | lib/range_math.rb |
range_math-0.8.0 | lib/range_math.rb |