holidays 8.6.0 → 8.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +25 -0
  3. data/CHANGELOG.md +19 -4
  4. data/README.md +70 -55
  5. data/holidays.gemspec +5 -0
  6. data/lib/generated_definitions/MANIFEST +2 -0
  7. data/lib/generated_definitions/REGIONS.rb +2 -2
  8. data/lib/generated_definitions/au.rb +35 -5
  9. data/lib/generated_definitions/br.rb +2 -1
  10. data/lib/generated_definitions/ca.rb +2 -1
  11. data/lib/generated_definitions/de.rb +6 -3
  12. data/lib/generated_definitions/dk.rb +1 -1
  13. data/lib/generated_definitions/europe.rb +26 -20
  14. data/lib/generated_definitions/fr.rb +2 -2
  15. data/lib/generated_definitions/gb.rb +1 -0
  16. data/lib/generated_definitions/gr.rb +38 -0
  17. data/lib/generated_definitions/ke.rb +34 -0
  18. data/lib/generated_definitions/lt.rb +2 -1
  19. data/lib/generated_definitions/lv.rb +2 -1
  20. data/lib/generated_definitions/northamerica.rb +2 -1
  21. data/lib/generated_definitions/nz.rb +2 -1
  22. data/lib/generated_definitions/scandinavia.rb +1 -1
  23. data/lib/generated_definitions/southamerica.rb +1 -0
  24. data/lib/holidays/finder/context/search.rb +1 -0
  25. data/lib/holidays/version.rb +1 -1
  26. data/test/defs/test_defs_au.rb +15 -0
  27. data/test/defs/test_defs_br.rb +4 -0
  28. data/test/defs/test_defs_ca.rb +10 -2
  29. data/test/defs/test_defs_de.rb +4 -0
  30. data/test/defs/test_defs_dk.rb +4 -0
  31. data/test/defs/test_defs_europe.rb +53 -33
  32. data/test/defs/test_defs_fr.rb +3 -3
  33. data/test/defs/test_defs_gb.rb +8 -0
  34. data/test/defs/{test_defs_el.rb → test_defs_gr.rb} +18 -18
  35. data/test/defs/test_defs_ke.rb +31 -0
  36. data/test/defs/test_defs_lt.rb +2 -0
  37. data/test/defs/test_defs_lv.rb +2 -0
  38. data/test/defs/test_defs_northamerica.rb +10 -2
  39. data/test/defs/test_defs_nz.rb +4 -0
  40. data/test/defs/test_defs_scandinavia.rb +4 -0
  41. data/test/defs/test_defs_southamerica.rb +4 -0
  42. data/test/integration/test_available_regions.rb +1 -1
  43. data/test/integration/test_holidays.rb +2 -8
  44. metadata +14 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9eb1a9a2387a3734d10203b125345004d0c470ccc2394b82e36f57277a487db0
4
- data.tar.gz: 9a77c89d65379366e70b9d6e3eed67080ce5fadb096c11dad1b5edb81dee2e8c
3
+ metadata.gz: 541f4a1cdcc966e2a4fcd290406ce35e0fe5318066ecfbe5dc3e3c7808fc6462
4
+ data.tar.gz: a0344504afac759b54975ce9e32c0148382f1623fa2e6bd59ca908f41c43a6d1
5
5
  SHA512:
6
- metadata.gz: 5580b2c4ed9f227fc68558382fa2635df1fb234291b7bd554f3675bea59cf81345be20de1cc7fa8babb9cd445cf1d076dde9eebed1947d75a5a956fdf2ae2158
7
- data.tar.gz: 210b384735179c141e9c15d0de847449a3e70cd7e468453afd9b038afced110c1ea957b69d48e1196e524a2da3804af1d3502558407f4a9b71e998fb9ae3da64
6
+ metadata.gz: 2e898308850d254f87f84c9a3eb664f81f5306654737c82268c294b8f55764cd6fc5ae152e8e6d4936cf0b509ff9beeb4189ec89ec9579e19d85d6a86d840b3a
7
+ data.tar.gz: d73797c2f24d6026de777dcd2a3b8d0e4fcbe84e2d1cad68db59f53f9054d43e41922f810491e9317e48b2f42cce3056ac7af8bdb18d19969a0b26639759acf7
@@ -0,0 +1,25 @@
1
+ name: Ruby
2
+ on:
3
+ push:
4
+ branches: [ "master" ]
5
+ pull_request:
6
+ branches: [ "master" ]
7
+ permissions:
8
+ contents: read
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', 'ruby-head']
15
+ env:
16
+ BUNDLER_NO_OLD_RUBYGEMS_WARNING: true
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0
21
+ with:
22
+ ruby-version: ${{ matrix.ruby-version }}
23
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
24
+ - name: Run tests
25
+ run: make test
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Ruby Holidays Gem CHANGELOG
2
2
 
