Created
May 23, 2016 07:35
-
-
Save faouzzz/a52a8d7fbdced2b7eb999976025d1314 to your computer and use it in GitHub Desktop.
helpers pour les jours fériés en France
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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