Module: WorkDays::HolidayMethods
Instance Method Summary
collapse
#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
|