Sha256: 2bf64056505a8fe686564bf2d2d33eb48f8b20a5c64ad587a5930da89f2737fa
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 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) if other.is_a? Range return other, self elsif other.is_a? Numeric return (other..other), self else super end end private def pair_or_num operator, other if other.is_a? Range calc_pairs operator, other elsif other.is_a? Numeric calc_pairs operator, (other..other) else raise NoMethodError end end def calc_pairs operator, other parts_x = [self.begin, self.end] parts_y = [other.begin, other.end] results = [] parts_x.each do |x| parts_y.each do |y| results << x.send(operator, y) end end (results.min..results.max) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
range_math-0.7.1 | lib/range_math.rb |
range_math-0.7.0 | lib/range_math.rb |