3
+ ## 8.8.0
4
+
5
+ * Update to [v5.7.4 definitions](https://github.com/holidays/definitions/releases/tag/v5.7.4). Please see the changelog for the definition details.
6
+
7
+ ## 8.7.1
8
+
9
+ * Fix testing issues and github action config, no behavior changes
10
+ * Remove Travis CI config
11
+
12
+ ## 8.7.0
13
+
14
+ * Update to [v5.6.2 definitions](https://github.com/holidays/definitions/releases/tag/v5.6.2). Please see the changelog for the definition details.
15
+ * Add support for ruby 2.7, 3.0, 3.1, 3.2, 3.3
16
+ * Add GitHub actions support since Travis CI is not free for OSS anymore
17
+
3
18
  ## 8.6.0
4
19
 
5
20
  * Update to [v5.5.0 definitions](https://github.com/holidays/definitions/releases/tag/v5.5.0). Please see the changelog for the definition details.
@@ -7,22 +22,22 @@
7
22
 
8
23
  ## 8.5.0
9
24
 
10
- * Update submodule definitions.
25
+ * Update submodule definitions.
11
26
  * Thanks to contributors!!
12
27
 
13
28
  ## 8.4.1
14
29
 
15
- * Fix jp holidays from 2022.
30
+ * Fix jp holidays from 2022.
16
31
 
17
32
  ## 8.4.0
18
33
 
19
- * Update submodule definitions.
34
+ * Update submodule definitions
20
35
  * Thanks to contributors!!
21
36
 
22
37
 
23
38
  ## 8.3.0
24
39
 
25
- * Update submodule definitions.
40
+ * Update submodule definitions
26
41
  * Remove test about feb 29 on non leap year.
27
42
  * Thanks to contributors!!
28
43
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Ruby Holidays Gem [![Build Status](https://travis-ci.org/holidays/holidays.svg?branch=master)](https://travis-ci.org/holidays/holidays)
1
+ # Ruby Holidays Gem [![Build Status](https://github.com/holidays/holidays/actions/workflows/ruby.yml/badge.svg)](https://github.com/holidays/holidays/actions/workflows/ruby.yml)
2
2
 
3
3
  Functionality to deal with holidays in Ruby.
4
4
 
@@ -17,7 +17,13 @@ This gem is tested with the following ruby versions:
17
17
  * 2.4.5
18
18
  * 2.5.3
19
19
  * 2.6.1
20
- * JRuby 9.2.5.0
20
+ * 2.7.7
21
+ * 3.0.6
22
+ * 3.1.4
23
+ * 3.2.2
24
+ * 3.3.0
25
+ * JRuby 9.2.21.0
26
+ * JRuby 9.4.2.0
21
27
 
22
28
  ## Semver
23
29
 
@@ -40,23 +46,23 @@ This gem offers multiple ways to check for holidays for a variety of scenarios.
40
46
 
41
47
  Get all holidays on April 25, 2008 in Australia:
42
48
 
43
- ```
44
- Holidays.on(Date.civil(2008, 4, 25), :au)
49
+ ```ruby
50
+ Holidays.on(Date.new(2008, 4, 25), :au)
45
51
  => [{:name => 'ANZAC Day',...}]
46
52
  ```
47
53
 
48
54
  You can check multiple regions in a single call:
49
55
 
50
- ```
51
- Holidays.on(Date.civil(2008, 1, 1), :us, :fr)
56
+ ```ruby
57
+ Holidays.on(Date.new(2008, 1, 1), :us, :fr)
52
58
  => [{:name=>"New Year's Day", :regions=>[:us],...},
53
59
  {:name=>"Jour de l'an", :regions=>[:fr],...}]
54
60
  ```
55
61
 
56
62
  You can leave off 'regions' to get holidays for any region in our [definitions](https://github.com/holidays/definitions):
57
63
 
58
- ```
59
- Holidays.on(Date.civil(2007, 4, 25))
64
+ ```ruby
65
+ Holidays.on(Date.new(2007, 4, 25))
60
66
  => [{:name=>"ANZAC Day", :regions=>[:au],...},
61
67
  {:name=>"Festa della Liberazione", :regions=>[:it],...},
62
68
  {:name=>"Dia da Liberdade", :regions=>[:pt],...}
@@ -68,9 +74,9 @@ You can leave off 'regions' to get holidays for any region in our [definitions](
68
74
 
69
75
  Get all holidays during the month of July 2008 in Canada and the US:
70
76
 
71
- ```
72
- from = Date.civil(2008,7,1)
73
- to = Date.civil(2008,7,31)
77
+ ```ruby
78
+ from = Date.new(2008,7,1)
79
+ to = Date.new(2008,7,31)
74
80
 
75
81
  Holidays.between(from, to, :ca, :us)
76
82
  => [{:name => 'Canada Day',...}
@@ -85,23 +91,23 @@ By default this flag is turned off, meaning no informal holidays will be returne
85
91
 
86
92
  Get Valentine's Day in the US:
87
93
 
88
- ```
94
+ ```ruby
89
95
  Holidays.on(Date.new(2018, 2, 14), :us, :informal)
90
96
  => [{:name=>"Valentine's Day",...}]
91
97
  ```
92
98
 
93
99
  Leaving off 'informal' will mean that Valentine's Day is not returned:
94
100
 
95
- ```
101
+ ```ruby
96
102
  Holidays.on(Date.new(2018, 2, 14), :us)
97
103
  => []
98
104
  ```
99
105
 
100
106
  Get informal holidays during the month of February 2008 for any region:
101
107
 
102
- ```
103
- from = Date.civil(2008,2,1)
104
- to = Date.civil(2008,2,15)
108
+ ```ruby
109
+ from = Date.new(2008,2,1)
110
+ to = Date.new(2008,2,15)
105
111
 
106
112
  Holidays.between(from, to, :informal)
107
113
  => [{:name => 'Valentine\'s Day',...}]
@@ -115,25 +121,26 @@ By default this flag is turned off, meaning no observed logic will be applied.
115
121
 
116
122
  Get holidays that are observed on Monday July 2, 2007 in British Columbia, Canada:
117
123
 
118
- ```
119
- Holidays.on(Date.civil(2007, 7, 2), :ca_bc, :observed)
124
+ ```ruby
125
+ Holidays.on(Date.new(2007, 7, 2), :ca_bc, :observed)
120
126
  => [{:name => 'Canada Day',...}]
121
127
  ```
122
128
 
123
129
  Leaving off the 'observed' flag will mean that 'Canada Day' is not returned since it actually falls on Sunday July 1:
124
130
 
125
- ```
126
- Holidays.on(Date.civil(2007, 7, 2), :ca_bc)
131
+ ```ruby
132
+ Holidays.on(Date.new(2007, 7, 2), :ca_bc)
127
133
  => []
128
- Holidays.on(Date.civil(2007, 7, 1), :ca_bc)
134
+
135
+ Holidays.on(Date.new(2007, 7, 1), :ca_bc)
129
136
  => [{:name=>"Canada Day", :regions=>[:ca],...}]
130
137
  ```
131
138
 
132
139
  Get all observed US Federal holidays between 2018 and 2019:
133
140
 
134
- ```
135
- from = Date.civil(2018,1,1)
136
- to = Date.civil(2019,12,31)
141
+ ```ruby
142
+ from = Date.new(2018,1,1)
143
+ to = Date.new(2019,12,31)
137
144
 
138
145
  Holidays.between(from, to, :federalreserve, :observed)
139
146
  => [{:name => "New Year's Day"....}
@@ -146,25 +153,28 @@ Check if there are any holidays taking place during a specified work week. 'Work
146
153
 
147
154
  Check whether a holiday falls during first week of the year for any region:
148
155
 
149
- ```
150
- Holidays.any_holidays_during_work_week?(Date.civil(2016, 1, 1))
156
+ ```ruby
157
+ Holidays.any_holidays_during_work_week?(Date.new(2016, 1, 1))
151
158
  => true
152
159
  ```
153
160
 
154
161
  You can also pass in `informal` or `observed`:
155
162
 
156
- ```
163
+ ```ruby
157
164
  # Returns true since Valentine's Day falls on a Wednesday
158
- holidays.any_holidays_during_work_week?(date.civil(2018, 2, 14), :us, :informal)
165
+ Holidays.any_holidays_during_work_week?(Date.new(2018, 2, 14), :us, :informal)
159
166
  => true
167
+
160
168
  # Returns false if you don't specify informal
161
- irb(main):006:0> Holidays.any_holidays_during_work_week?(Date.civil(2018, 2, 14), :us)
169
+ Holidays.any_holidays_during_work_week?(Date.new(2018, 2, 14), :us)
162
170
  => false
171
+
163
172
  # Returns true since Veteran's Day is observed on Monday November 12, 2018
164
- holidays.any_holidays_during_work_week?(date.civil(2018, 11, 12), :us, :observed)
173
+ Holidays.any_holidays_during_work_week?(Date.new(2018, 11, 12), :us, :observed)
165
174
  => true
175
+
166
176
  # Returns false if you don't specify observed since the actual holiday is on Sunday November 11th 2018
167
- irb(main):005:0> Holidays.any_holidays_during_work_week?(Date.civil(2018, 11, 12), :us)
177
+ Holidays.any_holidays_during_work_week?(Date.new(2018, 11, 12), :us)
168
178
  => false
169
179
  ```
170
180
 
@@ -172,21 +182,21 @@ irb(main):005:0> Holidays.any_holidays_during_work_week?(Date.civil(2018, 11, 12
172
182
 
173
183
  Get the next holidays occurring from February 23, 2016 for the US:
174
184
 
175
- ```
176
- Holidays.next_holidays(3, [:us, :informal], Date.civil(2016, 2, 23))
185
+ ```ruby
186
+ Holidays.next_holidays(3, [:us, :informal], Date.new(2016, 2, 23))
177
187
  => [{:name => "St. Patrick's Day",...}, {:name => "Good Friday",...}, {:name => "Easter Sunday",...}]
178
188
  ```
179
189
 
180
190
  You can specify the number of holidays to return. This method will default to `Date.today` if no date is provided.
181
191
 
182
- #### Find all holidays occuring starting from a specific date to the end of the year
192
+ #### Find all holidays occurring starting from a specific date to the end of the year
183
193
 
184
194
  Get all holidays starting from February 23, 2016 to end of year in the US:
185
195
 
186
- ```
187
- Holidays.year_holidays([:ca_on], Date.civil(2016, 2, 23))
196
+ ```ruby
197
+ Holidays.year_holidays([:ca_on], Date.new(2016, 2, 23))
188
198
  => [{:name=>"Good Friday",...},
189
- {name=>"Easter Sunday",...},
199
+ {:name=>"Easter Sunday",...},
190
200
  {:name=>"Victoria Day",...},
191
201
  {:name=>"Canada Day",...},
192
202
  {:name=>"Civic Holiday",...},
@@ -203,7 +213,7 @@ This method will default to `Date.today` if no date is provided.
203
213
 
204
214
  Return all available regions:
205
215
 
206
- ```
216
+ ```ruby
207
217
  Holidays.available_regions
208
218
  => [:ar, :at, ..., :sg] # this will be a big array
209
219
  ```
@@ -214,18 +224,21 @@ In addition to the [provided definitions](https://github.com/holidays/definition
214
224
 
215
225
  To load custom 'Company Founding' holiday on June 1st:
216
226
 
217
- ```
227
+ ```ruby
218
228
  Holidays.load_custom('/home/user/holiday_definitions/custom_holidays.yaml')
219
- Holidays.on(Date.civil(2013, 6, 1), :my_custom_region)
220
- => [{:name => 'Company Founding',...}]
229
+ Holidays.on(Date.new(2013, 6, 1), :my_custom_region)
230
+ => [{:name => 'Company Founding',...}]
221
231
  ```
222
232
 
223
233
  Custom definition files must match the [syntax of the existing definition files](https://github.com/holidays/definitions/blob/master/doc/SYNTAX.md).
224
234
 
225
235
  Multiple files can be loaded at the same time:
226
236
 
227
- ```
228
- Holidays.load_custom('/home/user/holidays/custom_holidays1.yaml', '/home/user/holidays/custom_holidays2.yaml')
237
+ ```ruby
238
+ Holidays.load_custom(
239
+ '/home/user/holidays/custom_holidays1.yaml',
240
+ '/home/user/holidays/custom_holidays2.yaml'
241
+ )
229
242
  ```
230
243
 
231
244
  ## Extending Ruby's Date and Time classes
@@ -234,8 +247,9 @@ Holidays.load_custom('/home/user/holidays/custom_holidays1.yaml', '/home/user/ho
234
247
 
235
248
  To extend the 'Date' class:
236
249
 
237
- ```
250
+ ```ruby
238
251
  require 'holidays/core_extensions/date'
252
+
239
253
  class Date
240
254
  include Holidays::CoreExtensions::Date
241
255
  end
@@ -243,8 +257,8 @@ end
243
257
 
244
258
  Now you can check which holidays occur in Iceland on January 1, 2008:
245
259
 
246
- ```
247
- d = Date.civil(2008,7,1)
260
+ ```ruby
261
+ d = Date.new(2008,7,1)
248
262
 
249
263
  d.holidays(:is)
250
264
  => [{:name => 'Nýársdagur'}...]
@@ -252,8 +266,8 @@ d.holidays(:is)
252
266
 
253
267
  Or lookup Canada Day in different regions:
254
268
 
255
- ```
256
- d = Date.civil(2008,7,1)
269
+ ```ruby
270
+ d = Date.new(2008,7,1)
257
271
 
258
272
  d.holiday?(:ca) # Canada
259
273
  => true
@@ -267,23 +281,24 @@ d.holiday?(:fr) # France
267
281
 
268
282
  Or return the new date based on the options:
269
283
 
270
- ```
271
- d = Date.civil(2008,7,1)
284
+ ```ruby
285
+ d = Date.new(2008,7,1)
272
286
  d.change(:year => 2016, :month => 1, :day => 1)
273
287
  => #<Date: 2016-01-01 ((2457389j,0s,0n),+0s,2299161j)>
274
288
  ```
275
289
 
276
290
  Or you can calculate the day of the month:
277
291
 
278
- ```
292
+ ```ruby
279
293
  Date.calculate_mday(2015, 4, :first, 2)
280
294
  => 7
281
295
  ```
282
296
 
283
297
  ### Time
284
298
 
285
- ```
299
+ ```ruby
286
300
  require 'holidays/core_extensions/time'
301
+
287
302
  class Time
288
303
  include Holidays::CoreExtensions::Time
289
304
  end
@@ -291,8 +306,8 @@ end
291
306
 
292
307
  Find end of month for given date:
293
308
 
294
- ```
295
- d = Date.civil(2016,8,1)
309
+ ```ruby
310
+ d = Date.new(2016,8,1)
296
311
  d.end_of_month
297
312
  => #<Date: 2016-08-31 ((2457632j,0s,0n),+0s,2299161j)>
298
313
  ```
@@ -301,7 +316,7 @@ d.end_of_month
301
316
 
302
317
  If you are checking holidays regularly you can cache your results for improved performance. Run this before looking up a holiday (e.g. in an initializer):
303
318
 
304
- ```
319
+ ```ruby
305
320
  YEAR = 365 * 24 * 60 * 60
306
321
  Holidays.cache_between(Time.now, Time.now + 2 * YEAR, :ca, :us, :observed)
307
322
  ```
data/holidays.gemspec CHANGED
@@ -12,6 +12,11 @@ Gem::Specification.new do |gem|
12
12
  gem.homepage = 'https://github.com/holidays/holidays'
13
13
  gem.description = %q(A collection of Ruby methods to deal with statutory and other holidays. You deserve a holiday!)
14
14
  gem.summary = %q(A collection of Ruby methods to deal with statutory and other holidays.)
15
+ gem.metadata = {
16
+ 'changelog_uri' => "https://github.com/holidays/holidays/blob/master/CHANGELOG.md",
17
+ 'source_code_uri' => 'https://github.com/holidays/holidays',
18
+ 'bug_tracker_uri' => 'https://github.com/holidays/holidays/issues'
19
+ }
15
20
  gem.files = `git ls-files`.split("\n") - ['.gitignore', '.travis.yml']
16
21
  gem.test_files = gem.files.grep(/^test/)
17
22
  gem.require_paths = ['lib']
@@ -30,6 +30,7 @@ The following definition files are included in this installation:
30
30
  * generated_definitions/fr
31
31
  * generated_definitions/gb
32
32
  * generated_definitions/ge
33
+ * generated_definitions/gr
33
34
  * generated_definitions/hk
34
35
  * generated_definitions/hr
35
36
  * generated_definitions/hu
@@ -37,6 +38,7 @@ The following definition files are included in this installation:
37
38
  * generated_definitions/is
38
39
  * generated_definitions/it
39
40
  * generated_definitions/jp
41
+ * generated_definitions/ke
40
42
  * generated_definitions/kr
41
43
  * generated_definitions/kz
42
44
  * generated_definitions/li
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  module Holidays
3
- REGIONS = [:ar, :at, :au, :au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_wa, :au_tas, :au_tas_south, :au_qld_cairns, :au_qld_brisbane, :au_tas_north, :au_vic_melbourne, :be_fr, :be_nl, :br, :bg_en, :bg_bg, :ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_nb, :ca_mb, :ca_ns, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_yt, :us, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cl, :co, :cr, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath, :de_sn, :de_st, :de_be, :de_by_cath, :de_by_augsburg, :de_bb, :de_mv, :de_th, :de_hb, :de_hh, :de_ni, :de_sh, :ecbtarget, :ee, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :federalreserve, :federalreservebanks, :fedex, :fi, :fr_a, :fr_m, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy, :gb_sct, :gb_con, :im, :gb_iom, :ge, :hr, :hk, :hu, :ie, :is, :it, :it_ve, :it_tv, :it_vr, :it_pd, :it_fi, :it_ge, :it_to, :it_rm, :it_vi, :it_bl, :it_ro, :kr, :kz, :li, :lt, :lv, :ma, :mt_mt, :mt_en, :mx, :mx_pue, :nerc, :nl, :lu, :no, :nyse, :nz, :nz_sl, :nz_we, :nz_ak, :nz_nl, :nz_ne, :nz_ot, :nz_ta, :nz_sc, :nz_hb, :nz_mb, :nz_ca, :nz_ch, :nz_wl, :pe, :ph, :pl, :pt, :pt_li, :pt_po, :ro, :rs_cyrl, :rs_la, :ru, :se, :tn, :tr, :ua, :us_fl, :us_la, :us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn, :us_ms, :us_id, :us_ar, :us_tx, :us_dc, :us_md, :us_va, :us_vt, :us_ak, :us_ca, :us_me, :us_ma, :us_al, :us_ga, :us_ne, :us_mo, :us_sc, :us_wv, :us_vi, :us_ut, :us_ri, :us_az, :us_co, :us_il, :us_mt, :us_nm, :us_ny, :us_oh, :us_pa, :us_mi, :us_mn, :us_nv, :us_or, :us_sd, :us_wa, :us_wi, :us_wy, :us_ia, :us_ks, :us_nh, :us_ok, :unitednations, :ups, :za, :ve, :sk, :si, :jp, :vi, :sg, :my, :th, :ng]
3
+ REGIONS = [:ar, :at, :au, :au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_wa, :au_tas, :au_tas_south, :au_qld_cairns, :au_qld_brisbane, :au_tas_north, :au_vic_melbourne, :be_fr, :be_nl, :br, :bg_en, :bg_bg, :ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_nb, :ca_mb, :ca_ns, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_yt, :us, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cl, :co, :cr, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath, :de_sn, :de_st, :de_be, :de_mv, :de_by_cath, :de_by_augsburg, :de_th, :de_bb, :de_hb, :de_hh, :de_ni, :de_sh, :ecbtarget, :ee, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :federalreserve, :federalreservebanks, :fedex, :fi, :fr_a, :fr_m, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy, :gb_sct, :gb_con, :im, :gb_iom, :ge, :gr, :hr, :hk, :hu, :ie, :is, :it, :it_ve, :it_tv, :it_vr, :it_pd, :it_fi, :it_ge, :it_to, :it_rm, :it_vi, :it_bl, :it_ro, :ke, :kr, :kz, :li, :lt, :lv, :ma, :mt_mt, :mt_en, :mx, :mx_pue, :nerc, :nl, :lu, :no, :nyse, :nz, :nz_sl, :nz_we, :nz_ak, :nz_nl, :nz_ne, :nz_ot, :nz_ta, :nz_sc, :nz_hb, :nz_mb, :nz_ca, :nz_ch, :nz_wl, :pe, :ph, :pl, :pt, :pt_li, :pt_po, :ro, :rs_cyrl, :rs_la, :ru, :se, :tn, :tr, :ua, :us_fl, :us_la, :us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn, :us_ms, :us_id, :us_ar, :us_tx, :us_dc, :us_md, :us_va, :us_vt, :us_ak, :us_ca, :us_me, :us_ma, :us_al, :us_ga, :us_ne, :us_mo, :us_sc, :us_wv, :us_vi, :us_ut, :us_ri, :us_az, :us_co, :us_il, :us_mt, :us_nm, :us_ny, :us_oh, :us_pa, :us_mi, :us_mn, :us_nv, :us_or, :us_sd, :us_wa, :us_wi, :us_wy, :us_ia, :us_ks, :us_nh, :us_ok, :unitednations, :ups, :za, :ve, :sk, :si, :jp, :vi, :sg, :my, :th, :ng]
4
4
 
5
- PARENT_REGION_LOOKUP = {:ar=>:ar, :at=>:at, :au=>:au, :au_nsw=>:au, :au_vic=>:au, :au_qld=>:au, :au_nt=>:au, :au_act=>:au, :au_sa=>:au, :au_wa=>:au, :au_tas=>:au, :au_tas_south=>:au, :au_qld_cairns=>:au, :au_qld_brisbane=>:au, :au_tas_north=>:au, :au_vic_melbourne=>:au, :be_fr=>:be_fr, :be_nl=>:be_nl, :br=>:br, :bg_en=>:bg, :bg_bg=>:bg, :ca=>:ca, :ca_qc=>:ca, :ca_ab=>:ca, :ca_sk=>:ca, :ca_on=>:ca, :ca_bc=>:ca, :ca_nb=>:ca, :ca_mb=>:ca, :ca_ns=>:ca, :ca_pe=>:ca, :ca_nl=>:ca, :ca_nt=>:ca, :ca_nu=>:ca, :ca_yt=>:ca, :us=>:us, :ch_zh=>:ch, :ch_be=>:ch, :ch_lu=>:ch, :ch_ur=>:ch, :ch_sz=>:ch, :ch_ow=>:ch, :ch_nw=>:ch, :ch_gl=>:ch, :ch_zg=>:ch, :ch_fr=>:ch, :ch_so=>:ch, :ch_bs=>:ch, :ch_bl=>:ch, :ch_sh=>:ch, :ch_ar=>:ch, :ch_ai=>:ch, :ch_sg=>:ch, :ch_gr=>:ch, :ch_ag=>:ch, :ch_tg=>:ch, :ch_ti=>:ch, :ch_vd=>:ch, :ch_ne=>:ch, :ch_ge=>:ch, :ch_ju=>:ch, :ch_vs=>:ch, :ch=>:ch, :cl=>:cl, :co=>:co, :cr=>:cr, :cz=>:cz, :dk=>:dk, :de=>:de, :de_bw=>:de, :de_by=>:de, :de_he=>:de, :de_nw=>:de, :de_rp=>:de, :de_sl=>:de, :de_sn_sorbian=>:de, :de_th_cath=>:de, :de_sn=>:de, :de_st=>:de, :de_be=>:de, :de_by_cath=>:de, :de_by_augsburg=>:de, :de_bb=>:de, :de_mv=>:de, :de_th=>:de, :de_hb=>:de, :de_hh=>:de, :de_ni=>:de, :de_sh=>:de, :ecbtarget=>:ecbtarget, :ee=>:ee, :el=>:el, :es_pv=>:es, :es_na=>:es, :es_an=>:es, :es_ib=>:es, :es_cm=>:es, :es_mu=>:es, :es_m=>:es, :es_ar=>:es, :es_cl=>:es, :es_cn=>:es, :es_lo=>:es, :es_ga=>:es, :es_ce=>:es, :es_o=>:es, :es_ex=>:es, :es=>:es, :es_ct=>:es, :es_v=>:es, :es_vc=>:es, :federalreserve=>:federalreserve, :federalreservebanks=>:federalreservebanks, :fedex=>:fedex, :fi=>:fi, :fr_a=>:fr, :fr_m=>:fr, :fr=>:fr, :gb=>:gb, :gb_eng=>:gb, :gb_wls=>:gb, :gb_eaw=>:gb, :gb_nir=>:gb, :je=>:gb, :gb_jsy=>:gb, :gg=>:gb, :gb_gsy=>:gb, :gb_sct=>:gb, :gb_con=>:gb, :im=>:gb, :gb_iom=>:gb, :ge=>:ge, :hr=>:hr, :hk=>:hk, :hu=>:hu, :ie=>:ie, :is=>:is, :it=>:it, :it_ve=>:it, :it_tv=>:it, :it_vr=>:it, :it_pd=>:it, :it_fi=>:it, :it_ge=>:it, :it_to=>:it, :it_rm=>:it, :it_vi=>:it, :it_bl=>:it, :it_ro=>:it, :kr=>:kr, :kz=>:kz, :li=>:li, :lt=>:lt, :lv=>:lv, :ma=>:ma, :mt_mt=>:mt_mt, :mt_en=>:mt_en, :mx=>:mx, :mx_pue=>:mx, :nerc=>:nerc, :nl=>:nl, :lu=>:lu, :no=>:no, :nyse=>:nyse, :nz=>:nz, :nz_sl=>:nz, :nz_we=>:nz, :nz_ak=>:nz, :nz_nl=>:nz, :nz_ne=>:nz, :nz_ot=>:nz, :nz_ta=>:nz, :nz_sc=>:nz, :nz_hb=>:nz, :nz_mb=>:nz, :nz_ca=>:nz, :nz_ch=>:nz, :nz_wl=>:nz, :pe=>:pe, :ph=>:ph, :pl=>:pl, :pt=>:pt, :pt_li=>:pt, :pt_po=>:pt, :ro=>:ro, :rs_cyrl=>:rs_cyrl, :rs_la=>:rs_la, :ru=>:ru, :se=>:se, :tn=>:tn, :tr=>:tr, :ua=>:ua, :us_fl=>:us, :us_la=>:us, :us_ct=>:us, :us_de=>:us, :us_gu=>:us, :us_hi=>:us, :us_in=>:us, :us_ky=>:us, :us_nj=>:us, :us_nc=>:us, :us_nd=>:us, :us_pr=>:us, :us_tn=>:us, :us_ms=>:us, :us_id=>:us, :us_ar=>:us, :us_tx=>:us, :us_dc=>:us, :us_md=>:us, :us_va=>:us, :us_vt=>:us, :us_ak=>:us, :us_ca=>:us, :us_me=>:us, :us_ma=>:us, :us_al=>:us, :us_ga=>:us, :us_ne=>:us, :us_mo=>:us, :us_sc=>:us, :us_wv=>:us, :us_vi=>:us, :us_ut=>:us, :us_ri=>:us, :us_az=>:us, :us_co=>:us, :us_il=>:us, :us_mt=>:us, :us_nm=>:us, :us_ny=>:us, :us_oh=>:us, :us_pa=>:us, :us_mi=>:us, :us_mn=>:us, :us_nv=>:us, :us_or=>:us, :us_sd=>:us, :us_wa=>:us, :us_wi=>:us, :us_wy=>:us, :us_ia=>:us, :us_ks=>:us, :us_nh=>:us, :us_ok=>:us, :unitednations=>:unitednations, :ups=>:ups, :za=>:za, :ve=>:southamerica, :sk=>:europe, :si=>:europe, :jp=>:jp, :vi=>:vi, :sg=>:sg, :my=>:my, :th=>:th, :ng=>:ng}
5
+ PARENT_REGION_LOOKUP = {:ar=>:ar, :at=>:at, :au=>:au, :au_nsw=>:au, :au_vic=>:au, :au_qld=>:au, :au_nt=>:au, :au_act=>:au, :au_sa=>:au, :au_wa=>:au, :au_tas=>:au, :au_tas_south=>:au, :au_qld_cairns=>:au, :au_qld_brisbane=>:au, :au_tas_north=>:au, :au_vic_melbourne=>:au, :be_fr=>:be_fr, :be_nl=>:be_nl, :br=>:br, :bg_en=>:bg, :bg_bg=>:bg, :ca=>:ca, :ca_qc=>:ca, :ca_ab=>:ca, :ca_sk=>:ca, :ca_on=>:ca, :ca_bc=>:ca, :ca_nb=>:ca, :ca_mb=>:ca, :ca_ns=>:ca, :ca_pe=>:ca, :ca_nl=>:ca, :ca_nt=>:ca, :ca_nu=>:ca, :ca_yt=>:ca, :us=>:us, :ch_zh=>:ch, :ch_be=>:ch, :ch_lu=>:ch, :ch_ur=>:ch, :ch_sz=>:ch, :ch_ow=>:ch, :ch_nw=>:ch, :ch_gl=>:ch, :ch_zg=>:ch, :ch_fr=>:ch, :ch_so=>:ch, :ch_bs=>:ch, :ch_bl=>:ch, :ch_sh=>:ch, :ch_ar=>:ch, :ch_ai=>:ch, :ch_sg=>:ch, :ch_gr=>:ch, :ch_ag=>:ch, :ch_tg=>:ch, :ch_ti=>:ch, :ch_vd=>:ch, :ch_ne=>:ch, :ch_ge=>:ch, :ch_ju=>:ch, :ch_vs=>:ch, :ch=>:ch, :cl=>:cl, :co=>:co, :cr=>:cr, :cz=>:cz, :dk=>:dk, :de=>:de, :de_bw=>:de, :de_by=>:de, :de_he=>:de, :de_nw=>:de, :de_rp=>:de, :de_sl=>:de, :de_sn_sorbian=>:de, :de_th_cath=>:de, :de_sn=>:de, :de_st=>:de, :de_be=>:de, :de_mv=>:de, :de_by_cath=>:de, :de_by_augsburg=>:de, :de_th=>:de, :de_bb=>:de, :de_hb=>:de, :de_hh=>:de, :de_ni=>:de, :de_sh=>:de, :ecbtarget=>:ecbtarget, :ee=>:ee, :es_pv=>:es, :es_na=>:es, :es_an=>:es, :es_ib=>:es, :es_cm=>:es, :es_mu=>:es, :es_m=>:es, :es_ar=>:es, :es_cl=>:es, :es_cn=>:es, :es_lo=>:es, :es_ga=>:es, :es_ce=>:es, :es_o=>:es, :es_ex=>:es, :es=>:es, :es_ct=>:es, :es_v=>:es, :es_vc=>:es, :federalreserve=>:federalreserve, :federalreservebanks=>:federalreservebanks, :fedex=>:fedex, :fi=>:fi, :fr_a=>:fr, :fr_m=>:fr, :fr=>:fr, :gb=>:gb, :gb_eng=>:gb, :gb_wls=>:gb, :gb_eaw=>:gb, :gb_nir=>:gb, :je=>:gb, :gb_jsy=>:gb, :gg=>:gb, :gb_gsy=>:gb, :gb_sct=>:gb, :gb_con=>:gb, :im=>:gb, :gb_iom=>:gb, :ge=>:ge, :gr=>:gr, :hr=>:hr, :hk=>:hk, :hu=>:hu, :ie=>:ie, :is=>:is, :it=>:it, :it_ve=>:it, :it_tv=>:it, :it_vr=>:it, :it_pd=>:it, :it_fi=>:it, :it_ge=>:it, :it_to=>:it, :it_rm=>:it, :it_vi=>:it, :it_bl=>:it, :it_ro=>:it, :ke=>:ke, :kr=>:kr, :kz=>:kz, :li=>:li, :lt=>:lt, :lv=>:lv, :ma=>:ma, :mt_mt=>:mt_mt, :mt_en=>:mt_en, :mx=>:mx, :mx_pue=>:mx, :nerc=>:nerc, :nl=>:nl, :lu=>:lu, :no=>:no, :nyse=>:nyse, :nz=>:nz, :nz_sl=>:nz, :nz_we=>:nz, :nz_ak=>:nz, :nz_nl=>:nz, :nz_ne=>:nz, :nz_ot=>:nz, :nz_ta=>:nz, :nz_sc=>:nz, :nz_hb=>:nz, :nz_mb=>:nz, :nz_ca=>:nz, :nz_ch=>:nz, :nz_wl=>:nz, :pe=>:pe, :ph=>:ph, :pl=>:pl, :pt=>:pt, :pt_li=>:pt, :pt_po=>:pt, :ro=>:ro, :rs_cyrl=>:rs_cyrl, :rs_la=>:rs_la, :ru=>:ru, :se=>:se, :tn=>:tn, :tr=>:tr, :ua=>:ua, :us_fl=>:us, :us_la=>:us, :us_ct=>:us, :us_de=>:us, :us_gu=>:us, :us_hi=>:us, :us_in=>:us, :us_ky=>:us, :us_nj=>:us, :us_nc=>:us, :us_nd=>:us, :us_pr=>:us, :us_tn=>:us, :us_ms=>:us, :us_id=>:us, :us_ar=>:us, :us_tx=>:us, :us_dc=>:us, :us_md=>:us, :us_va=>:us, :us_vt=>:us, :us_ak=>:us, :us_ca=>:us, :us_me=>:us, :us_ma=>:us, :us_al=>:us, :us_ga=>:us, :us_ne=>:us, :us_mo=>:us, :us_sc=>:us, :us_wv=>:us, :us_vi=>:us, :us_ut=>:us, :us_ri=>:us, :us_az=>:us, :us_co=>:us, :us_il=>:us, :us_mt=>:us, :us_nm=>:us, :us_ny=>:us, :us_oh=>:us, :us_pa=>:us, :us_mi=>:us, :us_mn=>:us, :us_nv=>:us, :us_or=>:us, :us_sd=>:us, :us_wa=>:us, :us_wi=>:us, :us_wy=>:us, :us_ia=>:us, :us_ks=>:us, :us_nh=>:us, :us_ok=>:us, :unitednations=>:unitednations, :ups=>:ups, :za=>:za, :ve=>:southamerica, :sk=>:europe, :si=>:europe, :jp=>:jp, :vi=>:vi, :sg=>:sg, :my=>:my, :th=>:th, :ng=>:ng}
6
6
  end
@@ -31,20 +31,24 @@ module Holidays
31
31
  {:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:au_wa]}],
32
32
  5 => [{:function => "qld_labour_day_may(year)", :function_arguments => [:year], :name => "Labour Day", :regions => [:au_qld]},
33
33
  {:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]},
34
- {:function => "may_pub_hol_sa(year)", :function_arguments => [:year], :name => "May Public Holiday", :regions => [:au_sa]}],
34
+ {:function => "may_pub_hol_sa(year)", :function_arguments => [:year], :name => "May Public Holiday", :regions => [:au_sa]},
35
+ {:mday => 27, :function => "to_nearest_monday_after(date)", :function_arguments => [:date], :year_ranges => { :from => 2018 },:name => "Reconciliation Day", :regions => [:au_act]}],
35
36
  6 => [{:wday => 1, :week => 1, :name => "Western Australia Day", :regions => [:au_wa]},
36
- {:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]},
37
+ {:wday => 1, :week => 2, :year_ranges => { :until => 2022 },:name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]},
38
+ {:wday => 1, :week => 2, :year_ranges => { :from => 2023 },:name => "King's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]},
37
39
  {:function => "qld_queens_birthday_june(year)", :function_arguments => [:year], :name => "Queen's Birthday", :regions => [:au_qld]},
38
40
  {:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}],
39
41
  7 => [{:wday => 5, :week => 3, :name => "Cairns Show", :regions => [:au_qld_cairns]}],
40
42
  8 => [{:function => "qld_brisbane_ekka_holiday(year)", :function_arguments => [:year], :name => "Ekka", :regions => [:au_qld_brisbane]}],
41
43
  9 => [{:mday => 22, :year_ranges => { :limited => [2022] },:name => "National Day of Mourning for Her Majesty Queen Elizabeth II", :regions => [:au]},
42
- {:wday => 1, :week => -1, :name => "Queen's Birthday", :regions => [:au_wa]},
43
- {:wday => 1, :week => -1, :name => "Family & Community Day", :regions => [:au_act]}],
44
+ {:wday => 1, :week => -1, :year_ranges => { :until => 2021 },:name => "Queen's Birthday", :regions => [:au_wa]},
45
+ {:wday => 1, :week => -1, :year_ranges => { :from => 2022 },:name => "King's Birthday", :regions => [:au_wa]},
46
+ {:wday => 1, :week => -1, :year_ranges => { :until => 2017 },:name => "Family & Community Day", :regions => [:au_act]}],
44
47
  10 => [{:function => "afl_grand_final(year)", :function_arguments => [:year], :name => "Friday before the AFL Grand Final", :regions => [:au_vic]},
45
48
  {:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_act, :au_nsw, :au_sa]},
46
49
  {:function => "qld_labour_day_october(year)", :function_arguments => [:year], :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Labour Day", :regions => [:au_qld]},
47
- {:function => "qld_queens_bday_october(year)", :function_arguments => [:year], :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Queen's Birthday", :regions => [:au_qld]},
50
+ {:function => "qld_queens_bday_october(year)", :function_arguments => [:year], :year_ranges => { :until => 2022 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Queen's Birthday", :regions => [:au_qld]},
51
+ {:function => "qld_kings_bday_october(year)", :function_arguments => [:year], :year_ranges => { :from => 2023 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "King's Birthday", :regions => [:au_qld]},
48
52
  {:function => "hobart_show_day(year)", :function_arguments => [:year], :name => "Royal Hobart Show", :regions => [:au_tas_south]}],
49
53
  11 => [{:function => "g20_day_2014_only(year)", :function_arguments => [:year], :name => "G20 Day", :regions => [:au_qld_brisbane]},
50
54
  {:wday => 1, :week => 1, :name => "Recreation Day", :regions => [:au_tas_north]},
@@ -86,6 +90,14 @@ else
86
90
  end
87
91
  },
88
92
 
93
+ "qld_kings_bday_october(year)" => Proc.new { |year|
94
+ if year >= 2023
95
+ Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
96
+ else
97
+ nil
98
+ end
99
+ },
100
+
89
101
  "qld_queens_birthday_june(year)" => Proc.new { |year|
90
102
  if year <= 2015
91
103
  Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 6, 2, 1)
@@ -140,6 +152,24 @@ else
140
152
  end
141
153
  },
142
154
 
155
+ "to_nearest_monday_after(date)" => Proc.new { |date|
156
+ case date.wday
157
+ when 6
158
+ date += 2
159
+ when 5
160
+ date += 3
161
+ when 4
162
+ date += 4
163
+ when 3
164
+ date += 5
165
+ when 2
166
+ date += 6
167
+ when 0
168
+ date += 1
169
+ end
170
+ date
171
+ },
172
+
143
173
 
144
174
  }
145
175
  end
@@ -22,7 +22,8 @@ module Holidays
22
22
  9 => [{:mday => 7, :name => "Proclamação da Independência", :regions => [:br]}],
23
23
  10 => [{:mday => 12, :name => "Dia de Nossa Senhora Aparecida", :regions => [:br]}],
24
24
  11 => [{:mday => 2, :name => "Dia de Finados", :regions => [:br]},
25
- {:mday => 15, :name => "Proclamação da República", :regions => [:br]}],
25
+ {:mday => 15, :name => "Proclamação da República", :regions => [:br]},
26
+ {:mday => 20, :year_ranges => { :from => 2024 },:name => "Dia Nacional de Zumbi e da Consciência Negra", :regions => [:br]}],
26
27
  12 => [{:mday => 25, :name => "Natal", :regions => [:br]}]
27
28
  }
28
29
  end
@@ -53,7 +53,8 @@ module Holidays
53
53
  {:wday => 1, :week => 1, :type => :informal, :name => "Terry Fox Day", :regions => [:ca_mb]},
54
54
  {:wday => 1, :week => 3, :name => "Discovery Day", :regions => [:ca_yt]}],
55
55
  9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:ca]},
56
- {:mday => 30, :year_ranges => { :from => 2021 },:name => "National Day for Truth and Reconciliation", :regions => [:ca]}],
56
+ {:mday => 30, :year_ranges => { :from => 2021 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "National Day for Truth and Reconciliation", :regions => [:ca_bc, :ca_nt, :ca_pe, :ca_yt]},
57
+ {:mday => 30, :year_ranges => { :from => 2021 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "National Day for Truth and Reconciliation", :regions => [:ca_ab, :ca_mb, :ca_nu]}],
57
58
  10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_qc, :ca_sk, :ca_yt]},
58
59
  {:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}],
59
60
  11 => [{:mday => 11, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Remembrance Day", :regions => [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt]}],
@@ -7,7 +7,7 @@ module Holidays
7
7
  # All the definitions are available at https://github.com/holidays/holidays
8
8
  module DE # :nodoc:
9
9
  def self.defined_regions
10
- [:de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath, :de_sn, :de_st, :de_be, :de_by_cath, :de_by_augsburg, :de_bb, :de_mv, :de_th, :de_hb, :de_hh, :de_ni, :de_sh]
10
+ [:de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath, :de_sn, :de_st, :de_be, :de_mv, :de_by_cath, :de_by_augsburg, :de_th, :de_bb, :de_hb, :de_hh, :de_ni, :de_sh]
11
11
  end
12
12
 
13
13
  def self.holidays_by_month
@@ -24,12 +24,15 @@ module Holidays
24
24
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :type => :informal, :name => "Aschermittwoch", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}],
25
25
  1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:de]},
