class RussianWorkdays::Collection

Constants

AVAILABLE_WORK_HOURS_PER_WEEK

Public Class Methods

new(collection) click to toggle source
# File lib/russian_workdays/collection.rb, line 8
def initialize(collection)
  unless %w[Array Range].include? collection.class.name
    raise ArgumentError, "Must be a Array or Range object"
  end
  @collection = collection.to_a
end

Public Instance Methods

each() { |i| ... } click to toggle source
# File lib/russian_workdays/collection.rb, line 15
def each
  @collection.each { |i| yield(i) }
end
work_hours_count(work_hours_per_week = 40) click to toggle source
# File lib/russian_workdays/collection.rb, line 25
def work_hours_count(work_hours_per_week = 40)
  unless AVAILABLE_WORK_HOURS_PER_WEEK.include?(work_hours_per_week)
    raise ArgumentError, "Unknown work hours count. Must be one of #{AVAILABLE_WORK_HOURS_PER_WEEK}"
  end
  work_hours_per_day = (work_hours_per_week / 5.to_f)
  mapping = { work: work_hours_per_day, preholiday: work_hours_per_day - 1 }
  @collection.map { |i| mapping.fetch(Day.new(i).type, 0) }.sum.ceil(1)
end