Class: AeBankDays::BankDayHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/ae_bank_days/bank_day_helper.rb

Constant Summary collapse

START_DATE =
Date.civil(2014, 1, 1)
END_DATE =
Date.today.next_year(10)
HOLIDAYS =
Holidays.between(START_DATE, END_DATE, :federalreserve, :observed).map do |holiday|
  holiday[:date]
end

Class Method Summary collapse

Class Method Details

.bank_day?(day) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
# File 'lib/ae_bank_days/bank_day_helper.rb', line 12

def bank_day?(day)
  date = day.to_date
  weekday?(date) && !HOLIDAYS.include?(date)
end

.next_banking_day(date, number_of_days: 0) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/ae_bank_days/bank_day_helper.rb', line 17

def next_banking_day(date, number_of_days: 0)
  banking_day = date
  number_of_days.times do
    banking_day += 1 until bank_day?(banking_day)
    banking_day += 1
  end
  banking_day += 1 until bank_day?(banking_day)
  banking_day
end

.previous_banking_day(date, number_of_days: 0) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/ae_bank_days/bank_day_helper.rb', line 27

def previous_banking_day(date, number_of_days: 0)
  banking_day = date
  number_of_days.times do
    banking_day -= 1 until bank_day?(banking_day)
    banking_day -= 1
  end
  banking_day -= 1 until bank_day?(banking_day)
  banking_day
end