Module: WorkDays::HolidayMethods

Includes:
CalculationMethods
Included in:
WorkSchedules::Bank, WorkSchedules::Default
Defined in:
lib/work_days/holiday_methods.rb

Instance Method Summary collapse

Methods included from CalculationMethods

#holiday?, #holidays_in_range, #monthly_work_days, #next_work_day, #non_work_day?, #observed_holidays, #previous_work_day, #week_day?, #weekend_day?, #work_day?, #work_days_from, #work_days_in_month, #work_days_in_range

Instance Method Details

#black_friday(year = nil) ⇒ Object



74
75
76
# File 'lib/work_days/holiday_methods.rb', line 74

def black_friday(year=nil)
  thanksgiving_day(year).next_day
end

#christmas_day(year = nil) ⇒ Object



82
83
84
85
# File 'lib/work_days/holiday_methods.rb', line 82

def christmas_day(year=nil)
  year = format_year(year)
  weekday_if_weekend(Date.new(year,12,25))
end

#christmas_eve_day(year = nil) ⇒ Object



78
79
80
# File 'lib/work_days/holiday_methods.rb', line 78

def christmas_eve_day(year=nil)
  previous_work_day(christmas_day(year))
end

#columbus_day(year = nil) ⇒ Object



61
62
63
# File 'lib/work_days/holiday_methods.rb', line 61

def columbus_day(year=nil)
  day_of_week_occurence(year, 10, :monday?, 2)
end

#easter_sunday(year = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/work_days/holiday_methods.rb', line 23

def easter_sunday(year=nil)
  year = format_year(year)
  y = year
  a = y % 19
  b = y / 100
  c = y % 100
  d = b / 4
  e = b % 4
  f = (b + 8) / 25
  g = (b - f + 1) / 3
  h = (19 * a + b - d - g + 15) % 30
  i = c / 4
  k = c % 4
  l = (32 + 2 * e + 2 * i - h - k) % 7
  m = (a + 11 * h + 22 * l) / 451
  month = (h + l - 7 * m + 114) / 31
  day = ((h + l - 7 * m + 114) % 31) + 1
  Date.new(year, month, day)
end

#independence_day(year = nil) ⇒ Object



52
53
54
55
# File 'lib/work_days/holiday_methods.rb', line 52

def independence_day(year=nil)
  year = format_year(year)
  weekday_if_weekend(Date.new(year,7,4))
end

#labor_day(year = nil) ⇒ Object



57
58
59
# File 'lib/work_days/holiday_methods.rb', line 57

def labor_day(year=nil)
  day_of_week_occurence(year, 9, :monday?)
end

#martin_luther_king_day(year = nil) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/work_days/holiday_methods.rb', line 11

def martin_luther_king_day(year=nil)
  year = format_year(year)

  return nil if year < 1986

  day_of_week_occurence(year, 1, :monday?, 3)
end

#memorial_day(year = nil) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/work_days/holiday_methods.rb', line 43

def memorial_day(year=nil)
  year = format_year(year)

  31.downto(1).each do |day|
    date = Date.new(year, 5, day)
    return date if date.monday?
  end
end

#new_years_day(year = nil) ⇒ Object



6
7
8
9
# File 'lib/work_days/holiday_methods.rb', line 6

def new_years_day(year=nil)
  year = format_year(year)
  weekday_if_weekend(Date.new(year,1,1))
end

#presidents_day(year = nil) ⇒ Object



19
20
21
# File 'lib/work_days/holiday_methods.rb', line 19

def presidents_day(year=nil)
  day_of_week_occurence(year, 2, :monday?, 3)
end

#thanksgiving_day(year = nil) ⇒ Object



70
71
72
# File 'lib/work_days/holiday_methods.rb', line 70

def thanksgiving_day(year=nil)
  day_of_week_occurence(year, 11, :thursday?, 4)
end

#veterans_day(year = nil) ⇒ Object



65
66
67
68
# File 'lib/work_days/holiday_methods.rb', line 65

def veterans_day(year=nil)
  year = format_year(year)
  weekday_if_weekend(Date.new(year,11,11))
end