holidays 7.1.0 → 8.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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -1
  3. data/README.md +3 -4
  4. data/doc/CONTRIBUTING.md +2 -1
  5. data/holidays.gemspec +5 -5
  6. data/lib/generated_definitions/MANIFEST +3 -0
  7. data/lib/generated_definitions/REGIONS.rb +2 -2
  8. data/lib/generated_definitions/ar.rb +27 -8
  9. data/lib/generated_definitions/au.rb +10 -4
  10. data/lib/generated_definitions/ca.rb +21 -16
  11. data/lib/generated_definitions/ch.rb +13 -1
  12. data/lib/generated_definitions/cl.rb +5 -5
  13. data/lib/generated_definitions/de.rb +5 -4
  14. data/lib/generated_definitions/es.rb +4 -2
  15. data/lib/generated_definitions/europe.rb +87 -24
  16. data/lib/generated_definitions/federalreservebanks.rb +1 -0
  17. data/lib/generated_definitions/gb.rb +10 -5
  18. data/lib/generated_definitions/hr.rb +8 -6
  19. data/lib/generated_definitions/hu.rb +3 -2
  20. data/lib/generated_definitions/it.rb +14 -5
  21. data/lib/generated_definitions/jp.rb +26 -21
  22. data/lib/generated_definitions/kz.rb +38 -0
  23. data/lib/generated_definitions/lu.rb +2 -0
  24. data/lib/generated_definitions/lv.rb +52 -0
  25. data/lib/generated_definitions/mx.rb +3 -3
  26. data/lib/generated_definitions/ng.rb +33 -0
  27. data/lib/generated_definitions/northamerica.rb +28 -23
  28. data/lib/generated_definitions/ro.rb +5 -2
  29. data/lib/generated_definitions/southamerica.rb +30 -11
  30. data/lib/generated_definitions/tr.rb +5 -3
  31. data/lib/generated_definitions/ua.rb +6 -6
  32. data/lib/generated_definitions/us.rb +6 -6
  33. data/lib/generated_definitions/za.rb +1 -1
  34. data/lib/holidays/definition/context/generator.rb +20 -34
  35. data/lib/holidays/definition/repository/holidays_by_month.rb +9 -1
  36. data/lib/holidays/finder/context/search.rb +34 -31
  37. data/lib/holidays/finder/rules/year_range.rb +30 -54
  38. data/lib/holidays/version.rb +1 -1
  39. data/lib/holidays.rb +2 -0
  40. data/test/coverage_report.rb +23 -5
  41. data/test/data/test_custom_year_range_holiday_defs.yaml +6 -10
  42. data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
  43. data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
  44. data/test/defs/test_defs_ar.rb +20 -4
  45. data/test/defs/test_defs_au.rb +2 -0
  46. data/test/defs/test_defs_ca.rb +41 -10
  47. data/test/defs/test_defs_ch.rb +4 -0
  48. data/test/defs/test_defs_co.rb +3 -3
  49. data/test/defs/test_defs_de.rb +2 -0
  50. data/test/defs/test_defs_es.rb +2 -0
  51. data/test/defs/test_defs_europe.rb +164 -11
  52. data/test/defs/test_defs_federalreservebanks.rb +24 -0
  53. data/test/defs/test_defs_gb.rb +24 -0
  54. data/test/defs/test_defs_hr.rb +6 -6
  55. data/test/defs/test_defs_hu.rb +12 -4
  56. data/test/defs/test_defs_it.rb +20 -0
  57. data/test/defs/test_defs_jp.rb +5 -3
  58. data/test/defs/test_defs_kz.rb +39 -0
  59. data/test/defs/test_defs_lu.rb +6 -0
  60. data/test/defs/test_defs_lv.rb +90 -0
  61. data/test/defs/test_defs_ng.rb +29 -0
  62. data/test/defs/test_defs_northamerica.rb +51 -20
  63. data/test/defs/test_defs_ro.rb +14 -0
  64. data/test/defs/test_defs_southamerica.rb +23 -7
  65. data/test/defs/test_defs_tr.rb +7 -0
  66. data/test/defs/test_defs_us.rb +10 -10
  67. data/test/holidays/core_extensions/test_date.rb +3 -2
  68. data/test/holidays/definition/context/test_generator.rb +5 -18
  69. data/test/holidays/definition/repository/test_holidays_by_month.rb +121 -1
  70. data/test/holidays/finder/rules/test_year_range.rb +43 -47
  71. data/test/integration/test_available_regions.rb +1 -1
  72. data/test/integration/test_custom_year_range_holidays.rb +0 -7
  73. data/test/integration/test_holidays.rb +3 -25
  74. data/test/integration/test_holidays_between.rb +10 -0
  75. data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
  76. metadata +28 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ffd1d2cf2a85fb43c632e03acf020bf9eedc1b7366ce2cf489fdb94a3b928d5
