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