gouv-calendar-compilator 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c1b039734ff757775f636a2c51a770693989af6b681ace240a11b902e9a13c0
|
4
|
+
data.tar.gz: e0e374e47fef2515d86adfc4388150fba03cb012d9d0bf00f80501f2c2c67cc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a9b85b4249d1b2a5414d112aff6a7b5daebec944cd42e154727b61b31a1b607c4c8a55e7c20b9117452623a309d3c0cfcfd35ffa6f34610970f5d29b3a7bca5
|
7
|
+
data.tar.gz: a233828c6292b4ed30e7fbd0b90ac4ff594d85813ebb689469081c24d65a288ce9677c2713506181b206339135963d6120a20727681768bc90e350fbb29d9f5d
|
data/lib/gouv_calendar_compilator/data_compilators/france/national_days_off_data_compilator.rb
CHANGED
@@ -82,17 +82,10 @@ module GouvCalendarCompilator
|
|
82
82
|
included_in_vacation = true
|
83
83
|
splitted_vacation = ndo_split_holidays_period_insert_day_off(calendar[zone_name][index], day_off_date)
|
84
84
|
|
85
|
-
|
86
|
-
#
|
87
|
-
|
88
|
-
|
89
|
-
else
|
90
|
-
calendar[zone_name][index] = splitted_vacation[0]
|
91
|
-
end
|
92
|
-
# inserting national day off
|
93
|
-
calendar[zone_name] << splitted_vacation[1]
|
94
|
-
# inserting other part of the splitted vacation
|
95
|
-
calendar[zone_name] << splitted_vacation[2]
|
85
|
+
keeped_periods = determines_what_to_keep(splitted_vacation, calendar[zone_name][index], day_off_date)
|
86
|
+
# remove the current vacation before adding the correct parts of the splitted_vacation
|
87
|
+
calendar[zone_name].delete(calendar[zone_name][index])
|
88
|
+
calendar[zone_name].push(*keeped_periods)
|
96
89
|
end
|
97
90
|
|
98
91
|
# if day off not in the middle of a vacation period, simply insert it inside the dataset
|
@@ -106,6 +99,31 @@ module GouvCalendarCompilator
|
|
106
99
|
end
|
107
100
|
calendar
|
108
101
|
end
|
102
|
+
|
103
|
+
# Determines what parts of the splitted vacation to keep to replace current vacation
|
104
|
+
#
|
105
|
+
# - if vacation is 1 day and day off is the first and the last day of it, then keep only the day_off
|
106
|
+
# - if day off is first day of holiday, then do not keep the first part of the splitted vacation
|
107
|
+
# - if day off is last day of holiday, then do not keep the last part of the splitted vacation
|
108
|
+
def determines_what_to_keep(splitted_vacation, period, day_off_date)
|
109
|
+
# inserting national day off
|
110
|
+
elements_to_add = [splitted_vacation[1]]
|
111
|
+
return elements_to_add if period[:start] == day_off_date.to_s && period[:end] == (day_off_date + 1).to_s
|
112
|
+
|
113
|
+
if period[:start] == day_off_date.to_s
|
114
|
+
# inserting last part of the splitted vacation
|
115
|
+
elements_to_add << splitted_vacation[2]
|
116
|
+
elsif period[:end] == (day_off_date + 1).to_s
|
117
|
+
# inserting first part of the splitted vacation
|
118
|
+
elements_to_add << splitted_vacation[0]
|
119
|
+
else
|
120
|
+
# inserting first & last part of the splitted vacation
|
121
|
+
elements_to_add << splitted_vacation[0]
|
122
|
+
elements_to_add << splitted_vacation[2]
|
123
|
+
end
|
124
|
+
|
125
|
+
elements_to_add
|
126
|
+
end
|
109
127
|
end
|
110
128
|
end
|
111
129
|
end
|
data/lib/gouv_calendar_compilator/data_compilators/france/school_holidays_data_compilator.rb
CHANGED
@@ -74,13 +74,22 @@ module GouvCalendarCompilator
|
|
74
74
|
approximate_start_date.to_date.to_s
|
75
75
|
end
|
76
76
|
|
77
|
-
# Trims dataset to desired time era
|
77
|
+
# Trims dataset to desired time era and remove possibly wrong data.
|
78
|
+
#
|
79
|
+
# Example of bad data:
|
80
|
+
# "end_date"=>"2023-07-08T00:00:00+02:00", "start_date"=>"2023-07-08T00:00:00+02:00",
|
81
|
+
# "zones"=>"Zone C", "description"=>"Debut des Vacances d'ete"
|
82
|
+
#
|
83
|
+
# Almost "OK" data but not needed here, and that should appear as a national day off somewhere else.
|
84
|
+
# "end_date"=>"2020-03-19T00:00:00+01:00", "start_date"=>"2020-03-19T00:00:00+01:00",
|
85
|
+
# "zones"=>"Guadeloupe", "description"=>"Mi-careme"
|
78
86
|
def sh_trim_not_necessary_data(raw_sh_dataset)
|
79
87
|
date_range = ::GouvCalendarCompilator::DATETIME_START...::GouvCalendarCompilator::DATETIME_END
|
80
88
|
filtered_data =
|
81
89
|
raw_sh_dataset.select do |record|
|
82
90
|
date_range.include?(::Date.parse(record['fields']['start_date'])) &&
|
83
|
-
(record['fields']['end_date'] ? date_range.include?(::Date.parse(record['fields']['end_date'])) : true)
|
91
|
+
(record['fields']['end_date'] ? date_range.include?(::Date.parse(record['fields']['end_date'])) : true) &&
|
92
|
+
record['fields']['start_date'] != record['fields']['end_date']
|
84
93
|
end
|
85
94
|
filtered_data.uniq do |record|
|
86
95
|
[
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gouv-calendar-compilator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valentin ALBERT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-struct
|