Sha256: 794c54b703cb7731f20d19bee982920c662d9fafa54b1b63e9ac01e838c0d659

Contents?: true

Size: 912 Bytes

Versions: 1

Compression:

Stored size: 912 Bytes

Contents

# frozen_string_literal: true

require 'blackcal/array_util'

module Blackcal
  # Day range
  class DayRange
    include Enumerable

    # @return [Array<Integer>] numbers in range
    attr_reader :numbers

    # Initialize numbers range
    # @param [Array<#to_a>, Array<Integer>, Integer, nil] numbers
    # @example
    #   DayRange.new(1)
    # @example
    #   DayRange.new([1, 2])
    # @example
    #   DayRange.new([9..10, 13..14])
    def initialize(numbers)
      @numbers = ArrayUtil.flatten(numbers) if numbers
    end

    # Returns true if it covers timestamp
    # @return [Boolean]
    def cover?(timestamp)
      return false if numbers.nil? || numbers.empty?

      numbers.include?(timestamp.day)
    end

    # @return [Array<Integer>] numbers in range
    alias_method :to_a, :numbers

    # Iterate over range
    # @see #to_a
    def each(&block)
      to_a.each(&block)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
blackcal-0.5.0 lib/blackcal/range/day_range.rb