class Sleek::Interval
Attributes
interval[R]
timeframe[R]
Public Class Methods
interval_value(desc)
click to toggle source
Internal: Convert interval description to numeric value.
# File lib/sleek/interval.rb, line 27 def self.interval_value(desc) case desc when :hourly 1.hour when :daily 1.day when :weekly 1.week when :monthly 1.month else raise ArgumentError, 'invalid interval description' end end
new(interval_desc, timeframe)
click to toggle source
Internal: Initialize an interval.
interval_desc - the Symbol description of the interval.
Possible values: :hourly, :daily, :weekly, :monthly.
timeframe - the range of TimeWithZone objects.
# File lib/sleek/interval.rb, line 11 def initialize(interval_desc, timeframe) @interval = self.class.interval_value(interval_desc) @timeframe = timeframe end
Public Instance Methods
timeframes()
click to toggle source
Internal: Split the timeframe into intervals.
Returns an Array of time range objects.
# File lib/sleek/interval.rb, line 19 def timeframes tz = timeframe.first.time_zone timeframe.to_i_range.each_slice(interval) .to_a[0..-2] .map { |tf, _| (tf..(tf + interval)).to_time_range(tz) } end