4
- data.tar.gz: b6ff441b3083db5aa217acc5641133f9b1412ba800d05723fab0b041be9ae0e7
3
+ metadata.gz: fe8bda2ece3b3ebd51396c7e789afdc177973efecd1b4aa61f255e48c5b63030
4
+ data.tar.gz: 1124d98b145d9275c755a0e6b5a026602f7bdc017f966d097ad291383df4cc1b
5
5
  SHA512:
6
- metadata.gz: b0f498c8b80a8da2ffa09aacfc1257b7f3eb99809b86a50b4f882d9ff9fcb44fed1b836fc942c144e3b58def610d795fe6d560a0cac255d8a28527d5f373a0ed
7
- data.tar.gz: 148811b0fd60dd3c0c0431ff515ba22970ffbb60b24961ed887327f512a156b16fdf1b8b9d843c14b405ed678ac84b9c31ac9284488d17130f460cdd1c82ee50
6
+ metadata.gz: c26a9c82704f7b5feb34b93f882fe7ac42fafcad20e69afb4a2e36b39575db590e000f7a955545fb5e9232925132ab665b7aa9bc192cec86937c38f1e07e7bb9
7
+ data.tar.gz: b8e894ae48e9dbe1a6ee94d2a64de6f9f85ea524f0b0c39f2ac20b8aef59a63d620b9e2d24220352d364506c4a3348d849ffe907d45ef68384d80267adc71a12
data/CHANGELOG.md CHANGED
@@ -1,9 +1,44 @@
1
1
  # Ruby Holidays Gem CHANGELOG
2
2
 
