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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -1
- data/README.md +3 -4
- data/doc/CONTRIBUTING.md +2 -1
- data/holidays.gemspec +5 -5
- data/lib/generated_definitions/MANIFEST +3 -0
- data/lib/generated_definitions/REGIONS.rb +2 -2
- data/lib/generated_definitions/ar.rb +27 -8
- data/lib/generated_definitions/au.rb +10 -4
- data/lib/generated_definitions/ca.rb +21 -16
- data/lib/generated_definitions/ch.rb +13 -1
- data/lib/generated_definitions/cl.rb +5 -5
- data/lib/generated_definitions/de.rb +5 -4
- data/lib/generated_definitions/es.rb +4 -2
- data/lib/generated_definitions/europe.rb +87 -24
- data/lib/generated_definitions/federalreservebanks.rb +1 -0
- data/lib/generated_definitions/gb.rb +10 -5
- data/lib/generated_definitions/hr.rb +8 -6
- data/lib/generated_definitions/hu.rb +3 -2
- data/lib/generated_definitions/it.rb +14 -5
- data/lib/generated_definitions/jp.rb +26 -21
- data/lib/generated_definitions/kz.rb +38 -0
- data/lib/generated_definitions/lu.rb +2 -0
- data/lib/generated_definitions/lv.rb +52 -0
- data/lib/generated_definitions/mx.rb +3 -3
- data/lib/generated_definitions/ng.rb +33 -0
- data/lib/generated_definitions/northamerica.rb +28 -23
- data/lib/generated_definitions/ro.rb +5 -2
- data/lib/generated_definitions/southamerica.rb +30 -11
- data/lib/generated_definitions/tr.rb +5 -3
- data/lib/generated_definitions/ua.rb +6 -6
- data/lib/generated_definitions/us.rb +6 -6
- data/lib/generated_definitions/za.rb +1 -1
- data/lib/holidays/definition/context/generator.rb +20 -34
- data/lib/holidays/definition/repository/holidays_by_month.rb +9 -1
- data/lib/holidays/finder/context/search.rb +34 -31
- data/lib/holidays/finder/rules/year_range.rb +30 -54
- data/lib/holidays/version.rb +1 -1
- data/lib/holidays.rb +2 -0
- data/test/coverage_report.rb +23 -5
- data/test/data/test_custom_year_range_holiday_defs.yaml +6 -10
- data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
- data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
- data/test/defs/test_defs_ar.rb +20 -4
- data/test/defs/test_defs_au.rb +2 -0
- data/test/defs/test_defs_ca.rb +41 -10
- data/test/defs/test_defs_ch.rb +4 -0
- data/test/defs/test_defs_co.rb +3 -3
- data/test/defs/test_defs_de.rb +2 -0
- data/test/defs/test_defs_es.rb +2 -0
- data/test/defs/test_defs_europe.rb +164 -11
- data/test/defs/test_defs_federalreservebanks.rb +24 -0
- data/test/defs/test_defs_gb.rb +24 -0
- data/test/defs/test_defs_hr.rb +6 -6
- data/test/defs/test_defs_hu.rb +12 -4
- data/test/defs/test_defs_it.rb +20 -0
- data/test/defs/test_defs_jp.rb +5 -3
- data/test/defs/test_defs_kz.rb +39 -0
- data/test/defs/test_defs_lu.rb +6 -0
- data/test/defs/test_defs_lv.rb +90 -0
- data/test/defs/test_defs_ng.rb +29 -0
- data/test/defs/test_defs_northamerica.rb +51 -20
- data/test/defs/test_defs_ro.rb +14 -0
- data/test/defs/test_defs_southamerica.rb +23 -7
- data/test/defs/test_defs_tr.rb +7 -0
- data/test/defs/test_defs_us.rb +10 -10
- data/test/holidays/core_extensions/test_date.rb +3 -2
- data/test/holidays/definition/context/test_generator.rb +5 -18
- data/test/holidays/definition/repository/test_holidays_by_month.rb +121 -1
- data/test/holidays/finder/rules/test_year_range.rb +43 -47
- data/test/integration/test_available_regions.rb +1 -1
- data/test/integration/test_custom_year_range_holidays.rb +0 -7
- data/test/integration/test_holidays.rb +3 -25
- data/test/integration/test_holidays_between.rb +10 -0
- data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
- metadata +28 -14
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Holidays
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
4
|
+
#
|
5
|
+
# Definitions loaded: definitions/lv.yaml
|
6
|
+
#
|
7
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
8
|
+
module LV # :nodoc:
|
9
|
+
def self.defined_regions
|
10
|
+
[:lv]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.holidays_by_month
|
14
|
+
{
|
15
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Lielā Piektdiena", :regions => [:lv]},
|
16
|
+
{:function => "easter(year)", :function_arguments => [:year], :name => "Pirmās Lieldienas", :regions => [:lv]},
|
17
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Otrās Lieldienas", :regions => [:lv]},
|
18
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Vasarsvētki", :regions => [:lv]},
|
19
|
+
{:function => "lv_song_and_dance_festival_end_date(year)", :function_arguments => [:year], :year_ranges => { :from => 2018 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", :regions => [:lv]}],
|
20
|
+
1 => [{:mday => 1, :name => "Jaungada diena", :regions => [:lv]}],
|
21
|
+
5 => [{:mday => 1, :name => "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", :regions => [:lv]},
|
22
|
+
{:mday => 4, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Latvijas Republikas Neatkarības atjaunošanas diena", :regions => [:lv]},
|
23
|
+
{:wday => 0, :week => 2, :name => "Mātes diena", :regions => [:lv]}],
|
24
|
+
6 => [{:mday => 23, :name => "Līgo diena", :regions => [:lv]},
|
25
|
+
{:mday => 24, :name => "Jāņu diena", :regions => [:lv]}],
|
26
|
+
9 => [{:mday => 24, :year_ranges => { :limited => [2018] },:name => "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena", :regions => [:lv]}],
|
27
|
+
11 => [{:mday => 18, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Latvijas Republikas Proklamēšanas diena", :regions => [:lv]}],
|
28
|
+
12 => [{:mday => 24, :name => "Ziemassvētku vakars", :regions => [:lv]},
|
29
|
+
{:mday => 25, :name => "Pirmie Ziemassvētki", :regions => [:lv]},
|
30
|
+
{:mday => 26, :name => "Otrie Ziemassvētki", :regions => [:lv]},
|
31
|
+
{:mday => 31, :name => "Vecgada diena", :regions => [:lv]}]
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.custom_methods
|
36
|
+
{
|
37
|
+
"lv_song_and_dance_festival_end_date(year)" => Proc.new { |year|
|
38
|
+
case year
|
39
|
+
when 2018
|
40
|
+
# https://likumi.lv/ta/id/281541 (Ministru kabineta rīkojums Nr. 252 "Par XXVI Vispārējo latviešu dziesmu un XVI Deju svētku norises laiku")
|
41
|
+
Date.new(2018, 7, 8)
|
42
|
+
when 2023
|
43
|
+
# Event's period/next year is known, but precise dates aren't.
|
44
|
+
# Previously, dates were announced 2 years ahead, so at ~2021-05 this method would need to be revisited.
|
45
|
+
end
|
46
|
+
},
|
47
|
+
|
48
|
+
|
49
|
+
}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -13,7 +13,7 @@ module Holidays
|
|
13
13
|
def self.holidays_by_month
|
14
14
|
{
|
15
15
|
1 => [{:mday => 1, :name => "Año nuevo", :regions => [:mx]},
|
16
|
-
{:mday => 6, :name => "Dia de los Santos Reyes", :regions => [:mx]}],
|
16
|
+
{:mday => 6, :type => :informal, :name => "Dia de los Santos Reyes", :regions => [:mx]}],
|
17
17
|
2 => [{:wday => 1, :week => 1, :name => "Día de la Constitución", :regions => [:mx]},
|
18
18
|
{:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]},
|
19
19
|
{:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}],
|
@@ -24,7 +24,7 @@ module Holidays
|
|
24
24
|
{:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}],
|
25
25
|
5 => [{:mday => 1, :name => "Día del Trabajo", :regions => [:mx]},
|
26
26
|
{:mday => 5, :type => :informal, :name => "Cinco de Mayo", :regions => [:mx]},
|
27
|
-
{:mday => 5, :name => "La Batalla de Puebla", :regions => [:mx_pue]},
|
27
|
+
{:mday => 5, :type => :informal, :name => "La Batalla de Puebla", :regions => [:mx_pue]},
|
28
28
|
{:mday => 10, :type => :informal, :name => "Día de la Madre", :regions => [:mx]},
|
29
29
|
{:mday => 15, :type => :informal, :name => "Día del Maestro", :regions => [:mx]},
|
30
30
|
{:wday => 0, :week => 2, :type => :informal, :name => "Mother's Day", :regions => [:us, :ca]},
|
@@ -41,7 +41,7 @@ module Holidays
|
|
41
41
|
12 => [{:mday => 12, :type => :informal, :name => "Día de la Virgen de Guadalupe", :regions => [:mx]},
|
42
42
|
{:mday => 24, :type => :informal, :name => "Nochebuena", :regions => [:mx]},
|
43
43
|
{:mday => 25, :name => "Navidad", :regions => [:mx]},
|
44
|
-
{:mday => 28, :name => "Los Santos Inocentes", :regions => [:mx]}]
|
44
|
+
{:mday => 28, :type => :informal, :name => "Los Santos Inocentes", :regions => [:mx]}]
|
45
45
|
}
|
46
46
|
end
|
47
47
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Holidays
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
4
|
+
#
|
5
|
+
# Definitions loaded: definitions/ng.yaml
|
6
|
+
#
|
7
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
8
|
+
module NG # :nodoc:
|
9
|
+
def self.defined_regions
|
10
|
+
[:ng]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.holidays_by_month
|
14
|
+
{
|
15
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ng]},
|
16
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:ng]}],
|
17
|
+
1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ng]}],
|
18
|
+
5 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Workers' Day", :regions => [:ng]},
|
19
|
+
{:mday => 27, :type => :informal, :name => "Children's Day", :regions => [:ng]}],
|
20
|
+
6 => [{:mday => 12, :year_ranges => { :from => 2018 },:name => "Democracy Day", :regions => [:ng]}],
|
21
|
+
10 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:ng]}],
|
22
|
+
12 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ng]},
|
23
|
+
{:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ng]}]
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.custom_methods
|
28
|
+
{
|
29
|
+
|
30
|
+
}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -7,7 +7,7 @@ module Holidays
|
|
7
7
|
# All the definitions are available at https://github.com/holidays/holidays
|
8
8
|
module NORTHAMERICA # :nodoc:
|
9
9
|
def self.defined_regions
|
10
|
-
[: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, :mx, :mx_pue, :us_fl, :us_la, :us, :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, :
|
10
|
+
[: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, :mx, :mx_pue, :us_fl, :us_la, :us, :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]
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.holidays_by_month
|
@@ -23,7 +23,7 @@ module Holidays
|
|
23
23
|
1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ca]},
|
24
24
|
{:mday => 2, :name => "New Year's", :regions => [:ca_qc]},
|
25
25
|
{:mday => 1, :name => "Año nuevo", :regions => [:mx]},
|
26
|
-
{:mday => 6, :name => "Dia de los Santos Reyes", :regions => [:mx]},
|
26
|
+
{:mday => 6, :type => :informal, :name => "Dia de los Santos Reyes", :regions => [:mx]},
|
27
27
|
{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:us]},
|
28
28
|
{:wday => 1, :week => 3, :name => "Martin Luther King's and Robert E. Lee's Birthdays", :regions => [:us_ms]},
|
29
29
|
{:wday => 1, :week => 3, :name => "Idaho Human Rights Day", :regions => [:us_id]},
|
@@ -32,22 +32,22 @@ module Holidays
|
|
32
32
|
{:function => "us_inauguration_day(year)", :function_arguments => [:year], :name => "Inauguration Day", :regions => [:us_tx, :us_dc, :us_la, :us_md, :us_va]},
|
33
33
|
{:function => "lee_jackson_day(year, month)", :function_arguments => [:year, :month], :name => "Lee-Jackson Day", :regions => [:us_va]},
|
34
34
|
{:mday => 19, :name => "Confederate Heroes Day", :regions => [:us_tx]}],
|
35
|
-
2 => [{:wday => 1, :week => 3,
|
36
|
-
{:wday => 1, :week => 3,
|
37
|
-
{:wday => 1, :week => 3,
|
38
|
-
{:wday => 1, :week => 2,
|
39
|
-
{:wday => 1, :week => 3,
|
40
|
-
{:wday => 1, :week => 3,
|
35
|
+
2 => [{:wday => 1, :week => 3, :year_ranges => { :from => 1990 },:name => "Family Day", :regions => [:ca_ab]},
|
36
|
+
{:wday => 1, :week => 3, :year_ranges => { :from => 2007 },:name => "Family Day", :regions => [:ca_sk]},
|
37
|
+
{:wday => 1, :week => 3, :year_ranges => { :from => 2008 },:name => "Family Day", :regions => [:ca_on]},
|
38
|
+
{:wday => 1, :week => 2, :year_ranges => { :between => 2013..2018 },:name => "Family Day", :regions => [:ca_bc]},
|
39
|
+
{:wday => 1, :week => 3, :year_ranges => { :from => 2019 },:name => "Family Day", :regions => [:ca_bc]},
|
40
|
+
{:wday => 1, :week => 3, :year_ranges => { :from => 2018 },:name => "Family Day", :regions => [:ca_nb]},
|
41
41
|
{:wday => 1, :week => 3, :name => "Louis Riel Day", :regions => [:ca_mb]},
|
42
|
-
{:wday => 1, :week => 3,
|
42
|
+
{:wday => 1, :week => 3, :year_ranges => { :from => 2015 },:name => "Nova Scotia Heritage Day", :regions => [:ca_ns]},
|
43
43
|
{:wday => 1, :week => 3, :name => "Islander Day", :regions => [:ca_pe]},
|
44
44
|
{:wday => 1, :week => 1, :name => "Día de la Constitución", :regions => [:mx]},
|
45
45
|
{:wday => 1, :week => 3, :name => "Presidents' Day", :regions => [:us]},
|
46
46
|
{:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]},
|
47
47
|
{:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}],
|
48
|
-
3 => [{:mday =>
|
48
|
+
3 => [{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:ca_nl]},
|
49
|
+
{:mday => 23, :type => :informal, :name => "St. George's Day", :regions => [:ca_nl]},
|
49
50
|
{:wday => 1, :week => 3, :name => "Natalicio de Benito Juárez", :regions => [:mx]},
|
50
|
-
{:wday => 1, :week => 1, :name => "Casimir Pulaski Day", :regions => [:us_il]},
|
51
51
|
{:wday => 2, :week => 1, :name => "Town Meeting Day", :regions => [:us_vt]},
|
52
52
|
{:mday => 2, :name => "Texas Independence Day", :regions => [:us_tx]},
|
53
53
|
{:mday => 26, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Prince Jonah Kuhio Kalanianaole Day", :regions => [:us_hi]},
|
@@ -58,7 +58,7 @@ module Holidays
|
|
58
58
|
{:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "National Patriotes Day", :regions => [:ca_qc]},
|
59
59
|
{:mday => 1, :name => "Día del Trabajo", :regions => [:mx]},
|
60
60
|
{:mday => 5, :type => :informal, :name => "Cinco de Mayo", :regions => [:mx]},
|
61
|
-
{:mday => 5, :name => "La Batalla de Puebla", :regions => [:mx_pue]},
|
61
|
+
{:mday => 5, :type => :informal, :name => "La Batalla de Puebla", :regions => [:mx_pue]},
|
62
62
|
{:mday => 10, :type => :informal, :name => "Día de la Madre", :regions => [:mx]},
|
63
63
|
{:mday => 15, :type => :informal, :name => "Día del Maestro", :regions => [:mx]},
|
64
64
|
{:mday => 8, :name => "Truman Day", :regions => [:us_mo]},
|
@@ -69,17 +69,18 @@ module Holidays
|
|
69
69
|
6 => [{:mday => 24, :type => :informal, :name => "Discovery Day", :regions => [:ca_nl]},
|
70
70
|
{:mday => 24, :name => "Fête Nationale", :regions => [:ca_qc]},
|
71
71
|
{:mday => 21, :name => "National Aboriginal Day", :regions => [:ca_nt]},
|
72
|
-
{:mday => 21,
|
72
|
+
{:mday => 21, :year_ranges => { :from => 2017 },:name => "National Aboriginal Day", :regions => [:ca_yt]},
|
73
73
|
{:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:mx]},
|
74
74
|
{:wday => 1, :week => 1, :name => "Jefferson Davis' Birthday", :regions => [:us_al]},
|
75
75
|
{:mday => 3, :name => "Birthday of Jefferson Davis", :regions => [:us_fl]},
|
76
76
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "King Kamehameha I Day", :regions => [:us_hi]},
|
77
|
+
{:mday => 19, :year_ranges => { :from => 2021 },:observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Juneteenth National Independence Day", :regions => [:us]},
|
77
78
|
{:mday => 19, :name => "Emancipation Day in Texas", :regions => [:us_tx]},
|
78
79
|
{:mday => 20, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "West Virginia Day", :regions => [:us_wv]},
|
79
80
|
{:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}],
|
80
81
|
7 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Canada Day", :regions => [:ca]},
|
81
82
|
{:mday => 12, :type => :informal, :name => "Orangemen's Day", :regions => [:ca_nl]},
|
82
|
-
{:mday => 9, :name => "Nunavut Day", :regions => [:ca_nu]},
|
83
|
+
{:mday => 9, :year_ranges => { :from => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Nunavut Day", :regions => [:ca_nu]},
|
83
84
|
{:mday => 3, :name => "Emancipation Day", :regions => [:us_vi]},
|
84
85
|
{:mday => 4, :name => "Independence Day", :regions => [:us]},
|
85
86
|
{:mday => 4, :function => "to_weekday_if_weekend(date)", :function_arguments => [:date], :name => "Independence Day (Holiday)", :regions => [:us_va]},
|
@@ -91,19 +92,20 @@ module Holidays
|
|
91
92
|
{:wday => 1, :week => 1, :name => "Civic Holiday", :regions => [:ca_nt, :ca_nu]},
|
92
93
|
{:wday => 1, :week => 1, :type => :informal, :name => "Civic Holiday", :regions => [:ca_on, :ca_pe]},
|
93
94
|
{:wday => 1, :week => 1, :name => "New Brunswick Day", :regions => [:ca_nb]},
|
94
|
-
{:wday => 1, :week => 1, :name => "Terry Fox Day", :regions => [:ca_mb]},
|
95
|
+
{:wday => 1, :week => 1, :type => :informal, :name => "Terry Fox Day", :regions => [:ca_mb]},
|
95
96
|
{:wday => 1, :week => 3, :name => "Discovery Day", :regions => [:ca_yt]},
|
96
97
|
{:wday => 1, :week => 2, :name => "Victory Day", :regions => [:us_ri]},
|
97
98
|
{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Bennington Battle Day", :regions => [:us_vt]},
|
98
99
|
{:wday => 5, :week => 3, :name => "Statehood Day", :regions => [:us_hi]},
|
99
100
|
{:mday => 27, :name => "Lyndon Baines Johnson Day", :regions => [:us_tx]}],
|
100
101
|
9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:ca]},
|
102
|
+
{:mday => 30, :year_ranges => { :from => 2021 },:name => "National Day for Truth and Reconciliation", :regions => [:ca]},
|
101
103
|
{:mday => 15, :name => "Grito de Dolores", :regions => [:mx]},
|
102
104
|
{:mday => 16, :name => "Día de la Independencia", :regions => [:mx]},
|
103
105
|
{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:us]},
|
104
106
|
{:function => "rosh_hashanah(year)", :function_arguments => [:year], :name => "Rosh Hashanah", :regions => [:us_tx]},
|
105
107
|
{:function => "yom_kippur(year)", :function_arguments => [:year], :name => "Yom Kippur", :regions => [:us_tx]}],
|
106
|
-
10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt]},
|
108
|
+
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]},
|
107
109
|
{:mday => 12, :type => :informal, :name => "Día de la Raza", :regions => [:mx]},
|
108
110
|
{:wday => 1, :week => 2, :name => "Columbus Day", :regions => [:us_al, :us_az, :us_co, :us_ct, :us_dc, :us_ga, :us_id, :us_il, :us_in, :us_ma, :us_md, :us_me, :us_mo, :us_mt, :us_ne, :us_nj, :us_nm, :us_ny, :us_oh, :us_pa, :us_ri, :us_ut, :us_va, :us_wv]},
|
109
111
|
{:wday => 1, :week => 2, :type => :informal, :name => "Columbus Day", :regions => [:us_ak, :us_ar, :us_ca, :us_de, :us_fl, :us_hi, :us_mi, :us_mn, :us_nd, :us_nv, :us_or, :us_sd, :us_tx, :us_vt, :us_wa, :us_wi, :us_wy]},
|
@@ -114,7 +116,7 @@ module Holidays
|
|
114
116
|
{:mday => 1, :type => :informal, :name => "Todos los Santos", :regions => [:mx]},
|
115
117
|
{:mday => 2, :type => :informal, :name => "Los Fieles Difuntos", :regions => [:mx]},
|
116
118
|
{:wday => 1, :week => 3, :name => "Día de la Revolución", :regions => [:mx]},
|
117
|
-
{:function => "election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_de, :us_hi, :
|
119
|
+
{:function => "election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri]},
|
118
120
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]},
|
119
121
|
{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]},
|
120
122
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]},
|
@@ -123,20 +125,23 @@ module Holidays
|
|
123
125
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Lincoln's Birthday", :regions => [:us_in]},
|
124
126
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "American Indian Heritage Day", :regions => [:us_md]},
|
125
127
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Day after Thanksgiving (Black Friday)", :regions => [:us_ca, :us_de, :us_fl, :us_ia, :us_il, :us_ks, :us_ky, :us_me, :us_mi, :us_mn, :us_ms, :us_ne, :us_nh, :us_nc, :us_pa, :us_sc, :us_ok, :us_tn, :us_tx, :us_va, :us_wa, :us_wv]}],
|
126
|
-
12 => [{:mday => 25, :observed => "
|
127
|
-
{:mday =>
|
128
|
-
{:mday =>
|
128
|
+
12 => [{:mday => 25, :year_ranges => { :until => 2020 },:observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca_on]},
|
129
|
+
{:mday => 25, :year_ranges => { :from => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca_on]},
|
130
|
+
{: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]},
|
131
|
+
{:mday => 26, :year_ranges => { :until => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]},
|
132
|
+
{:mday => 26, :year_ranges => { :from => 2020 },:observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]},
|
133
|
+
{: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]},
|
129
134
|
{:mday => 12, :type => :informal, :name => "Día de la Virgen de Guadalupe", :regions => [:mx]},
|
130
135
|
{:mday => 24, :type => :informal, :name => "Nochebuena", :regions => [:mx]},
|
131
136
|
{:mday => 25, :name => "Navidad", :regions => [:mx]},
|
132
|
-
{:mday => 28, :name => "Los Santos Inocentes", :regions => [:mx]},
|
137
|
+
{:mday => 28, :type => :informal, :name => "Los Santos Inocentes", :regions => [:mx]},
|
133
138
|
{:mday => 24, :name => "Christmas Eve", :regions => [:us_ar, :us_mi, :us_nc, :us_sc, :us_tx, :us_wi]},
|
134
139
|
{:mday => 24, :function => "christmas_eve_holiday(date)", :function_arguments => [:date], :name => "Christmas Eve (Holiday)", :regions => [:us_mi, :us_sc, :us_va]},
|
135
|
-
{:mday => 25, :observed => "
|
140
|
+
{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:us]},
|
136
141
|
{:mday => 26, :name => "Day after Christmas", :regions => [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx]},
|
137
142
|
{:mday => 31, :name => "New Year's Eve", :regions => [:us_mi, :us_wi]}],
|
138
143
|
4 => [{:mday => 30, :type => :informal, :name => "Día del Niño", :regions => [:mx]},
|
139
|
-
{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc
|
144
|
+
{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc]},
|
140
145
|
{:wday => 1, :week => 3, :name => "Patriots' Day", :regions => [:us_me, :us_ma]},
|
141
146
|
{:mday => 21, :name => "San Jacinto Day", :regions => [:us_tx]},
|
142
147
|
{:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:us_al, :us_ms]},
|
@@ -12,13 +12,16 @@ module Holidays
|
|
12
12
|
|
13
13
|
def self.holidays_by_month
|
14
14
|
{
|
15
|
-
0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Paștele -
|
15
|
+
0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :year_ranges => { :from => 2018 },:name => "Paștele - Vinerea Mare", :regions => [:ro]},
|
16
|
+
{:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Paștele - duminică", :regions => [:ro]},
|
16
17
|
{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Paștele - luni", :regions => [:ro]},
|
17
18
|
{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Rusaliile - 50", :regions => [:ro]},
|
18
19
|
{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Rusaliile - 51", :regions => [:ro]}],
|
19
20
|
1 => [{:mday => 1, :name => "Anul nou", :regions => [:ro]},
|
20
|
-
{:mday => 2, :name => "Anul nou", :regions => [:ro]}
|
21
|
+
{:mday => 2, :name => "Anul nou", :regions => [:ro]},
|
22
|
+
{:mday => 24, :year_ranges => { :from => 2017 },:name => "Unirea Principatelor Române", :regions => [:ro]}],
|
21
23
|
5 => [{:mday => 1, :name => "Ziua muncii", :regions => [:ro]}],
|
24
|
+
6 => [{:mday => 1, :year_ranges => { :from => 2017 },:name => "Ziua Copilului", :regions => [:ro]}],
|
22
25
|
8 => [{:mday => 15, :name => "Adormirea Maicii Domnului", :regions => [:ro]}],
|
23
26
|
11 => [{:mday => 30, :name => "Sfântul Apostol Andrei", :regions => [:ro]}],
|
24
27
|
12 => [{:mday => 1, :name => "Ziua Națională", :regions => [:ro]},
|
@@ -21,8 +21,8 @@ module Holidays
|
|
21
21
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Corpus Christi", :regions => [:br]},
|
22
22
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:cl]},
|
23
23
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Sábado Santo", :regions => [:cl]},
|
24
|
-
{:function => "st_peter_st_paul_cl(year)", :function_arguments => [:year],
|
25
|
-
{:function => "other_churches_day_cl(year)", :function_arguments => [:year],
|
24
|
+
{:function => "st_peter_st_paul_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "San Pedro y San Pablo", :regions => [:cl]},
|
25
|
+
{: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]},
|
26
26
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:co]},
|
27
27
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:co]},
|
28
28
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 43, :name => "Día de la Ascensión", :regions => [:co]},
|
@@ -50,6 +50,7 @@ module Holidays
|
|
50
50
|
{:mday => 19, :name => "Declaración Independencia", :regions => [:ve]}],
|
51
51
|
5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:ar]},
|
52
52
|
{:mday => 25, :name => "Día de la Revolución de Mayo", :regions => [:ar]},
|
53
|
+
{:mday => 24, :year_ranges => { :limited => [2021] },:name => "Feriado con fines turísticos", :regions => [:ar]},
|
53
54
|
{:mday => 1, :name => "Dia do Trabalho", :regions => [:br]},
|
54
55
|
{:mday => 1, :name => "Día del Trabajo", :regions => [:cl]},
|
55
56
|
{:mday => 21, :name => "Día de las Glorias Navales", :regions => [:cl]},
|
@@ -57,15 +58,16 @@ module Holidays
|
|
57
58
|
{:mday => 1, :name => "Día del Trabajador", :regions => [:pe]},
|
58
59
|
{:wday => 0, :week => 2, :type => :informal, :name => "Día de la Madre", :regions => [:pe]},
|
59
60
|
{:mday => 1, :name => "Día del Trabajador", :regions => [:ve]}],
|
60
|
-
6 => [{:mday =>
|
61
|
-
{:mday =>
|
61
|
+
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]},
|
62
|
+
{:mday => 20, :name => "Día de la Bandera", :regions => [:ar]},
|
63
|
+
{:mday => 29, :year_ranges => { :until => 1999 },:name => "San Pedro y San Pablo", :regions => [:cl]},
|
62
64
|
{:function => "saint_peter_and_saint_paul(year)", :function_arguments => [:year], :name => "San Pedro y San Pablo", :regions => [:co]},
|
63
65
|
{:mday => 7, :type => :informal, :name => "Día de la Bandera", :regions => [:pe]},
|
64
66
|
{:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:pe]},
|
65
67
|
{:mday => 24, :type => :informal, :name => "Inti Raymi", :regions => [:pe]},
|
66
68
|
{:mday => 29, :name => "San Pablo y San Pedro", :regions => [:pe]},
|
67
69
|
{:mday => 24, :name => "Aniversario Batalla de Carabobo", :regions => [:ve]}],
|
68
|
-
7 => [{:mday => 8, :name => "Feriado
|
70
|
+
7 => [{:mday => 8, :year_ranges => { :limited => [2016] },:name => "Feriado con fines turísticos", :regions => [:ar]},
|
69
71
|
{:mday => 9, :name => "Día de la Independencia", :regions => [:ar]},
|
70
72
|
{:mday => 16, :name => "Día de la Virgen del Carmen", :regions => [:cl]},
|
71
73
|
{:mday => 20, :name => "Día de la Independencia", :regions => [:co]},
|
@@ -73,19 +75,21 @@ module Holidays
|
|
73
75
|
{:mday => 29, :name => "Segundo Día de la Independencia", :regions => [:pe]},
|
74
76
|
{:mday => 5, :name => "Día de la Independencia", :regions => [:ve]},
|
75
77
|
{:mday => 24, :name => "Natalicio de Simón Bolívar", :regions => [:ve]}],
|
76
|
-
8 => [{:mday =>
|
78
|
+
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]},
|
77
79
|
{:mday => 15, :name => "Asunción de la Virgen", :regions => [:cl]},
|
78
80
|
{:mday => 7, :name => "Batalla de Boyacá", :regions => [:co]},
|
79
81
|
{:function => "assumption_of_mary(year)", :function_arguments => [:year], :name => "La Asunción de la Virgen", :regions => [:co]},
|
80
82
|
{:mday => 30, :name => "Santa Rosa de Lima", :regions => [:pe]}],
|
81
|
-
10 => [{:mday => 12, :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]},
|
83
|
+
10 => [{:mday => 12, :function => "to_nearest_monday(date)", :function_arguments => [:date], :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]},
|
84
|
+
{:mday => 8, :year_ranges => { :limited => [2021] },:name => "Feriado con fines turísticos", :regions => [:ar]},
|
82
85
|
{:mday => 12, :name => "Dia de Nossa Senhora Aparecida", :regions => [:br]},
|
83
|
-
{:mday => 12,
|
84
|
-
{:function => "columbus_day_cl(year)", :function_arguments => [:year],
|
86
|
+
{:mday => 12, :year_ranges => { :until => 1999 },:name => "Encuentro de Dos Mundos", :regions => [:cl]},
|
87
|
+
{:function => "columbus_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "Encuentro de Dos Mundos", :regions => [:cl]},
|
85
88
|
{:function => "columbus_day(year)", :function_arguments => [:year], :name => "Día de la Raza", :regions => [:co]},
|
86
89
|
{:mday => 8, :name => "Batalla de Angamos", :regions => [:pe]},
|
87
90
|
{:mday => 12, :name => "Día de la Resistencia Indígena", :regions => [:ve]}],
|
88
91
|
11 => [{:mday => 20, :name => "Día de la Soberanía Nacional", :regions => [:ar]},
|
92
|
+
{:mday => 22, :year_ranges => { :limited => [2021] },:name => "Feriado con fines turísticos", :regions => [:ar]},
|
89
93
|
{:mday => 2, :name => "Dia de Finados", :regions => [:br]},
|
90
94
|
{:mday => 15, :name => "Proclamação da República", :regions => [:br]},
|
91
95
|
{:mday => 1, :name => "Día de Todos los Santos", :regions => [:cl]},
|
@@ -93,7 +97,7 @@ module Holidays
|
|
93
97
|
{:function => "independence_of_cartagena(year)", :function_arguments => [:year], :name => "Independencia de Cartagena", :regions => [:co]},
|
94
98
|
{:mday => 1, :name => "Todos los Santos", :regions => [:pe]}],
|
95
99
|
12 => [{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:ar]},
|
96
|
-
{:mday => 9, :name => "Feriado
|
100
|
+
{:mday => 9, :year_ranges => { :limited => [2016] },:name => "Feriado con fines turísticos", :regions => [:ar]},
|
97
101
|
{:mday => 25, :name => "Navidad", :regions => [:ar]},
|
98
102
|
{:mday => 25, :name => "Natal", :regions => [:br]},
|
99
103
|
{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:cl]},
|
@@ -112,7 +116,22 @@ module Holidays
|
|
112
116
|
|
113
117
|
def self.custom_methods
|
114
118
|
{
|
115
|
-
"
|
119
|
+
"to_nearest_monday(date)" => Proc.new { |date|
|
120
|
+
case date.wday
|
121
|
+
when 5
|
122
|
+
date += 3
|
123
|
+
when 4
|
124
|
+
date += 4
|
125
|
+
when 3
|
126
|
+
date -= 2
|
127
|
+
when 2
|
128
|
+
date -= 1
|
129
|
+
end
|
130
|
+
|
131
|
+
date
|
132
|
+
},
|
133
|
+
|
134
|
+
"st_peter_st_paul_cl(year)" => Proc.new { |year|
|
116
135
|
date = Date.civil(year, 6, 29)
|
117
136
|
if [2,3,4].include?(date.wday)
|
118
137
|
date -= (date.wday - 1)
|
@@ -23,7 +23,7 @@ module Holidays
|
|
23
23
|
4 => [{:mday => 23, :name => "Ulusal Egemenlik ve Çocuk Bayramı", :regions => [:tr]}],
|
24
24
|
5 => [{:mday => 1, :name => "Emek ve Dayanışma Günü", :regions => [:tr]},
|
25
25
|
{:mday => 19, :name => "Atatürk'ü Anma Gençlik ve Spor Bayramı", :regions => [:tr]}],
|
26
|
-
7 => [{:mday => 15,
|
26
|
+
7 => [{:mday => 15, :year_ranges => { :from => 2016 },:name => "Demokrasi ve Milli Birlik Günü", :regions => [:tr]}],
|
27
27
|
8 => [{:mday => 30, :name => "Zafer Bayramı", :regions => [:tr]}],
|
28
28
|
10 => [{:mday => 29, :name => "Cumhuriyet Bayramı", :regions => [:tr]}]
|
29
29
|
}
|
@@ -38,7 +38,8 @@ begin_of_ramadan_feast = {
|
|
38
38
|
'2016' => Date.civil(2016, 7, 5),
|
39
39
|
'2017' => Date.civil(2017, 6, 25),
|
40
40
|
'2018' => Date.civil(2018, 6, 15),
|
41
|
-
'2019' => Date.civil(2019, 6, 4)
|
41
|
+
'2019' => Date.civil(2019, 6, 4),
|
42
|
+
'2020' => Date.civil(2020, 5, 24)
|
42
43
|
}
|
43
44
|
begin_of_ramadan_feast[year.to_s]
|
44
45
|
},
|
@@ -50,7 +51,8 @@ begin_of_sacrifice_feast = {
|
|
50
51
|
'2016' => Date.civil(2016, 9, 12),
|
51
52
|
'2017' => Date.civil(2017, 9, 1),
|
52
53
|
'2018' => Date.civil(2018, 8, 21),
|
53
|
-
'2019' => Date.civil(2019, 8, 11)
|
54
|
+
'2019' => Date.civil(2019, 8, 11),
|
55
|
+
'2020' => Date.civil(2020, 7, 31)
|
54
56
|
}
|
55
57
|
begin_of_sacrifice_feast[year.to_s]
|
56
58
|
},
|
@@ -18,13 +18,13 @@ module Holidays
|
|
18
18
|
{:mday => 7, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Різдво Христове", :regions => [:ua]}],
|
19
19
|
3 => [{:mday => 8, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Міжнародний жіночий день", :regions => [:ua]}],
|
20
20
|
5 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День праці", :regions => [:ua]},
|
21
|
-
{:mday => 2,
|
21
|
+
{:mday => 2, :year_ranges => { :until => 2017 },:name => "День міжнародної солідарності трудящих", :regions => [:ua]},
|
22
22
|
{:mday => 9, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День перемоги над нацизмом у Другій світовій війні", :regions => [:ua]}],
|
23
|
-
6 => [{:mday => 28,
|
24
|
-
7 => [{:mday => 16,
|
25
|
-
8 => [{:mday => 24,
|
26
|
-
10 => [{:mday => 14,
|
27
|
-
12 => [{:mday => 25,
|
23
|
+
6 => [{:mday => 28, :year_ranges => { :from => 1997 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День Конституції", :regions => [:ua]}],
|
24
|
+
7 => [{:mday => 16, :year_ranges => { :limited => [1991] },:name => "День Незалежності України", :regions => [:ua]}],
|
25
|
+
8 => [{:mday => 24, :year_ranges => { :from => 1992 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День Незалежності", :regions => [:ua]}],
|
26
|
+
10 => [{:mday => 14, :year_ranges => { :from => 2015 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День захисника України", :regions => [:ua]}],
|
27
|
+
12 => [{:mday => 25, :year_ranges => { :from => 2017 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Різдво Христове", :regions => [:ua]}]
|
28
28
|
}
|
29
29
|
end
|
30
30
|
|
@@ -7,7 +7,7 @@ module Holidays
|
|
7
7
|
# All the definitions are available at https://github.com/holidays/holidays
|
8
8
|
module US # :nodoc:
|
9
9
|
def self.defined_regions
|
10
|
-
[:us_fl, :us_la, :us, :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, :
|
10
|
+
[:us_fl, :us_la, :us, :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, :ca]
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.holidays_by_month
|
@@ -28,14 +28,13 @@ module Holidays
|
|
28
28
|
2 => [{:wday => 1, :week => 3, :name => "Presidents' Day", :regions => [:us]},
|
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 => [{:wday =>
|
32
|
-
{:wday => 2, :week => 1, :name => "Town Meeting Day", :regions => [:us_vt]},
|
31
|
+
3 => [{:wday => 2, :week => 1, :name => "Town Meeting Day", :regions => [:us_vt]},
|
33
32
|
{:mday => 2, :name => "Texas Independence Day", :regions => [:us_tx]},
|
34
33
|
{:mday => 26, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Prince Jonah Kuhio Kalanianaole Day", :regions => [:us_hi]},
|
35
34
|
{:wday => 1, :week => -1, :name => "Seward's Day", :regions => [:us_ak]},
|
36
35
|
{:mday => 31, :name => "César Chávez Day", :regions => [:us_ca]},
|
37
36
|
{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}],
|
38
|
-
4 => [{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc
|
37
|
+
4 => [{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc]},
|
39
38
|
{:wday => 1, :week => 3, :name => "Patriots' Day", :regions => [:us_me, :us_ma]},
|
40
39
|
{:mday => 21, :name => "San Jacinto Day", :regions => [:us_tx]},
|
41
40
|
{:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:us_al, :us_ms]},
|
@@ -52,6 +51,7 @@ module Holidays
|
|
52
51
|
6 => [{:wday => 1, :week => 1, :name => "Jefferson Davis' Birthday", :regions => [:us_al]},
|
53
52
|
{:mday => 3, :name => "Birthday of Jefferson Davis", :regions => [:us_fl]},
|
54
53
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "King Kamehameha I Day", :regions => [:us_hi]},
|
54
|
+
{:mday => 19, :year_ranges => { :from => 2021 },:observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Juneteenth National Independence Day", :regions => [:us]},
|
55
55
|
{:mday => 19, :name => "Emancipation Day in Texas", :regions => [:us_tx]},
|
56
56
|
{:mday => 20, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "West Virginia Day", :regions => [:us_wv]},
|
57
57
|
{:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}],
|
@@ -71,7 +71,7 @@ module Holidays
|
|
71
71
|
{:mday => 18, :name => "Alaska Day", :regions => [:us_ak]},
|
72
72
|
{:wday => 5, :week => -1, :name => "Nevada Day", :regions => [:us_nv]},
|
73
73
|
{:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}],
|
74
|
-
11 => [{:function => "election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_de, :us_hi, :
|
74
|
+
11 => [{:function => "election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri]},
|
75
75
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]},
|
76
76
|
{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]},
|
77
77
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]},
|
@@ -82,7 +82,7 @@ module Holidays
|
|
82
82
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Day after Thanksgiving (Black Friday)", :regions => [:us_ca, :us_de, :us_fl, :us_ia, :us_il, :us_ks, :us_ky, :us_me, :us_mi, :us_mn, :us_ms, :us_ne, :us_nh, :us_nc, :us_pa, :us_sc, :us_ok, :us_tn, :us_tx, :us_va, :us_wa, :us_wv]}],
|
83
83
|
12 => [{:mday => 24, :name => "Christmas Eve", :regions => [:us_ar, :us_mi, :us_nc, :us_sc, :us_tx, :us_wi]},
|
84
84
|
{:mday => 24, :function => "christmas_eve_holiday(date)", :function_arguments => [:date], :name => "Christmas Eve (Holiday)", :regions => [:us_mi, :us_sc, :us_va]},
|
85
|
-
{:mday => 25, :observed => "
|
85
|
+
{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:us]},
|
86
86
|
{:mday => 26, :name => "Day after Christmas", :regions => [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx]},
|
87
87
|
{:mday => 31, :name => "New Year's Eve", :regions => [:us_mi, :us_wi]}]
|
88
88
|
}
|
@@ -23,7 +23,7 @@ module Holidays
|
|
23
23
|
9 => [{:mday => 24, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Heritage Day", :regions => [:za]}],
|
24
24
|
12 => [{:mday => 16, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Day of Reconciliation", :regions => [:za]},
|
25
25
|
{:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:za]},
|
26
|
-
{:mday => 26, :observed => "
|
26
|
+
{:mday => 26, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Day of Goodwill", :regions => [:za]}]
|
27
27
|
}
|
28
28
|
end
|
29
29
|
|
@@ -87,16 +87,27 @@ module Holidays
|
|
87
87
|
rule = {}
|
88
88
|
|
89
89
|
definition.each do |key, val|
|
90
|
+
# Ruby 2.4 doesn't have the `transform_keys` method. Once we drop 2.4 support we can
|
91
|
+
# use `val.transform_keys!(&:to_sym) if val.is_a?(Hash)` instead of this `if` statement.
|
92
|
+
if val.is_a?(Hash)
|
93
|
+
val = val.keys.each_with_object({}) do |k, result|
|
94
|
+
result[k.to_sym] = val[k]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
90
98
|
rule[key.to_sym] = val
|
91
99
|
end
|
92
100
|
|
93
|
-
rule[:
|
94
|
-
|
101
|
+
if rule[:year_ranges] && rule[:year_ranges].key?(:between)
|
102
|
+
start_year = rule[:year_ranges][:between]["start"].to_i
|
103
|
+
end_year = rule[:year_ranges][:between]["end"].to_i
|
95
104
|
|
96
|
-
|
97
|
-
rule[:year_ranges] = clean_year_ranges(rule[:year_ranges])
|
105
|
+
rule[:year_ranges][:between] = Range.new(start_year, end_year)
|
98
106
|
end
|
99
107
|
|
108
|
+
rule[:regions] = rule[:regions].collect { |r| r.to_sym }
|
109
|
+
regions << rule[:regions]
|
110
|
+
|
100
111
|
exists = false
|
101
112
|
rules_by_month[month].each do |ex|
|
102
113
|
if ex[:name] == rule[:name] and ex[:wday] == rule[:wday] and ex[:mday] == rule[:mday] and ex[:week] == rule[:week] and ex[:type] == rule[:type] and ex[:function] == rule[:function] and ex[:observed] == rule[:observed] and ex[:year_ranges] == rule[:year_ranges]
|
@@ -121,23 +132,6 @@ module Holidays
|
|
121
132
|
[regions, rules_by_month]
|
122
133
|
end
|
123
134
|
|
124
|
-
# In this case we end up parsing a range as "2006..2008" a string. This is codifying
|
125
|
-
# what we already do...today we parse as a string but when writing out to our final
|
126
|
-
# generated files it comes out as a range that Ruby interprets. This just puts it in stone
|
127
|
-
# what we want to do.
|
128
|
-
def clean_year_ranges(year_ranges)
|
129
|
-
year_ranges.collect do |year_range|
|
130
|
-
if year_range["between"]
|
131
|
-
range = year_range["between"]
|
132
|
-
if range.is_a?(String)
|
133
|
-
year_range["between"] = Range.new(*range.split("..").map(&:to_i))
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
year_range
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
135
|
#FIXME This should really be split out and tested with its own unit tests.
|
142
136
|
def generate_month_definition_strings(rules_by_month, parsed_custom_methods)
|
143
137
|
month_strings = []
|
@@ -170,19 +164,11 @@ module Holidays
|
|
170
164
|
string << ":wday => #{rule[:wday]}, :week => #{rule[:week]}, "
|
171
165
|
end
|
172
166
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
year_string << "{:#{year.keys.first} => #{year.values.first}}"
|
179
|
-
if len == index + 1
|
180
|
-
year_string << "],"
|
181
|
-
else
|
182
|
-
year_string << ","
|
183
|
-
end
|
184
|
-
end
|
185
|
-
string << year_string
|
167
|
+
if rule[:year_ranges] && rule[:year_ranges].is_a?(Hash)
|
168
|
+
selector = rule[:year_ranges].keys.first
|
169
|
+
value = rule[:year_ranges][selector]
|
170
|
+
|
171
|
+
string << ":year_ranges => { :#{selector} => #{value} },"
|
186
172
|
end
|
187
173
|
|
188
174
|
if rule[:observed]
|