class RussianWorkdays::Collection
Constants
- WORK_HOURS_PER_DAY
Attributes
Public Class Methods
Source
# File lib/russian_workdays/collection.rb, line 15 def initialize(collection) raise ArgumentError, 'Must be a Array or Range object' unless [Array, Range].include?(collection.class) collection.each { |date| raise MissingYearError, date.year unless DATES.key?(date.year) } @collection = collection.map { |day| Day.new(day) } end
Public Instance Methods
Source
# File lib/russian_workdays/collection.rb, line 23 def each(&block) collection.each(&block) end
Source
# File lib/russian_workdays/collection.rb, line 33 def work_hours_count(work_hours_per_week = WORK_HOURS_PER_DAY.keys.last) unless WORK_HOURS_PER_DAY.keys.include?(work_hours_per_week) raise ArgumentError, "Unknown work hours count. Must be one of: #{WORK_HOURS_PER_DAY.keys.join(', ')}" end collection.sum { |day| calculate_work_hours(day, work_hours_per_week) }.ceil(1) end
Private Instance Methods
Source
# File lib/russian_workdays/collection.rb, line 43 def calculate_work_hours(day, work_hours_per_week) case day.type when :work WORK_HOURS_PER_DAY[work_hours_per_week] when :preholiday WORK_HOURS_PER_DAY[work_hours_per_week] - 1 else 0 end end