3
+ ## 8.5.0
4
+
5
+ * Update submodule definitions.
6
+ * Thanks to contributors!!
7
+
8
+ ## 8.4.1
9
+
10
+ * Fix jp holidays from 2022.
11
+
12
+ ## 8.4.0
13
+
14
+ * Update submodule definitions.
15
+ * Thanks to contributors!!
16
+
17
+
18
+ ## 8.3.0
19
+
20
+ * Update submodule definitions.
21
+ * Remove test about feb 29 on non leap year.
22
+ * Thanks to contributors!!
23
+
24
+ ## 8.2.0
25
+
26
+ * Update submodule definitions. Thanks to contributors!!
27
+
28
+ ## 8.1.0
29
+
30
+ * Update submodule definitions, so that the newest holidays from the definition
31
+ gem are represent here.
32
+
33
+ ## 8.0.0
34
+
35
+ * Remove support for ruby 2.2 and ruby 2.3.
36
+ * Add support for latest ruby 2.6
37
+ * Update to [v5.0.1 definitions](https://github.com/holidays/definitions/releases/tag/v5.0.1). Please see the changelog for the definition details.
38
+
3
39
  ## 7.1.0
4
40
 
5
41
  * Update to [v4.1.0 definitions](https://github.com/holidays/definitions/releases/tag/v4.1.0). Please see the changelog for the definition details.
6
- * Add ruby 2.6 to automated tests
7
42
 
8
43
  ## 7.0.0
9
44
 
data/README.md CHANGED
@@ -14,11 +14,10 @@ gem install holidays
14
14
 
15
15
  This gem is tested with the following ruby versions:
16
16
 
17
- * 2.2.9
18
- * 2.3.8
19
17
  * 2.4.5
20
18
  * 2.5.3
21
- * JRuby 9.0.5.0
19
+ * 2.6.1
20
+ * JRuby 9.2.5.0
22
21
 
23
22
  ## Semver
24
23
 
@@ -136,7 +135,7 @@ Get all observed US Federal holidays between 2018 and 2019:
136
135
  from = Date.civil(2018,1,1)
137
136
  to = Date.civil(2019,12,31)
138
137
 
139
- Holidays.between(from, to, :federal_reserve, :observed)
138
+ Holidays.between(from, to, :federalreserve, :observed)
140
139
  => [{:name => "New Year's Day"....}
141
140
  {:name => "Birthday of Martin Luther King, Jr"....}]
142
141
  ```
data/doc/CONTRIBUTING.md CHANGED
@@ -51,7 +51,7 @@ make point-to-defs-master
51
51
  ## For non-definition functionality
52
52
 
53
53
  * Fork this repository
54
- * Make your changes
54
+ * Make your changes. Don't forget to run `make test` to execute the test suite!
55
55
  * Create a PR pointing back to `master`
56
56
 
57
57
  Don't worry about versioning, we'll handle it on our end.
@@ -63,6 +63,7 @@ Don't worry about versioning, we'll handle it on our end.
63
63
  We have included a few handy tasks to help you troubleshoot and test:
64
64
 
65
65
  * `make test` - runs the entire suite
66
+ * `bundle exec ruby <test-file-to-run>` - runs just the tests in the specified file
66
67
  * `REGION=<region> make test-region` - runs the tests for just that region
67
68
  * `make console` - launches an IRB session with the 'holidays' gem loaded for quick testing
68
69
  * `make update-defs` - runs the appropriate git submodule commands to pull the latest definitions
data/holidays.gemspec CHANGED
@@ -16,11 +16,11 @@ Gem::Specification.new do |gem|
16
16
  gem.test_files = gem.files.grep(/^test/)
17
17
  gem.require_paths = ['lib']
18
18
  gem.licenses = ['MIT']
19
- gem.required_ruby_version = '~> 2.2'
20
- gem.add_development_dependency 'bundler', '~> 1.16'
19
+ gem.required_ruby_version = '>= 2.4'
20
+ gem.add_development_dependency 'bundler', '~> 2'
21
21
  gem.add_development_dependency 'rake', '~> 12'
22
22
  gem.add_development_dependency 'simplecov', '~> 0.16'
23
- gem.add_development_dependency 'test-unit', '~> 3.2'
24
- gem.add_development_dependency 'mocha', '~> 1.7'
25
- gem.add_development_dependency 'pry', '~> 0.11'
23
+ gem.add_development_dependency 'test-unit', '~> 3'
24
+ gem.add_development_dependency 'mocha', '~> 1'
25
+ gem.add_development_dependency 'pry', '~> 0.12'
26
26
  end
@@ -38,15 +38,18 @@ The following definition files are included in this installation:
38
38
  * generated_definitions/it
39
39
  * generated_definitions/jp
40
40
  * generated_definitions/kr
41
+ * generated_definitions/kz
41
42
  * generated_definitions/li
42
43
  * generated_definitions/lt
43
44
  * generated_definitions/lu
45
+ * generated_definitions/lv
44
46
  * generated_definitions/ma
45
47
  * generated_definitions/mt_en
46
48
  * generated_definitions/mt_mt
47
49
  * generated_definitions/mx
48
50
  * generated_definitions/my
49
51
  * generated_definitions/nerc
52
+ * generated_definitions/ng
50
53
  * generated_definitions/nl
51
54
  * generated_definitions/no
52
55
  * generated_definitions/northamerica
@@ -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, :kr, :li, :lt, :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_il, :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_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]
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]
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, :kr=>:kr, :li=>:li, :lt=>:lt, :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_il=>: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_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}
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}
6
6
  end
@@ -19,22 +19,41 @@ module Holidays
19
19
  3 => [{:mday => 24, :name => "Día Nacional de la Memoria por la Verdad y la Justicia", :regions => [:ar]}],
20
20
  4 => [{:mday => 2, :name => "Día del Veterano y de los Caídos en la Guerra de Malvinas", :regions => [:ar]}],
21
21
  5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:ar]},
22
- {:mday => 25, :name => "Día de la Revolución de Mayo", :regions => [:ar]}],
23
- 6 => [{:mday => 20, :name => "Día de la Bandera", :regions => [:ar]}],
24
- 7 => [{:mday => 8, :name => "Feriado puente turístico", :regions => [:ar]},
22
+ {:mday => 25, :name => "Día de la Revolución de Mayo", :regions => [:ar]},
23
+ {:mday => 24, :year_ranges => { :limited => [2021] },:name => "Feriado con fines turísticos", :regions => [:ar]}],
24
+ 6 => [{:mday => 17, :function => "to_nearest_monday(date)", :function_arguments => [:date], :name => "Paso a la Inmortalidad del General Martín Miguel de Güemes", :regions => [:ar]},
25
+ {:mday => 20, :name => "Día de la Bandera", :regions => [:ar]}],
26
+ 7 => [{:mday => 8, :year_ranges => { :limited => [2016] },:name => "Feriado con fines turísticos", :regions => [:ar]},
25
27
  {:mday => 9, :name => "Día de la Independencia", :regions => [:ar]}],
26
- 8 => [{:mday => 15, :name => "Paso a la Inmortalidad del General José de San Martín", :regions => [:ar]}],
27
- 10 => [{:mday => 12, :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]}],
28
- 11 => [{:mday => 20, :name => "Día de la Soberanía Nacional", :regions => [:ar]}],
28
+ 8 => [{:mday => 17, :function => "to_nearest_monday(date)", :function_arguments => [:date], :name => "Paso a la Inmortalidad del General José de San Martín", :regions => [:ar]}],
29
+ 10 => [{:mday => 12, :function => "to_nearest_monday(date)", :function_arguments => [:date], :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]},
30
+ {:mday => 8, :year_ranges => { :limited => [2021] },:name => "Feriado con fines turísticos", :regions => [:ar]}],
31
+ 11 => [{:mday => 20, :name => "Día de la Soberanía Nacional", :regions => [:ar]},
32
+ {:mday => 22, :year_ranges => { :limited => [2021] },:name => "Feriado con fines turísticos", :regions => [:ar]}],
29
33
  12 => [{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:ar]},
30
- {:mday => 9, :name => "Feriado puente turístico", :regions => [:ar]},
34
+ {:mday => 9, :year_ranges => { :limited => [2016] },:name => "Feriado con fines turísticos", :regions => [:ar]},
31
35
  {:mday => 25, :name => "Navidad", :regions => [:ar]}]
32
36
  }
33
37
  end
34
38
 
35
39
  def self.custom_methods
36
40
  {
37
-
41
+ "to_nearest_monday(date)" => Proc.new { |date|
42
+ case date.wday
43
+ when 5
44
+ date += 3
45
+ when 4
46
+ date += 4
47
+ when 3
48
+ date -= 2
49
+ when 2
50
+ date -= 1
51
+ end
52
+
53
+ date
54
+ },
55
+
56
+
38
57
  }
39
58
  end
40
59
  end
@@ -15,7 +15,7 @@ module Holidays
15
15
  0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:au]},
16
16
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Easter Saturday", :regions => [:au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa]},
17
17
  {:function => "easter(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:au_nsw, :au_vic]},
18
- {:function => "easter(year)", :function_arguments => [:year], :year_ranges => [{:after => 2017}],:name => "Easter Sunday", :regions => [:au_qld, :au_act]},
18
+ {:function => "easter(year)", :function_arguments => [:year], :year_ranges => { :from => 2017 },:name => "Easter Sunday", :regions => [:au_qld, :au_act]},
19
19
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:au]}],
20
20
  1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:au, :au_nsw, :au_vic, :au_act, :au_sa, :au_wa, :au_nt, :au_qld]},
21
21
  {:mday => 1, :function => "to_monday_if_weekend(date)", :function_arguments => [:date], :name => "New Year's Day", :regions => [:au_tas]},
@@ -26,13 +26,13 @@ module Holidays
26
26
  {:wday => 1, :week => 2, :name => "Labour Day", :regions => [:au_vic]},
27
27
  {:function => "march_pub_hol_sa(year)", :function_arguments => [:year], :name => "March Public Holiday", :regions => [:au_sa]},
28
28
  {:wday => 1, :week => 2, :name => "Canberra Day", :regions => [:au_act]}],
29
- 4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:au]},
30
- {:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_tas]},
29
+ 4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:au, :au_vic]},
30
+ {:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:au_nsw, :au_qld, :au_nt, :au_act, :au_sa, :au_tas]},
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
34
  {:function => "may_pub_hol_sa(year)", :function_arguments => [:year], :name => "May Public Holiday", :regions => [:au_sa]}],
35
- 6 => [{:wday => 1, :week => 1, :name => "Foundation Day", :regions => [:au_wa]},
35
+ 6 => [{:wday => 1, :week => 1, :name => "Western Australia Day", :regions => [:au_wa]},
36
36
  {:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]},
37
37
  {:function => "qld_queens_birthday_june(year)", :function_arguments => [:year], :name => "Queen's Birthday", :regions => [:au_qld]},
38
38
  {:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}],
@@ -66,6 +66,12 @@ when 2016
66
66
  Date.civil(2016, 9, 30)
67
67
  when 2017
68
68
  Date.civil(2017, 9, 29)
69
+ when 2018
70
+ Date.civil(2018, 9, 28)
71
+ when 2019
72
+ Date.civil(2019,9, 27)
73
+ when 2020
74
+ Date.civil(2020, 10, 23)
69
75
  end
70
76
  },
71
77
 
@@ -17,18 +17,19 @@ module Holidays
17
17
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :type => :informal, :name => "Easter Monday", :regions => [:ca]}],
18
18
  1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ca]},
19
19
  {:mday => 2, :name => "New Year's", :regions => [:ca_qc]}],
20
- 2 => [{:wday => 1, :week => 3, :year_ranges => [{:after => 1990}],:name => "Family Day", :regions => [:ca_ab]},
21
- {:wday => 1, :week => 3, :year_ranges => [{:after => 2007}],:name => "Family Day", :regions => [:ca_sk]},
22
- {:wday => 1, :week => 3, :year_ranges => [{:after => 2008}],:name => "Family Day", :regions => [:ca_on]},
23
- {:wday => 1, :week => 2, :year_ranges => [{:between => 2013..2018}],:name => "Family Day", :regions => [:ca_bc]},
24
- {:wday => 1, :week => 3, :year_ranges => [{:after => 2019}],:name => "Family Day", :regions => [:ca_bc]},
25
- {:wday => 1, :week => 3, :year_ranges => [{:after => 2018}],:name => "Family Day", :regions => [:ca_nb]},
20
+ 2 => [{:wday => 1, :week => 3, :year_ranges => { :from => 1990 },:name => "Family Day", :regions => [:ca_ab]},
21
+ {:wday => 1, :week => 3, :year_ranges => { :from => 2007 },:name => "Family Day", :regions => [:ca_sk]},
22
+ {:wday => 1, :week => 3, :year_ranges => { :from => 2008 },:name => "Family Day", :regions => [:ca_on]},
23
+ {:wday => 1, :week => 2, :year_ranges => { :between => 2013..2018 },:name => "Family Day", :regions => [:ca_bc]},
24
+ {:wday => 1, :week => 3, :year_ranges => { :from => 2019 },:name => "Family Day", :regions => [:ca_bc]},
25
+ {:wday => 1, :week => 3, :year_ranges => { :from => 2018 },:name => "Family Day", :regions => [:ca_nb]},
26
26
  {:wday => 1, :week => 3, :name => "Louis Riel Day", :regions => [:ca_mb]},
27
- {:wday => 1, :week => 3, :year_ranges => [{:after => 2015}],:name => "Nova Scotia Heritage Day", :regions => [:ca_ns]},
27
+ {:wday => 1, :week => 3, :year_ranges => { :from => 2015 },:name => "Nova Scotia Heritage Day", :regions => [:ca_ns]},
28
28
  {:wday => 1, :week => 3, :name => "Islander Day", :regions => [:ca_pe]},
29
29
  {:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]},
30
30
  {:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}],
31
- 3 => [{:mday => 23, :type => :informal, :name => "St. George's Day", :regions => [:ca_nl]},
31
+ 3 => [{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:ca_nl]},
32
+ {:mday => 23, :type => :informal, :name => "St. George's Day", :regions => [:ca_nl]},
32
33
  {:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}],
33
34
  5 => [{:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "Victoria Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt]},
34
35
  {:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "National Patriotes Day", :regions => [:ca_qc]},
@@ -37,11 +38,11 @@ module Holidays
37
38
  6 => [{:mday => 24, :type => :informal, :name => "Discovery Day", :regions => [:ca_nl]},
38
39
  {:mday => 24, :name => "Fête Nationale", :regions => [:ca_qc]},
39
40
  {:mday => 21, :name => "National Aboriginal Day", :regions => [:ca_nt]},
40
- {:mday => 21, :year_ranges => [{:after => 2017}],:name => "National Aboriginal Day", :regions => [:ca_yt]},
41
+ {:mday => 21, :year_ranges => { :from => 2017 },:name => "National Aboriginal Day", :regions => [:ca_yt]},
41
42
  {:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}],
42
43
  7 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Canada Day", :regions => [:ca]},
43
44
  {:mday => 12, :type => :informal, :name => "Orangemen's Day", :regions => [:ca_nl]},
44
- {:mday => 9, :name => "Nunavut Day", :regions => [:ca_nu]}],
45
+ {:mday => 9, :year_ranges => { :from => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Nunavut Day", :regions => [:ca_nu]}],
45
46
  8 => [{:wday => 1, :week => 1, :name => "B.C. Day", :regions => [:ca_bc]},
46
47
  {:wday => 1, :week => 1, :name => "Saskatchewan Day", :regions => [:ca_sk]},
47
48
  {:wday => 1, :week => 1, :type => :informal, :name => "Heritage Day", :regions => [:ca_ab]},
@@ -49,15 +50,19 @@ module Holidays
49
50
  {:wday => 1, :week => 1, :name => "Civic Holiday", :regions => [:ca_nt, :ca_nu]},
50
51
  {:wday => 1, :week => 1, :type => :informal, :name => "Civic Holiday", :regions => [:ca_on, :ca_pe]},
51
52
  {:wday => 1, :week => 1, :name => "New Brunswick Day", :regions => [:ca_nb]},
52
- {:wday => 1, :week => 1, :name => "Terry Fox Day", :regions => [:ca_mb]},
53
+ {:wday => 1, :week => 1, :type => :informal, :name => "Terry Fox Day", :regions => [:ca_mb]},
53
54
  {:wday => 1, :week => 3, :name => "Discovery Day", :regions => [:ca_yt]}],
54
- 9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:ca]}],
55
- 10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt]},
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]}],
57
+ 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]},
56
58
  {:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}],
57
59
  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]}],
58
- 12 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca]},
59
- {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]},
60
- {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "Boxing Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nb, :ca_nl, :ca_nt, :ca_ns, :ca_nu, :ca_pe, :ca_sk, :ca_yt]}],
60
+ 12 => [{:mday => 25, :year_ranges => { :until => 2020 },:observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca_on]},
61
+ {:mday => 25, :year_ranges => { :from => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca_on]},
62
+ {:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nb, :ca_nl, :ca_nt, :ca_ns, :ca_nu, :ca_pe, :ca_qc, :ca_sk, :ca_yt]},
63
+ {:mday => 26, :year_ranges => { :until => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]},
64
+ {:mday => 26, :year_ranges => { :from => 2020 },:observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]},
65
+ {:mday => 26, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "Boxing Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nb, :ca_nl, :ca_nt, :ca_ns, :ca_nu, :ca_pe, :ca_qc, :ca_sk, :ca_yt]}],
61
66
  4 => [{:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]},
62
67
  {:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}]
63
68
  }
@@ -32,7 +32,8 @@ module Holidays
32
32
  {:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_ag, :ch_ti, :ch_vs, :ch_ju]}],
33
33
  9 => [{:mday => 22, :name => "Mauritiustag", :regions => [:ch_ai]},
34
34
  {:mday => 25, :name => "Bruderklausenfest", :regions => [:ch_ow]}],
35
- 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_sg, :ch_ag, :ch_ti, :ch_vs, :ch_ju]}],
35
+ 11 => [{:function => "ch_be_zibelemaerit(year)", :function_arguments => [:year], :name => "Zibelemärit", :regions => [:ch_be]},
36
+ {:mday => 1, :name => "Allerheiligen", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_sg, :ch_ag, :ch_ti, :ch_vs, :ch_ju]}],
36
37
  12 => [{:mday => 8, :name => "Maria Empfängnis", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_ai, :ch_ag, :ch_ti, :ch_vs]},
37
38
  {:mday => 25, :name => "Weihnachten", :regions => [:ch]},
38
39
  {:mday => 26, :name => "Stefanstag", :regions => [: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_vs, :ch_ne]},
@@ -76,6 +77,17 @@ end
76
77
  date
77
78
  },
78
79
 
80
+ "ch_be_zibelemaerit(year)" => Proc.new { |year|
81
+ date = Date.civil(year,11,1)
82
+ # Find the first Monday of November
83
+ until date.wday.eql? 1 do
84
+ date += 1
85
+ end
86
+ # There are 21 days between the first monday
87
+ # and the 4rth Monday after
88
+ date + 21
89
+ },
90
+
79
91
 
80
92
  }
81
93
  end
@@ -14,18 +14,18 @@ module Holidays
14
14
  {
15
15
  0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:cl]},
16
16
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Sábado Santo", :regions => [:cl]},
17
- {:function => "st_peter_st_paul_cl(year)", :function_arguments => [:year], :year_ranges => [{:after => 2000}],:name => "San Pedro y San Pablo", :regions => [:cl]},
18
- {:function => "other_churches_day_cl(year)", :function_arguments => [:year], :year_ranges => [{:after => 2008}],:name => "Día de las Iglesias Evangélicas y Protestantes", :regions => [:cl]}],
17
+ {:function => "st_peter_st_paul_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "San Pedro y San Pablo", :regions => [:cl]},
18
+ {:function => "other_churches_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2008 },:name => "Día de las Iglesias Evangélicas y Protestantes", :regions => [:cl]}],
19
19
  1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:cl]}],
20
20
  5 => [{:mday => 1, :name => "Día del Trabajo", :regions => [:cl]},
21
21
  {:mday => 21, :name => "Día de las Glorias Navales", :regions => [:cl]}],
22
- 6 => [{:mday => 29, :year_ranges => [{:before => 1999}],:name => "San Pedro y San Pablo", :regions => [:cl]}],
22
+ 6 => [{:mday => 29, :year_ranges => { :until => 1999 },:name => "San Pedro y San Pablo", :regions => [:cl]}],
23
23
  7 => [{:mday => 16, :name => "Día de la Virgen del Carmen", :regions => [:cl]}],
24
24
  8 => [{:mday => 15, :name => "Asunción de la Virgen", :regions => [:cl]}],
25
25
  9 => [{:mday => 18, :name => "Independencia Nacional", :regions => [:cl]},
26
26
  {:mday => 19, :name => "Día de las Glorias del Ejército", :regions => [:cl]}],
27
- 10 => [{:mday => 12, :year_ranges => [{:before => 1999}],:name => "Encuentro de Dos Mundos", :regions => [:cl]},
28
- {:function => "columbus_day_cl(year)", :function_arguments => [:year], :year_ranges => [{:after => 2000}],:name => "Encuentro de Dos Mundos", :regions => [:cl]}],
27
+ 10 => [{:mday => 12, :year_ranges => { :until => 1999 },:name => "Encuentro de Dos Mundos", :regions => [:cl]},
28
+ {:function => "columbus_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "Encuentro de Dos Mundos", :regions => [:cl]}],
29
29
  11 => [{:mday => 1, :name => "Día de Todos los Santos", :regions => [:cl]}],
30
30
  12 => [{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:cl]},
31
31
  {:mday => 25, :name => "Navidad", :regions => [:cl]}]
@@ -24,15 +24,16 @@ 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 => [{:after => 2019}],:name => "Internationaler Frauentag", :regions => [:de_be]}],
28
- 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:de]}],
27
+ 3 => [{:mday => 8, :year_ranges => { :from => 2019 },:name => "Internationaler Frauentag", :regions => [:de_be]}],
28
+ 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:de]},
29
+ {:mday => 8, :year_ranges => { :limited => [2020] },:name => "Tag der Befreiung", :regions => [:de_be]}],
29
30
  8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by_cath, :de_by_augsburg, :de_sl]},
30
31
  {:mday => 8, :name => "Friedensfest", :regions => [:de_by_augsburg]}],
31
32
  10 => [{:mday => 3, :name => "Tag der Deutschen Einheit", :regions => [:de]},
32
33
  {:mday => 31, :name => "Reformationstag", :regions => [:de_bb, :de_mv, :de_sn, :de_st, :de_th]},
33
34
  {:mday => 31, :type => :informal, :name => "Reformationstag", :regions => [:de_bw]},
34
- {:mday => 31, :year_ranges => [{:limited => [2017]}],:name => "Reformationstag", :regions => [:de]},
35
- {:mday => 31, :year_ranges => [{:after => 2018}],:name => "Reformationstag", :regions => [:de_hb, :de_hh, :de_ni, :de_sh]}],
35
+ {:mday => 31, :year_ranges => { :limited => [2017] },:name => "Reformationstag", :regions => [:de]},
36
+ {:mday => 31, :year_ranges => { :from => 2018 },:name => "Reformationstag", :regions => [:de_hb, :de_hh, :de_ni, :de_sh]}],
36
37
  11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:de_bw, :de_by, :de_nw, :de_rp, :de_sl]},
37
38
  {:function => "de_buss_und_bettag(year)", :function_arguments => [:year], :name => "Buß- und Bettag", :regions => [:de_sn]}],
38
39
  12 => [{:mday => 24, :type => :informal, :name => "Heilig Abend", :regions => [:de]},
@@ -14,7 +14,8 @@ module Holidays
14
14
  {
15
15
  0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [: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]},
16
16
  {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:es]},
17
- {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lunes de Pascua", :regions => [:es_pv, :es_ct, :es_na, :es_v, :es_vc]}],
17
+ {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lunes de Pascua", :regions => [:es_pv, :es_ct, :es_na, :es_v, :es_vc]},
18
+ {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lunes de Pascua Granada", :regions => [:es_ct]}],
18
19
  1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Año Nuevo", :regions => [:es]},
19
20
  {:mday => 6, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Reyes", :regions => [:es]}],
20
21
  2 => [{:mday => 28, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Andalucía", :regions => [:es_an]}],
@@ -27,7 +28,8 @@ module Holidays
27
28
  {:mday => 30, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de las Canarias", :regions => [:es_cn]},
28
29
  {:mday => 31, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Región Castilla-La Mancha", :regions => [:es_cm]}],
29
30
  6 => [{:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Región de Murcia", :regions => [:es_mu]},
30
- {:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de La Rioja", :regions => [:es_lo]}],
31
+ {:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de La Rioja", :regions => [:es_lo]},
32
+ {:mday => 24, :name => "San Juan", :regions => [:es_ct, :es_vc]}],
31
33
  7 => [{:mday => 23, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Santiago Apostol", :regions => [:es_ga]}],
32
34
  8 => [{:mday => 15, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Asunción", :regions => [:es]}],
33
35
  9 => [{:mday => 2, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Ceuta", :regions => [:es_ce]},