Sha256: 1e391b48d0f3c5e36530b9d4b8283497e38cbe5d576ffa51794f76cbcaa9d6d5
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
# frozen_string_literal: true module Blackcal # Time range class TimeRange include Enumerable attr_reader :start, :finish # Initialize time range # @param [Time, nil] start_time # @param [Time, nil] finish_time optional def initialize(start_time, finish_time = nil) @start = start_time @finish = finish_time end # Returns true if it covers timestamp # @return [Boolean] 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 # Returns range as array # @param resolution [Symbol] :hour our :min # @return [Array<Array<Integer>>] times 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 # Iterate over range # @param resolution [Symbol] :hour our :min def each(resolution: :hour, &block) to_a(resolution: resolution).each(&block) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
blackcal-0.5.0 | lib/blackcal/range/time_range.rb |