Class: HolidayCo::CalculateHolidays::Movable

Inherits:
Object
  • Object
show all
Defined in:
lib/holiday_co/calculate_holidays/movable.rb

Constant Summary collapse

MOVABLE_HOLIDAYS =

Holidays that are moved to the following Monday if they don"t fall on a Monday.

{
  "Epifanía" => "%4s-01-06",
  "Día de San José" => "%4s-03-19",
  "San Pedro y San Pablo" => "%4s-06-29",
  "Día de la Virgen del Rosario de Chiquinquirá" => "%4s-07-09",
  "Asunción de la Virgen" => "%4s-08-15",
  "Día de la raza" => "%4s-10-12",
  "Todos los Santos" => "%4s-11-01",
  "Independencia de Cartagena" => "%4s-11-11"
}
EFFECTIVE_SINCE =

Holidays introduced after 1983, keyed by the first year they apply. Ley 2578 de 2026 declared the Día de la Virgen del Rosario de Chiquinquirá.

{
  "Día de la Virgen del Rosario de Chiquinquirá" => 2026
}

Class Method Summary collapse

Class Method Details

.for(year) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/holiday_co/calculate_holidays/movable.rb', line 40

def self.for(year)
  MOVABLE_HOLIDAYS.filter_map do |holiday, date|
    next if year.to_i < EFFECTIVE_SINCE.fetch(holiday, 0)

    day = Date.parse(date % year)
    date = day.monday? ? day : day.next_monday
    {
      :name => holiday,
      :date => date.to_s
    }
  end
end