class OpeningHoursConverter::PublicHoliday

Public Class Methods

armistice(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 62
def self.armistice(year = Time.now.year)
  Time.new(year, 11, 11)
end
assomption(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 46
def self.assomption(year = Time.now.year)
  Time.new(year, 8, 15)
end
bastille_day(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 66
def self.bastille_day(year = Time.now.year)
  Time.new(year, 7, 14)
end
christmas(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 42
def self.christmas(year = Time.now.year)
  Time.new(year, 12, 25)
end
days(days = 0) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 109
def self.days(days = 0)
  days * 24 * 60 * 60
end
easter(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 3
def self.easter(year = Time.now.year)
  # code from https://github.com/jrobertson/easter
  golden_number = (year % 19) + 1

  if year <= 1752
    # Julian calendar
    dominical_number = (year + (year / 4) + 5) % 7
    paschal_full_moon = (3 - (11 * golden_number) - 7) % 30
  else
    # Gregorian calendar
    dominical_number = (year + (year / 4) - (year / 100) + (year / 400)) % 7
    solar_correction = (year - 1600) / 100 - (year - 1600) / 400
    lunar_correction = (((year - 1400) / 100) * 8) / 25
    paschal_full_moon = (3 - 11 * golden_number + solar_correction - lunar_correction) % 30
  end

  dominical_number += 7 until dominical_number > 0

  paschal_full_moon += 30 until paschal_full_moon > 0
  paschal_full_moon -= 1 if (paschal_full_moon == 29) || ((paschal_full_moon == 28) && (golden_number > 11))

  difference = (4 - paschal_full_moon - dominical_number) % 7
  difference += 7 if difference < 0

  day_easter = paschal_full_moon + difference + 1

  if day_easter < 11
    # Easter occurs in March.
    return Time.new(year, 3, day_easter + 21)
  else
    # Easter occurs in April.
    return Time.new(year, 4, day_easter - 10)
  end
end
easter_monday(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 70
def self.easter_monday(year = Time.now.year)
  easter(year) + days(1)
end
good_friday(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 74
def self.good_friday(year = Time.now.year)
  easter(year) - days(2)
end
new_year(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 38
def self.new_year(year = Time.now.year)
  Time.new(year, 1, 1)
end
pentecote(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 82
def self.pentecote(year = Time.now.year)
  easter(year) + days(49)
end
pentecote_monday(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 86
def self.pentecote_monday(year = Time.now.year)
  easter(year) + days(50)
end
ph_for_year(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 90
def self.ph_for_year(year = Time.now.year)
  ph = []
  ph << new_year(year)
  ph << good_friday(year)
  ph << easter(year)
  ph << easter_monday(year)
  ph << work_day(year)
  ph << victory(year)
  ph << rise(year)
  ph << pentecote(year)
  ph << pentecote_monday(year)
  ph << bastille_day(year)
  ph << assomption(year)
  ph << toussaint(year)
  ph << armistice(year)
  ph << christmas(year)
  ph.sort
end
rise(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 78
def self.rise(year = Time.now.year)
  easter(year) + days(39)
end
toussaint(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 54
def self.toussaint(year = Time.now.year)
  Time.new(year, 11, 1)
end
victory(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 58
def self.victory(year = Time.now.year)
  Time.new(year, 5, 8)
end
work_day(year = Time.now.year) click to toggle source
# File lib/opening_hours_converter/public_holiday.rb, line 50
def self.work_day(year = Time.now.year)
  Time.new(year, 5, 1)
end