class Blackcal::TimeRange
Time range
Attributes
finish[R]
start[R]
Public Class Methods
new(start_time, finish_time = nil)
click to toggle source
Initialize time range @param [Time, nil] start_time @param [Time, nil] finish_time optional
# File lib/blackcal/range/time_range.rb, line 13 def initialize(start_time, finish_time = nil) @start = start_time @finish = finish_time end
Public Instance Methods
cover?(timestamp)
click to toggle source
Returns true if it covers timestamp @return [Boolean]
# File lib/blackcal/range/time_range.rb, line 20 def cover?(timestamp) return false if start.nil? && finish.nil? return start < timestamp if finish.nil? return finish > timestamp if start.nil? return true if finish < timestamp return true if start > timestamp false end
each(resolution: :hour, &block)
click to toggle source
Iterate over range @param resolution [Symbol] :hour our :min
# File lib/blackcal/range/time_range.rb, line 45 def each(resolution: :hour, &block) to_a(resolution: resolution).each(&block) end
to_a(resolution: :hour)
click to toggle source
Returns range as array @param resolution [Symbol] :hour our :min @return [Array<Array<Integer>>] times
# File lib/blackcal/range/time_range.rb, line 34 def to_a(resolution: :hour) resolution_multiplier = resolution == :hour ? 60 * 60 : 60 time_units = ((start - finish) / resolution_multiplier).abs.to_i Array.new(time_units) do |time_unit| start + (time_unit * resolution_multiplier) end end