lib/sleek/core_ext/range.rb
class Range
# Convert both ends of range to integers.
def to_i_range
self.begin.to_i..self.end.to_i
end
# Convert both ends of range to times.
def to_time_range(zone = nil)
time = zone ? zone : Time
time.at(self.begin)..time.at(self.end)
end
def int_range?
self.begin.is_a?(Integer)
end
# Check if range elements are times.
def time_range?
self.begin.is_a?(Time)
end
# Calculate the differentce between ends of the range.
def difference
self.end - self.begin
end
# Make up a range for previous +n+ periods.
# Start of new range would be start of current - difference between
# +start+ and +end * number+ of periods, end of new range would be start of
# current.
#
# @example
# (1200..1300).previous
# # => 1100..1200
def previous(n = 1)
self - difference * n
end
def -(other)
(self.begin - other)..(self.end - other)
end
end