holidays 11.3.0 → 11.5.0
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 +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/generated_definitions/MANIFEST +2 -0
- data/lib/generated_definitions/REGIONS.rb +3 -3
- data/lib/generated_definitions/ar.rb +1 -18
- data/lib/generated_definitions/at.rb +1 -3
- data/lib/generated_definitions/au.rb +1 -86
- data/lib/generated_definitions/be_fr.rb +1 -3
- data/lib/generated_definitions/be_nl.rb +1 -3
- data/lib/generated_definitions/bg.rb +1 -3
- data/lib/generated_definitions/br.rb +1 -3
- data/lib/generated_definitions/by.rb +39 -0
- data/lib/generated_definitions/ca.rb +4 -14
- data/lib/generated_definitions/ch.rb +1 -48
- data/lib/generated_definitions/cl.rb +1 -33
- data/lib/generated_definitions/cn.rb +39 -0
- data/lib/generated_definitions/co.rb +10 -90
- data/lib/generated_definitions/cr.rb +1 -3
- data/lib/generated_definitions/cy.rb +1 -3
- data/lib/generated_definitions/cz.rb +1 -3
- data/lib/generated_definitions/de.rb +2 -14
- data/lib/generated_definitions/dk.rb +1 -3
- data/lib/generated_definitions/ecbtarget.rb +1 -3
- data/lib/generated_definitions/ee.rb +1 -3
- data/lib/generated_definitions/es.rb +2 -4
- data/lib/generated_definitions/europe.rb +5 -95
- data/lib/generated_definitions/federalreserve.rb +1 -3
- data/lib/generated_definitions/federalreservebanks.rb +1 -3
- data/lib/generated_definitions/fedex.rb +1 -7
- data/lib/generated_definitions/fi.rb +1 -25
- data/lib/generated_definitions/fr.rb +1 -3
- data/lib/generated_definitions/gb.rb +1 -3
- data/lib/generated_definitions/ge.rb +1 -3
- data/lib/generated_definitions/gr.rb +1 -3
- data/lib/generated_definitions/hk.rb +1 -3
- data/lib/generated_definitions/hr.rb +1 -3
- data/lib/generated_definitions/hu.rb +1 -3
- data/lib/generated_definitions/ie.rb +1 -12
- data/lib/generated_definitions/il.rb +1 -3
- data/lib/generated_definitions/in.rb +1 -3
- data/lib/generated_definitions/is.rb +1 -13
- data/lib/generated_definitions/it.rb +1 -3
- data/lib/generated_definitions/jp.rb +1 -95
- data/lib/generated_definitions/ke.rb +1 -3
- data/lib/generated_definitions/kr.rb +4 -6
- data/lib/generated_definitions/kz.rb +1 -3
- data/lib/generated_definitions/li.rb +1 -3
- data/lib/generated_definitions/lt.rb +1 -3
- data/lib/generated_definitions/lu.rb +1 -3
- data/lib/generated_definitions/lv.rb +1 -17
- data/lib/generated_definitions/ma.rb +1 -3
- data/lib/generated_definitions/mc.rb +1 -3
- data/lib/generated_definitions/mt_en.rb +1 -3
- data/lib/generated_definitions/mt_mt.rb +1 -3
- data/lib/generated_definitions/mx.rb +4 -4
- data/lib/generated_definitions/my.rb +1 -3
- data/lib/generated_definitions/nerc.rb +1 -3
- data/lib/generated_definitions/ng.rb +1 -3
- data/lib/generated_definitions/nl.rb +1 -3
- data/lib/generated_definitions/no.rb +1 -3
- data/lib/generated_definitions/northamerica.rb +4 -97
- data/lib/generated_definitions/nyse.rb +1 -3
- data/lib/generated_definitions/nz.rb +4 -70
- data/lib/generated_definitions/pe.rb +12 -10
- data/lib/generated_definitions/ph.rb +1 -9
- data/lib/generated_definitions/pl.rb +1 -3
- data/lib/generated_definitions/pt.rb +1 -3
- data/lib/generated_definitions/ro.rb +3 -5
- data/lib/generated_definitions/rs_cyrl.rb +1 -3
- data/lib/generated_definitions/rs_la.rb +1 -3
- data/lib/generated_definitions/ru.rb +1 -3
- data/lib/generated_definitions/scandinavia.rb +1 -47
- data/lib/generated_definitions/se.rb +1 -15
- data/lib/generated_definitions/sg.rb +1 -3
- data/lib/generated_definitions/si.rb +1 -3
- data/lib/generated_definitions/sk.rb +1 -3
- data/lib/generated_definitions/southamerica.rb +18 -139
- data/lib/generated_definitions/th.rb +1 -3
- data/lib/generated_definitions/tn.rb +1 -3
- data/lib/generated_definitions/tr.rb +1 -29
- data/lib/generated_definitions/tsx.rb +1 -13
- data/lib/generated_definitions/ua.rb +1 -3
- data/lib/generated_definitions/unitednations.rb +1 -3
- data/lib/generated_definitions/ups.rb +1 -7
- data/lib/generated_definitions/us.rb +4 -87
- data/lib/generated_definitions/ve.rb +1 -3
- data/lib/generated_definitions/vn.rb +1 -3
- data/lib/generated_definitions/za.rb +1 -3
- data/lib/holidays/{load_all_definitions.rb → bootstrap.rb} +15 -8
- data/lib/holidays/date_calculator/lunar_date.rb +1 -0
- data/lib/holidays/definition/context/generator.rb +4 -0
- data/lib/holidays/definition/custom_methods/ar.rb +28 -0
- data/lib/holidays/definition/custom_methods/au.rb +96 -0
- data/lib/holidays/definition/custom_methods/ca.rb +23 -0
- data/lib/holidays/definition/custom_methods/ch.rb +58 -0
- data/lib/holidays/definition/custom_methods/cl.rb +43 -0
- data/lib/holidays/definition/custom_methods/cn.rb +31 -0
- data/lib/holidays/definition/custom_methods/co.rb +22 -0
- data/lib/holidays/definition/custom_methods/de.rb +23 -0
- data/lib/holidays/definition/custom_methods/fedex.rb +17 -0
- data/lib/holidays/definition/custom_methods/fi.rb +35 -0
- data/lib/holidays/definition/custom_methods/ie.rb +22 -0
- data/lib/holidays/definition/custom_methods/is.rb +23 -0
- data/lib/holidays/definition/custom_methods/jp.rb +107 -0
- data/lib/holidays/definition/custom_methods/kr.rb +17 -0
- data/lib/holidays/definition/custom_methods/lv.rb +27 -0
- data/lib/holidays/definition/custom_methods/nz.rb +77 -0
- data/lib/holidays/definition/custom_methods/ph.rb +19 -0
- data/lib/holidays/definition/custom_methods/registry.rb +103 -0
- data/lib/holidays/definition/custom_methods/se.rb +25 -0
- data/lib/holidays/definition/custom_methods/tr.rb +59 -0
- data/lib/holidays/definition/custom_methods/us.rb +92 -0
- data/lib/holidays/definition/generator/module.rb +7 -4
- data/lib/holidays/version.rb +1 -1
- data/lib/holidays.rb +4 -2
- metadata +25 -2
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'date'
|
|
2
|
+
|
|
3
|
+
module Holidays
|
|
4
|
+
module Definition
|
|
5
|
+
module CustomMethods
|
|
6
|
+
# se custom holiday calculations, ported verbatim from the
|
|
7
|
+
# +methods:+ block in definitions/se.yaml.
|
|
8
|
+
module SE
|
|
9
|
+
class << self
|
|
10
|
+
def se_midsommardagen(year)
|
|
11
|
+
date = Date.civil(year,6,20)
|
|
12
|
+
date += (6 - date.wday)
|
|
13
|
+
date
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def se_alla_helgons_dag(year)
|
|
17
|
+
date = Date.civil(year,10,31)
|
|
18
|
+
date += (6 - date.wday)
|
|
19
|
+
date
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'date'
|
|
2
|
+
|
|
3
|
+
module Holidays
|
|
4
|
+
module Definition
|
|
5
|
+
module CustomMethods
|
|
6
|
+
# tr custom holiday calculations, ported verbatim from the
|
|
7
|
+
# +methods:+ block in definitions/tr.yaml.
|
|
8
|
+
module TR
|
|
9
|
+
class << self
|
|
10
|
+
def ramadan_feast(year)
|
|
11
|
+
begin_of_ramadan_feast = {
|
|
12
|
+
'2014' => Date.civil(2014, 7, 28),
|
|
13
|
+
'2015' => Date.civil(2015, 7, 17),
|
|
14
|
+
'2016' => Date.civil(2016, 7, 5),
|
|
15
|
+
'2017' => Date.civil(2017, 6, 25),
|
|
16
|
+
'2018' => Date.civil(2018, 6, 15),
|
|
17
|
+
'2019' => Date.civil(2019, 6, 4),
|
|
18
|
+
'2020' => Date.civil(2020, 5, 24),
|
|
19
|
+
'2021' => Date.civil(2021, 5, 13),
|
|
20
|
+
'2022' => Date.civil(2022, 5, 2),
|
|
21
|
+
'2023' => Date.civil(2023, 4, 21),
|
|
22
|
+
'2024' => Date.civil(2024, 4, 10),
|
|
23
|
+
'2025' => Date.civil(2025, 3, 30),
|
|
24
|
+
'2026' => Date.civil(2026, 3, 20),
|
|
25
|
+
'2027' => Date.civil(2027, 3, 9),
|
|
26
|
+
'2028' => Date.civil(2028, 2, 26),
|
|
27
|
+
'2029' => Date.civil(2029, 2, 15),
|
|
28
|
+
'2030' => Date.civil(2030, 2, 4)
|
|
29
|
+
}
|
|
30
|
+
begin_of_ramadan_feast[year.to_s]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def sacrifice_feast(year)
|
|
34
|
+
begin_of_sacrifice_feast = {
|
|
35
|
+
'2014' => Date.civil(2014, 10, 4),
|
|
36
|
+
'2015' => Date.civil(2015, 9, 24),
|
|
37
|
+
'2016' => Date.civil(2016, 9, 12),
|
|
38
|
+
'2017' => Date.civil(2017, 9, 1),
|
|
39
|
+
'2018' => Date.civil(2018, 8, 21),
|
|
40
|
+
'2019' => Date.civil(2019, 8, 11),
|
|
41
|
+
'2020' => Date.civil(2020, 7, 31),
|
|
42
|
+
'2021' => Date.civil(2021, 7, 20),
|
|
43
|
+
'2022' => Date.civil(2022, 7, 9),
|
|
44
|
+
'2023' => Date.civil(2023, 6, 28),
|
|
45
|
+
'2024' => Date.civil(2024, 6, 16),
|
|
46
|
+
'2025' => Date.civil(2025, 6, 6),
|
|
47
|
+
'2026' => Date.civil(2026, 5, 27),
|
|
48
|
+
'2027' => Date.civil(2027, 5, 16),
|
|
49
|
+
'2028' => Date.civil(2028, 5, 5),
|
|
50
|
+
'2029' => Date.civil(2029, 4, 24),
|
|
51
|
+
'2030' => Date.civil(2030, 4, 13)
|
|
52
|
+
}
|
|
53
|
+
begin_of_sacrifice_feast[year.to_s]
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'date'
|
|
2
|
+
|
|
3
|
+
module Holidays
|
|
4
|
+
module Definition
|
|
5
|
+
module CustomMethods
|
|
6
|
+
# us custom holiday calculations, ported verbatim from the
|
|
7
|
+
# +methods:+ block in definitions/us.yaml.
|
|
8
|
+
module US
|
|
9
|
+
class << self
|
|
10
|
+
def christmas_eve_holiday(date)
|
|
11
|
+
beginning_of_month = Date.civil(date.year, date.month, 1)
|
|
12
|
+
(date.saturday? || date.sunday?) ? date.downto(beginning_of_month).find {|d| d if d.wday == 5} : date
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def rosh_hashanah(year)
|
|
16
|
+
rosh_hashanah_dates = {
|
|
17
|
+
'2014' => Date.civil(2014, 9, 25),
|
|
18
|
+
'2015' => Date.civil(2015, 9, 14),
|
|
19
|
+
'2016' => Date.civil(2016, 10, 3),
|
|
20
|
+
'2017' => Date.civil(2017, 9, 21),
|
|
21
|
+
'2018' => Date.civil(2018, 9, 10),
|
|
22
|
+
'2019' => Date.civil(2019, 9, 30),
|
|
23
|
+
'2020' => Date.civil(2020, 9, 19)
|
|
24
|
+
}
|
|
25
|
+
rosh_hashanah_dates[year.to_s]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def yom_kippur(year)
|
|
29
|
+
yom_kippur_dates = {
|
|
30
|
+
'2014' => Date.civil(2014, 10, 4),
|
|
31
|
+
'2015' => Date.civil(2015, 9, 23),
|
|
32
|
+
'2016' => Date.civil(2016, 10, 12),
|
|
33
|
+
'2017' => Date.civil(2017, 9, 30),
|
|
34
|
+
'2018' => Date.civil(2018, 9, 19),
|
|
35
|
+
'2019' => Date.civil(2019, 10, 9),
|
|
36
|
+
'2020' => Date.civil(2020, 9, 28)
|
|
37
|
+
}
|
|
38
|
+
yom_kippur_dates[year.to_s]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def georgia_state_holiday(year, month)
|
|
42
|
+
beginning_of_month = Date.civil(year, month, 1)
|
|
43
|
+
state_holiday = Date.civil(year, month, 26)
|
|
44
|
+
state_holiday.downto(beginning_of_month).find {|date| date if date.wday == 1 }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def lee_jackson_day(year, month)
|
|
48
|
+
day_of_holiday = Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, month, 3, 1)
|
|
49
|
+
beginning_of_month = Date.civil(year, month, 1)
|
|
50
|
+
king_day = Date.civil(year, month, day_of_holiday)
|
|
51
|
+
king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def juneteenth_national_independence_day(region, date)
|
|
55
|
+
if region == :us_ut
|
|
56
|
+
case date.wday
|
|
57
|
+
when 1
|
|
58
|
+
date
|
|
59
|
+
when 2,3,4,5
|
|
60
|
+
date - (date.wday - 1)
|
|
61
|
+
when 6
|
|
62
|
+
date + 2
|
|
63
|
+
when 0
|
|
64
|
+
date + 1
|
|
65
|
+
end
|
|
66
|
+
elsif date.wday == 0
|
|
67
|
+
date + 1
|
|
68
|
+
elsif date.wday == 6
|
|
69
|
+
date - 1
|
|
70
|
+
else
|
|
71
|
+
date
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def election_day(year)
|
|
76
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def even_year_election_day(year)
|
|
80
|
+
if year % 2 == 0
|
|
81
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def us_inauguration_day(year)
|
|
86
|
+
year % 4 == 1 ? 20 : nil
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -4,7 +4,12 @@ module Holidays
|
|
|
4
4
|
module Definition
|
|
5
5
|
module Generator
|
|
6
6
|
class Module
|
|
7
|
-
|
|
7
|
+
# NOTE: +custom_methods+ is accepted for backwards-compatible call sites but is
|
|
8
|
+
# no longer baked into the generated module. Per-region custom methods are now
|
|
9
|
+
# hosted natively under lib/holidays/definition/custom_methods/ and seeded into
|
|
10
|
+
# the repository at boot. YAML files that still carry methods:/ruby: blocks are
|
|
11
|
+
# tolerated: their bodies are simply ignored here.
|
|
12
|
+
def call(module_name, files, regions, month_strings, custom_methods = nil)
|
|
8
13
|
raise ArgumentError.new("module name cannot be nil") if module_name.nil?
|
|
9
14
|
raise ArgumentError.new("module name cannot be blank") if module_name.empty?
|
|
10
15
|
|
|
@@ -38,9 +43,7 @@ module Holidays
|
|
|
38
43
|
end
|
|
39
44
|
|
|
40
45
|
def self.custom_methods
|
|
41
|
-
{
|
|
42
|
-
#{custom_methods}
|
|
43
|
-
}
|
|
46
|
+
{}
|
|
44
47
|
end
|
|
45
48
|
end
|
|
46
49
|
end
|
data/lib/holidays/version.rb
CHANGED
data/lib/holidays.rb
CHANGED
|
@@ -7,7 +7,7 @@ require 'holidays/factory/definition'
|
|
|
7
7
|
require 'holidays/factory/date_calculator'
|
|
8
8
|
require 'holidays/factory/finder'
|
|
9
9
|
require 'holidays/errors'
|
|
10
|
-
require 'holidays/
|
|
10
|
+
require 'holidays/bootstrap'
|
|
11
11
|
|
|
12
12
|
module Holidays
|
|
13
13
|
WEEKS = {:first => 1, :second => 2, :third => 3, :fourth => 4, :fifth => 5, :last => -1, :second_last => -2, :third_last => -3}
|
|
@@ -140,4 +140,6 @@ module Holidays
|
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
|
|
143
|
-
Holidays
|
|
143
|
+
module Holidays
|
|
144
|
+
Bootstrap.call
|
|
145
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: holidays
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 11.
|
|
4
|
+
version: 11.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex Dunae
|
|
@@ -114,9 +114,11 @@ files:
|
|
|
114
114
|
- lib/generated_definitions/be_nl.rb
|
|
115
115
|
- lib/generated_definitions/bg.rb
|
|
116
116
|
- lib/generated_definitions/br.rb
|
|
117
|
+
- lib/generated_definitions/by.rb
|
|
117
118
|
- lib/generated_definitions/ca.rb
|
|
118
119
|
- lib/generated_definitions/ch.rb
|
|
119
120
|
- lib/generated_definitions/cl.rb
|
|
121
|
+
- lib/generated_definitions/cn.rb
|
|
120
122
|
- lib/generated_definitions/co.rb
|
|
121
123
|
- lib/generated_definitions/cr.rb
|
|
122
124
|
- lib/generated_definitions/cy.rb
|
|
@@ -190,6 +192,7 @@ files:
|
|
|
190
192
|
- lib/generated_definitions/vn.rb
|
|
191
193
|
- lib/generated_definitions/za.rb
|
|
192
194
|
- lib/holidays.rb
|
|
195
|
+
- lib/holidays/bootstrap.rb
|
|
193
196
|
- lib/holidays/core_extensions/date.rb
|
|
194
197
|
- lib/holidays/core_extensions/time.rb
|
|
195
198
|
- lib/holidays/date_calculator/day_of_month.rb
|
|
@@ -200,6 +203,27 @@ files:
|
|
|
200
203
|
- lib/holidays/definition/context/generator.rb
|
|
201
204
|
- lib/holidays/definition/context/load.rb
|
|
202
205
|
- lib/holidays/definition/context/merger.rb
|
|
206
|
+
- lib/holidays/definition/custom_methods/ar.rb
|
|
207
|
+
- lib/holidays/definition/custom_methods/au.rb
|
|
208
|
+
- lib/holidays/definition/custom_methods/ca.rb
|
|
209
|
+
- lib/holidays/definition/custom_methods/ch.rb
|
|
210
|
+
- lib/holidays/definition/custom_methods/cl.rb
|
|
211
|
+
- lib/holidays/definition/custom_methods/cn.rb
|
|
212
|
+
- lib/holidays/definition/custom_methods/co.rb
|
|
213
|
+
- lib/holidays/definition/custom_methods/de.rb
|
|
214
|
+
- lib/holidays/definition/custom_methods/fedex.rb
|
|
215
|
+
- lib/holidays/definition/custom_methods/fi.rb
|
|
216
|
+
- lib/holidays/definition/custom_methods/ie.rb
|
|
217
|
+
- lib/holidays/definition/custom_methods/is.rb
|
|
218
|
+
- lib/holidays/definition/custom_methods/jp.rb
|
|
219
|
+
- lib/holidays/definition/custom_methods/kr.rb
|
|
220
|
+
- lib/holidays/definition/custom_methods/lv.rb
|
|
221
|
+
- lib/holidays/definition/custom_methods/nz.rb
|
|
222
|
+
- lib/holidays/definition/custom_methods/ph.rb
|
|
223
|
+
- lib/holidays/definition/custom_methods/registry.rb
|
|
224
|
+
- lib/holidays/definition/custom_methods/se.rb
|
|
225
|
+
- lib/holidays/definition/custom_methods/tr.rb
|
|
226
|
+
- lib/holidays/definition/custom_methods/us.rb
|
|
203
227
|
- lib/holidays/definition/decorator/custom_method_proc.rb
|
|
204
228
|
- lib/holidays/definition/decorator/custom_method_source.rb
|
|
205
229
|
- lib/holidays/definition/decorator/test.rb
|
|
@@ -230,7 +254,6 @@ files:
|
|
|
230
254
|
- lib/holidays/finder/context/year_holiday.rb
|
|
231
255
|
- lib/holidays/finder/rules/in_region.rb
|
|
232
256
|
- lib/holidays/finder/rules/year_range.rb
|
|
233
|
-
- lib/holidays/load_all_definitions.rb
|
|
234
257
|
- lib/holidays/version.rb
|
|
235
258
|
homepage: https://github.com/holidays/holidays
|
|
236
259
|
licenses:
|