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.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/lib/generated_definitions/MANIFEST +2 -0
  4. data/lib/generated_definitions/REGIONS.rb +3 -3
  5. data/lib/generated_definitions/ar.rb +1 -18
  6. data/lib/generated_definitions/at.rb +1 -3
  7. data/lib/generated_definitions/au.rb +1 -86
  8. data/lib/generated_definitions/be_fr.rb +1 -3
  9. data/lib/generated_definitions/be_nl.rb +1 -3
  10. data/lib/generated_definitions/bg.rb +1 -3
  11. data/lib/generated_definitions/br.rb +1 -3
  12. data/lib/generated_definitions/by.rb +39 -0
  13. data/lib/generated_definitions/ca.rb +4 -14
  14. data/lib/generated_definitions/ch.rb +1 -48
  15. data/lib/generated_definitions/cl.rb +1 -33
  16. data/lib/generated_definitions/cn.rb +39 -0
  17. data/lib/generated_definitions/co.rb +10 -90
  18. data/lib/generated_definitions/cr.rb +1 -3
  19. data/lib/generated_definitions/cy.rb +1 -3
  20. data/lib/generated_definitions/cz.rb +1 -3
  21. data/lib/generated_definitions/de.rb +2 -14
  22. data/lib/generated_definitions/dk.rb +1 -3
  23. data/lib/generated_definitions/ecbtarget.rb +1 -3
  24. data/lib/generated_definitions/ee.rb +1 -3
  25. data/lib/generated_definitions/es.rb +2 -4
  26. data/lib/generated_definitions/europe.rb +5 -95
  27. data/lib/generated_definitions/federalreserve.rb +1 -3
  28. data/lib/generated_definitions/federalreservebanks.rb +1 -3
  29. data/lib/generated_definitions/fedex.rb +1 -7
  30. data/lib/generated_definitions/fi.rb +1 -25
  31. data/lib/generated_definitions/fr.rb +1 -3
  32. data/lib/generated_definitions/gb.rb +1 -3
  33. data/lib/generated_definitions/ge.rb +1 -3
  34. data/lib/generated_definitions/gr.rb +1 -3
  35. data/lib/generated_definitions/hk.rb +1 -3
  36. data/lib/generated_definitions/hr.rb +1 -3
  37. data/lib/generated_definitions/hu.rb +1 -3
  38. data/lib/generated_definitions/ie.rb +1 -12
  39. data/lib/generated_definitions/il.rb +1 -3
  40. data/lib/generated_definitions/in.rb +1 -3
  41. data/lib/generated_definitions/is.rb +1 -13
  42. data/lib/generated_definitions/it.rb +1 -3
  43. data/lib/generated_definitions/jp.rb +1 -95
  44. data/lib/generated_definitions/ke.rb +1 -3
  45. data/lib/generated_definitions/kr.rb +4 -6
  46. data/lib/generated_definitions/kz.rb +1 -3
  47. data/lib/generated_definitions/li.rb +1 -3
  48. data/lib/generated_definitions/lt.rb +1 -3
  49. data/lib/generated_definitions/lu.rb +1 -3
  50. data/lib/generated_definitions/lv.rb +1 -17
  51. data/lib/generated_definitions/ma.rb +1 -3
  52. data/lib/generated_definitions/mc.rb +1 -3
  53. data/lib/generated_definitions/mt_en.rb +1 -3
  54. data/lib/generated_definitions/mt_mt.rb +1 -3
  55. data/lib/generated_definitions/mx.rb +4 -4
  56. data/lib/generated_definitions/my.rb +1 -3
  57. data/lib/generated_definitions/nerc.rb +1 -3
  58. data/lib/generated_definitions/ng.rb +1 -3
  59. data/lib/generated_definitions/nl.rb +1 -3
  60. data/lib/generated_definitions/no.rb +1 -3
  61. data/lib/generated_definitions/northamerica.rb +4 -97
  62. data/lib/generated_definitions/nyse.rb +1 -3
  63. data/lib/generated_definitions/nz.rb +4 -70
  64. data/lib/generated_definitions/pe.rb +12 -10
  65. data/lib/generated_definitions/ph.rb +1 -9
  66. data/lib/generated_definitions/pl.rb +1 -3
  67. data/lib/generated_definitions/pt.rb +1 -3
  68. data/lib/generated_definitions/ro.rb +3 -5
  69. data/lib/generated_definitions/rs_cyrl.rb +1 -3
  70. data/lib/generated_definitions/rs_la.rb +1 -3
  71. data/lib/generated_definitions/ru.rb +1 -3
  72. data/lib/generated_definitions/scandinavia.rb +1 -47
  73. data/lib/generated_definitions/se.rb +1 -15
  74. data/lib/generated_definitions/sg.rb +1 -3
  75. data/lib/generated_definitions/si.rb +1 -3
  76. data/lib/generated_definitions/sk.rb +1 -3
  77. data/lib/generated_definitions/southamerica.rb +18 -139
  78. data/lib/generated_definitions/th.rb +1 -3
  79. data/lib/generated_definitions/tn.rb +1 -3
  80. data/lib/generated_definitions/tr.rb +1 -29
  81. data/lib/generated_definitions/tsx.rb +1 -13
  82. data/lib/generated_definitions/ua.rb +1 -3
  83. data/lib/generated_definitions/unitednations.rb +1 -3
  84. data/lib/generated_definitions/ups.rb +1 -7
  85. data/lib/generated_definitions/us.rb +4 -87
  86. data/lib/generated_definitions/ve.rb +1 -3
  87. data/lib/generated_definitions/vn.rb +1 -3
  88. data/lib/generated_definitions/za.rb +1 -3
  89. data/lib/holidays/{load_all_definitions.rb → bootstrap.rb} +15 -8
  90. data/lib/holidays/date_calculator/lunar_date.rb +1 -0
  91. data/lib/holidays/definition/context/generator.rb +4 -0
  92. data/lib/holidays/definition/custom_methods/ar.rb +28 -0
  93. data/lib/holidays/definition/custom_methods/au.rb +96 -0
  94. data/lib/holidays/definition/custom_methods/ca.rb +23 -0
  95. data/lib/holidays/definition/custom_methods/ch.rb +58 -0
  96. data/lib/holidays/definition/custom_methods/cl.rb +43 -0
  97. data/lib/holidays/definition/custom_methods/cn.rb +31 -0
  98. data/lib/holidays/definition/custom_methods/co.rb +22 -0
  99. data/lib/holidays/definition/custom_methods/de.rb +23 -0
  100. data/lib/holidays/definition/custom_methods/fedex.rb +17 -0
  101. data/lib/holidays/definition/custom_methods/fi.rb +35 -0
  102. data/lib/holidays/definition/custom_methods/ie.rb +22 -0
  103. data/lib/holidays/definition/custom_methods/is.rb +23 -0
  104. data/lib/holidays/definition/custom_methods/jp.rb +107 -0
  105. data/lib/holidays/definition/custom_methods/kr.rb +17 -0
  106. data/lib/holidays/definition/custom_methods/lv.rb +27 -0
  107. data/lib/holidays/definition/custom_methods/nz.rb +77 -0
  108. data/lib/holidays/definition/custom_methods/ph.rb +19 -0
  109. data/lib/holidays/definition/custom_methods/registry.rb +103 -0
  110. data/lib/holidays/definition/custom_methods/se.rb +25 -0
  111. data/lib/holidays/definition/custom_methods/tr.rb +59 -0
  112. data/lib/holidays/definition/custom_methods/us.rb +92 -0
  113. data/lib/holidays/definition/generator/module.rb +7 -4
  114. data/lib/holidays/version.rb +1 -1
  115. data/lib/holidays.rb +4 -2
  116. 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
- def call(module_name, files, regions, month_strings, custom_methods)
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
@@ -1,3 +1,3 @@
1
1
  module Holidays
2
- VERSION = '11.3.0'
2
+ VERSION = '11.5.0'
3
3
  end
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/load_all_definitions'
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::LoadAllDefinitions.call
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.3.0
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: