Module: UkWorkingDays::DateExtensions::ClassMethods

Included in:
Date
Defined in:
lib/uk_working_days/date_extensions.rb

Instance Method Summary collapse

Instance Method Details

#boxing_day_holiday(year) ⇒ Object

Boxing day, or the next working day following



57
58
59
# File 'lib/uk_working_days/date_extensions.rb', line 57

def boxing_day_holiday(year)
  ([0,5,6].include? christmas_day_holiday(year).wday) ? christmas_day_holiday(year).next_week : christmas_day_holiday(year).tomorrow
end

#christmas_day_holiday(year) ⇒ Object

Christmas day, or the next weekday following if on a weekend



51
52
53
54
# File 'lib/uk_working_days/date_extensions.rb', line 51

def christmas_day_holiday(year)
  xmas_day = new(year, 12, 25)
  xmas_day.weekday? ? xmas_day : xmas_day.next_week
end

#easter_monday(year) ⇒ Object

The monday after Easter Sunday



62
63
64
# File 'lib/uk_working_days/date_extensions.rb', line 62

def easter_monday(year)
  easter(year) + 1
end

#good_friday(year) ⇒ Object

The friday before Easter Sunday



67
68
69
# File 'lib/uk_working_days/date_extensions.rb', line 67

def good_friday(year)
  easter(year) - 2
end

#may_bank_holiday(year) ⇒ Object

The first monday in May



72
73
74
75
# File 'lib/uk_working_days/date_extensions.rb', line 72

def may_bank_holiday(year)
  first_day_may = new(year, 5, 1)
  first_day_may.wday == 1 ? first_day_may : first_day_may.next_week
end

#new_years_day_holiday(year) ⇒ Object

New year’s day, or the next weekday following if on a weekend



45
46
47
48
# File 'lib/uk_working_days/date_extensions.rb', line 45

def new_years_day_holiday(year)
  nyd = new(year, 1, 1)
  nyd.weekday?() ? nyd : nyd.next_week
end

#public_holidays(year) ⇒ Object

An Array of all public holidays for the given year



88
89
90
91
92
93
94
95
96
97
# File 'lib/uk_working_days/date_extensions.rb', line 88

def public_holidays(year)
  [new_years_day_holiday(year),
   good_friday(year),
   easter_monday(year),
   may_bank_holiday(year),
   spring_bank_holiday(year),
   summer_bank_holiday(year),
   christmas_day_holiday(year),
   boxing_day_holiday(year)]
end

#spring_bank_holiday(year) ⇒ Object

The last monday in May



78
79
80
# File 'lib/uk_working_days/date_extensions.rb', line 78

def spring_bank_holiday(year)
  new(year, 5, 31).beginning_of_week
end

#summer_bank_holiday(year) ⇒ Object

The last monday in August



83
84
85
# File 'lib/uk_working_days/date_extensions.rb', line 83

def summer_bank_holiday(year)
  new(year, 8, 31).beginning_of_week
end