26
26
  {:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by, :de_st]}],
27
- 3 => [{:mday => 8, :year_ranges => { :from => 2019 },:name => "Internationaler Frauentag", :regions => [:de_be]}],
27
+ 3 => [{:mday => 8, :year_ranges => { :from => 2019 },:name => "Internationaler Frauentag", :regions => [:de_be]},
28
+ {:mday => 8, :year_ranges => { :from => 2023 },:name => "Internationaler Frauentag", :regions => [:de_mv]}],
28
29
  5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:de]},
29
30
  {:mday => 8, :year_ranges => { :limited => [2020] },:name => "Tag der Befreiung", :regions => [:de_be]}],
31
+ 6 => [{:mday => 17, :year_ranges => { :between => 1954..1990 },:name => "Tag der Deutschen Einheit", :regions => [:de]}],
30
32
  8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by_cath, :de_by_augsburg, :de_sl]},
31
33
  {:mday => 8, :name => "Friedensfest", :regions => [:de_by_augsburg]}],
32
- 10 => [{:mday => 3, :name => "Tag der Deutschen Einheit", :regions => [:de]},
34
+ 9 => [{:mday => 20, :year_ranges => { :from => 2019 },:name => "Weltkindertag", :regions => [:de_th]}],
35
+ 10 => [{:mday => 3, :year_ranges => { :from => 1990 },:name => "Tag der Deutschen Einheit", :regions => [:de]},
33
36
  {:mday => 31, :name => "Reformationstag", :regions => [:de_bb, :de_mv, :de_sn, :de_st, :de_th]},
34
37
  {:mday => 31, :type => :informal, :name => "Reformationstag", :regions => [:de_bw]},
35
38
  {:mday => 31, :year_ranges => { :limited => [2017] },:name => "Reformationstag", :regions => [:de]},
@@ -18,7 +18,7 @@ module Holidays
18
18
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:dk]},
19
19
  {:function => "easter(year)", :function_arguments => [:year], :name => "Påskedag", :regions => [:dk]},
20
20
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:dk]},
21
- {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 26, :name => "Store Bededag", :regions => [:dk]},
21
+ {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 26, :year_ranges => { :until => 2023 },:name => "Store Bededag", :regions => [:dk]},
22
22
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:dk]},
23
23
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pinsedag", :regions => [:dk]},
24
24
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. Pinsedag", :regions => [:dk]}],