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