Skip to content

Instantly share code, notes, and snippets.

@sunny
Last active December 20, 2023 07:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sunny/484e74120e3261fa0470f1d790de8736 to your computer and use it in GitHub Desktop.
Save sunny/484e74120e3261fa0470f1d790de8736 to your computer and use it in GitHub Desktop.
# Calcul du nombre de jours par niveau de fréquentation pour Brouillon Coffee.
#
# Pour lancer le script, il faut installer la librairie `jours_feries_france`.
# Dans un terminal, exécuter la commande suivante:
# $ gem install jours_feries_france
#
# Puis, exécuter le script avec la commande suivante pour générer un fichier
# CSV nommé `days.csv`:
# $ ruby brouillon-days.rb > days.csv
# Librairie standard de Ruby permettant de manipuler des dates
require "date"
# Permets d’importer des librairies tierces
require "rubygems"
# Librairie permettant de déterminer si un jour est férié en France
require "jours_feries_france"
# Dictionnaire des noms de mois en français, en fonction de leur numéro
MONTH_NAMES = {
1 => "Janvier",
2 => "Février",
3 => "Mars",
4 => "Avril",
5 => "Mai",
6 => "Juin",
7 => "Juillet",
8 => "Août",
9 => "Septembre",
10 => "Octobre",
11 => "Novembre",
12 => "Décembre",
}
# Année de référence
year = Date.today.next_year.year
# Pour chaque mois de l'année
1.upto(12) do |month|
# On définit des compteurs de jours par niveau de fréquentation
low = 0
median = 0
high = 0
# Premier et dernier jour du mois
month_start = Date.new(year, month, 1)
month_end = month_start.next_month.prev_day
# Pour chaque jour du mois
month_start.upto(month_end) do |day|
# On incrémente le compteur correspondant
if day.saturday? || day.sunday? || JoursFeriesFrance.est_ferie(day)
high += 1
elsif day.tuesday? || day.thursday?
low += 1
elsif day.monday? || day.friday?
median += 1
end
end
# On affiche le résultat au format CSV
puts "#{MONTH_NAMES[month]} #{year};;"
puts ";Bas (mardi, jeudi);#{low}"
puts ";Médian (lundi, vendredi);#{median}"
puts ";Haut (samedi, dimanche, ferié);#{high}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment