class MoreHoliday::Calculator

Attributes

available_days[RW]
holidays[RW]
suggestions[R]

Public Class Methods

new(holidays, available_days) click to toggle source
# File lib/more_holiday/calculator.rb, line 7
def initialize holidays, available_days
  @holidays = holidays
  @available_days = available_days
end

Private Instance Methods

find_bridges(days, size) click to toggle source
# File lib/more_holiday/calculator.rb, line 59
def find_bridges days, size
  bridges = Array.new
  range = size + 1

  for pointer in 0..(days.size-2)
    if days[pointer + 1] - days[pointer] == range
      for day in 1..size
        bridges << (days[pointer] + day)
      end
    else
      next
    end
  end

  bridges
end
first_sunday_of_year() click to toggle source
# File lib/more_holiday/calculator.rb, line 39
def first_sunday_of_year
  day = 1
  day += 1 until Date.new(year,1,day).sunday? == true
  day
end
holiday_day_numbers() click to toggle source
# File lib/more_holiday/calculator.rb, line 45
def holiday_day_numbers
  holidays.map{ |date, summary| Date.parse(date).yday }
end
non_working_day_numbers() click to toggle source
# File lib/more_holiday/calculator.rb, line 55
def non_working_day_numbers
  (holiday_day_numbers + week_end_day_numbers).uniq.sort
end
week_end_day_numbers() click to toggle source
# File lib/more_holiday/calculator.rb, line 49
def week_end_day_numbers
  range = Date.new(year,1,1)..Date.new(year,12,31)
  grouped_days = range.group_by(&:wday)
  (grouped_days[6] + grouped_days[0]).map(&:yday).sort
end
year() click to toggle source
# File lib/more_holiday/calculator.rb, line 35
def year
  @year ||= holidays.any? ? Date.parse(holidays.first.first).year : nil
end