def time_range
@time_range ||= begin
time_range = options[:range]
if time_range.is_a?(Range) && time_range.first.is_a?(Date)
last = time_zone.parse(time_range.last.to_s)
last += 1.day unless time_range.exclude_end?
time_range = Range.new(time_zone.parse(time_range.first.to_s), last, true)
elsif !time_range && options[:last]
if field == :quarter
step = 3.months
elsif 1.respond_to?(field)
step = 1.send(field)
else
raise ArgumentError, "Cannot use last option with #{field}"
end
if step
now = Time.now
start_at = now
(options[:last].to_i - 1).times do
start_at -= step
end
time_range =
if options[:current] == false
round_time(start_at - step)...round_time(now)
else
round_time(start_at)..now
end
end
end
time_range
end
end