Skip to content

Instantly share code, notes, and snippets.

@faouzzz
Created May 23, 2016 07:35
Show Gist options
  • Save faouzzz/a52a8d7fbdced2b7eb999976025d1314 to your computer and use it in GitHub Desktop.
Save faouzzz/a52a8d7fbdced2b7eb999976025d1314 to your computer and use it in GitHub Desktop.
helpers pour les jours fériés en France
def is_exceptional? date
holiday(date) != nil
end
def is_weekend? date
date.saturday? || date.sunday?
end
def is_working_day? date
not(is_exceptional?(date)) and not(is_weekend?(date))
end
def trigram date
end
def paques year = Time.now.year
s = year / 100
n = year - 19 * ( year / 19 )
k = ( s - 17 ) / 25
i = s - s / 4 - ( s - k ) / 3 + 19 * n + 15
i = i - 30 * ( i / 30 )
i = i - ( i / 28 ) * ( 1 - ( i / 28 ) * ( 29 / ( i + 1 ) ) * ( ( 21 - n ) / 11 ) )
j = year + year / 4 + i + 2 - s + s / 4
j = j - 7 * ( j / 7 )
l = i - j
m = 3 + ( l + 40 ) / 44
d = l + 28 - 31 * ( m / 4 )
Date.new(year, m, d)
end
def lundi_paques year = Time.now.year
paques(year) + 1.day
end
def ascension year = Time.now.year
paques(year) + 39.days
end
def pentecote year = Time.now.year
paques(year) + 50.days
end
def jour_an year = Time.now.year
Date.new(year, 1, 1)
end
def fete_travail year = Time.now.year
Date.new(year, 5, 1)
end
def victoire_allies year = Time.now.year
Date.new(year, 5, 8)
end
def fete_nationale year = Time.now.year
Date.new(year, 7, 14)
end
def assomption year = Time.now.year
Date.new(year, 8, 15)
end
def toussaint year = Time.now.year
Date.new(year, 11, 1)
end
def armistice year = Time.now.year
Date.new(year, 11, 11)
end
def noel year = Time.now.year
Date.new(year, 12, 25)
end
def holidays
[
{name: "Jour de l'an", date: jour_an},
{name: "Victoire des alliés", date: victoire_allies},
{name: "Fête Nationale", date: fete_nationale},
{name: "Fête du travail", date: fete_travail},
{name: "Assomption", date: assomption},
{name: "Toussaint", date: toussaint},
{name: "Armistice", date: armistice},
{name: "Noël", date: noel},
{name: "Pâques", date: paques},
{name: "Lundi de Pâques", date: lundi_paques},
{name: "Ascension", date: ascension},
{name: "Pentecôte", date: pentecote}
]
end
def holiday date
holidays.each do |day|
return day[:name] if day[:date] == date
end
nil
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment