holidays 7.1.0 → 8.0.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 +6 -1
- data/README.md +3 -4
- data/doc/CONTRIBUTING.md +2 -1
- data/holidays.gemspec +5 -5
- data/lib/generated_definitions/MANIFEST +1 -0
- data/lib/generated_definitions/REGIONS.rb +2 -2
- data/lib/generated_definitions/au.rb +1 -1
- data/lib/generated_definitions/ca.rb +11 -10
- data/lib/generated_definitions/cl.rb +5 -5
- data/lib/generated_definitions/de.rb +3 -3
- data/lib/generated_definitions/es.rb +2 -1
- data/lib/generated_definitions/europe.rb +60 -16
- data/lib/generated_definitions/gb.rb +5 -3
- data/lib/generated_definitions/hu.rb +3 -2
- data/lib/generated_definitions/it.rb +14 -5
- data/lib/generated_definitions/jp.rb +21 -21
- data/lib/generated_definitions/lv.rb +52 -0
- data/lib/generated_definitions/northamerica.rb +15 -15
- data/lib/generated_definitions/ro.rb +5 -2
- data/lib/generated_definitions/southamerica.rb +5 -5
- data/lib/generated_definitions/tr.rb +1 -1
- data/lib/generated_definitions/ua.rb +6 -6
- data/lib/generated_definitions/us.rb +5 -6
- data/lib/holidays.rb +2 -0
- 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/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_ca.rb +13 -1
- data/test/defs/test_defs_co.rb +3 -3
- data/test/defs/test_defs_europe.rb +126 -5
- data/test/defs/test_defs_hu.rb +12 -4
- data/test/defs/test_defs_it.rb +20 -0
- data/test/defs/test_defs_lv.rb +90 -0
- data/test/defs/test_defs_northamerica.rb +19 -11
- data/test/defs/test_defs_ro.rb +14 -0
- data/test/defs/test_defs_southamerica.rb +3 -3
- data/test/defs/test_defs_us.rb +6 -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 +1 -1
- data/test/integration/test_holidays_between.rb +10 -0
- data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
- metadata +21 -13
@@ -19,7 +19,9 @@ module Holidays
|
|
19
19
|
{:mday => 2, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "2nd January", :regions => [:gb_sct]}],
|
20
20
|
3 => [{:mday => 5, :name => "St. Piran's Day", :regions => [:gb_con]},
|
21
21
|
{:mday => 17, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Patrick's Day", :regions => [:gb_nir]}],
|
22
|
-
5 => [{:wday => 1, :week => 1, :name => "May Day", :regions => [:gb]},
|
22
|
+
5 => [{:wday => 1, :week => 1, :year_ranges => { :until => 2019 },:name => "May Day", :regions => [:gb]},
|
23
|
+
{:mday => 8, :year_ranges => { :limited => [2020] },:name => "May Day", :regions => [:gb]},
|
24
|
+
{:wday => 1, :week => 1, :year_ranges => { :from => 2021 },:name => "May Day", :regions => [:gb]},
|
23
25
|
{:mday => 9, :name => "Liberation Day", :regions => [:je, :gb_jsy, :gg, :gb_gsy]},
|
24
26
|
{:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:gb]}],
|
25
27
|
7 => [{:mday => 5, :name => "Tynwald Day", :regions => [:im, :gb_iom]},
|
@@ -27,8 +29,8 @@ module Holidays
|
|
27
29
|
8 => [{:wday => 1, :week => 1, :name => "Bank Holiday", :regions => [:gb_sct]},
|
28
30
|
{:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy]}],
|
29
31
|
11 => [{:mday => 5, :type => :informal, :name => "Guy Fawkes Day", :regions => [:gb]},
|
30
|
-
{:mday => 30,
|
31
|
-
{:mday => 30,
|
32
|
+
{:mday => 30, :year_ranges => { :until => 2006 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "St. Andrew's Day", :regions => [:gb_sct]},
|
33
|
+
{:mday => 30, :year_ranges => { :from => 2007 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Andrew's Day", :regions => [:gb_sct]}],
|
32
34
|
12 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:gb]},
|
33
35
|
{:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:gb]}]
|
34
36
|
}
|
@@ -12,8 +12,9 @@ module Holidays
|
|
12
12
|
|
13
13
|
def self.holidays_by_month
|
14
14
|
{
|
15
|
-
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier =>
|
16
|
-
{:function => "easter(year)", :function_arguments => [:year], :function_modifier =>
|
15
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :year_ranges => { :from => 2017 },:name => "Nagypéntek", :regions => [:hu]},
|
16
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Húsvéthétfő", :regions => [:hu]},
|
17
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pünkösdhétfő", :regions => [:hu]}],
|
17
18
|
1 => [{:mday => 1, :name => "Újév", :regions => [:hu]}],
|
18
19
|
3 => [{:mday => 15, :name => "1848/49-es forradalom és szabadságharc ünnepe", :regions => [:hu]}],
|
19
20
|
5 => [{:mday => 1, :name => "A munka ünnepe", :regions => [:hu]}],
|
@@ -7,7 +7,7 @@ module Holidays
|
|
7
7
|
# All the definitions are available at https://github.com/holidays/holidays
|
8
8
|
module IT # :nodoc:
|
9
9
|
def self.defined_regions
|
10
|
-
[:it]
|
10
|
+
[:it, :it_ve, :it_tv, :it_vr, :it_pd, :it_fi, :it_ge, :it_to, :it_rm, :it_vi, :it_bl, :it_ro]
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.holidays_by_month
|
@@ -16,11 +16,20 @@ module Holidays
|
|
16
16
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lunedì dell'Angelo", :regions => [:it]}],
|
17
17
|
1 => [{:mday => 1, :name => "Capodanno", :regions => [:it]},
|
18
18
|
{:mday => 6, :name => "Epifania", :regions => [:it]}],
|
19
|
-
4 => [{:mday => 25, :name => "Festa della Liberazione", :regions => [:it]}
|
20
|
-
|
21
|
-
|
19
|
+
4 => [{:mday => 25, :name => "Festa della Liberazione", :regions => [:it]},
|
20
|
+
{:mday => 25, :name => "Festa di San Marco Evangelista", :regions => [:it_ve]},
|
21
|
+
{:mday => 27, :name => "Festa di San Liberale", :regions => [:it_tv]}],
|
22
|
+
5 => [{:mday => 1, :name => "Festa dei Lavoratori", :regions => [:it]},
|
23
|
+
{:mday => 21, :name => "Festa di San Zeno", :regions => [:it_vr]}],
|
24
|
+
6 => [{:mday => 2, :name => "Festa della Repubblica", :regions => [:it]},
|
25
|
+
{:mday => 13, :name => "Festa di Sant'Antonio di Padova", :regions => [:it_pd]},
|
26
|
+
{:mday => 24, :name => "Festa di San Giovanni Battista", :regions => [:it_fi, :it_ge, :it_to]},
|
27
|
+
{:mday => 29, :name => "Festa di San Pietro e Paolo", :regions => [:it_rm]}],
|
22
28
|
8 => [{:mday => 15, :name => "Assunzione", :regions => [:it]}],
|
23
|
-
|
29
|
+
9 => [{:mday => 8, :name => "Festa della Madonna di Monte Berico", :regions => [:it_vi]}],
|
30
|
+
11 => [{:mday => 1, :name => "Ognissanti", :regions => [:it]},
|
31
|
+
{:mday => 11, :name => "Festa di San Martino", :regions => [:it_bl]},
|
32
|
+
{:mday => 26, :name => "Festa di San Bellino", :regions => [:it_ro]}],
|
24
33
|
12 => [{:mday => 8, :name => "Immacolata Concezione", :regions => [:it]},
|
25
34
|
{:mday => 25, :name => "Natale", :regions => [:it]},
|
26
35
|
{:mday => 26, :name => "Santo Stefano", :regions => [:it]}]
|
@@ -17,46 +17,46 @@ module Holidays
|
|
17
17
|
{:mday => 1, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}],
|
18
18
|
2 => [{:mday => 11, :name => "建国記念の日", :regions => [:jp]},
|
19
19
|
{:mday => 11, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]},
|
20
|
-
{:mday => 23,
|
21
|
-
{:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day],
|
20
|
+
{:mday => 23, :year_ranges => { :from => 2020 },:name => "天皇誕生日", :regions => [:jp]},
|
21
|
+
{:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :year_ranges => { :from => 2020 },:name => "振替休日", :regions => [:jp]}],
|
22
22
|
3 => [{:function => "jp_vernal_equinox_day(year)", :function_arguments => [:year], :name => "春分の日", :regions => [:jp]},
|
23
23
|
{:function => "jp_vernal_equinox_day_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]}],
|
24
24
|
4 => [{:mday => 29, :name => "昭和の日", :regions => [:jp]},
|
25
25
|
{:mday => 29, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]},
|
26
|
-
{:mday => 30,
|
27
|
-
5 => [{:mday => 1,
|
28
|
-
{:mday => 2,
|
26
|
+
{:mday => 30, :year_ranges => { :limited => [2019] },:name => "休日", :regions => [:jp]}],
|
27
|
+
5 => [{:mday => 1, :year_ranges => { :limited => [2019] },:name => "天皇即位", :regions => [:jp]},
|
28
|
+
{:mday => 2, :year_ranges => { :limited => [2019] },:name => "休日", :regions => [:jp]},
|
29
29
|
{:mday => 3, :name => "憲法記念日", :regions => [:jp]},
|
30
30
|
{:mday => 4, :name => "みどりの日", :regions => [:jp]},
|
31
31
|
{:mday => 5, :name => "こどもの日", :regions => [:jp]},
|
32
32
|
{:mday => 3, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]},
|
33
33
|
{:mday => 4, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]},
|
34
34
|
{:mday => 5, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}],
|
35
|
-
7 => [{:mday => 20,
|
36
|
-
{:wday => 1, :week => 3,
|
37
|
-
{:mday => 23,
|
38
|
-
{:wday => 1, :week => 3,
|
39
|
-
{:function => "jp_marine_day_substitute(year)", :function_arguments => [:year],
|
40
|
-
{:mday => 24,
|
41
|
-
8 => [{:function => "jp_mountain_holiday(year)", :function_arguments => [:year],
|
42
|
-
{:mday => 10,
|
43
|
-
{:function => "jp_mountain_holiday(year)", :function_arguments => [:year],
|
44
|
-
{:function => "jp_mountain_holiday_substitute(year)", :function_arguments => [:year],
|
35
|
+
7 => [{:mday => 20, :year_ranges => { :between => 1996..2002 },:name => "海の日", :regions => [:jp]},
|
36
|
+
{:wday => 1, :week => 3, :year_ranges => { :between => 2003..2019 },:name => "海の日", :regions => [:jp]},
|
37
|
+
{:mday => 23, :year_ranges => { :limited => [2020] },:name => "海の日", :regions => [:jp]},
|
38
|
+
{:wday => 1, :week => 3, :year_ranges => { :from => 2021 },:name => "海の日", :regions => [:jp]},
|
39
|
+
{:function => "jp_marine_day_substitute(year)", :function_arguments => [:year], :year_ranges => { :between => 1996..2002 },:name => "振替休日", :regions => [:jp]},
|
40
|
+
{:mday => 24, :year_ranges => { :limited => [2020] },:name => "スポーツの日", :regions => [:jp]}],
|
41
|
+
8 => [{:function => "jp_mountain_holiday(year)", :function_arguments => [:year], :year_ranges => { :between => 2016..2019 },:name => "山の日", :regions => [:jp]},
|
42
|
+
{:mday => 10, :year_ranges => { :limited => [2020] },:name => "山の日", :regions => [:jp]},
|
43
|
+
{:function => "jp_mountain_holiday(year)", :function_arguments => [:year], :year_ranges => { :from => 2021 },:name => "山の日", :regions => [:jp]},
|
44
|
+
{:function => "jp_mountain_holiday_substitute(year)", :function_arguments => [:year], :year_ranges => { :from => 2016 },:name => "振替休日", :regions => [:jp]}],
|
45
45
|
9 => [{:wday => 1, :week => 3, :name => "敬老の日", :regions => [:jp]},
|
46
46
|
{:function => "jp_respect_for_aged_holiday_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]},
|
47
|
-
{:function => "jp_citizens_holiday(year)", :function_arguments => [:year],
|
47
|
+
{:function => "jp_citizens_holiday(year)", :function_arguments => [:year], :year_ranges => { :from => 2003 },:name => "国民の休日", :regions => [:jp]},
|
48
48
|
{:function => "jp_national_culture_day(year)", :function_arguments => [:year], :name => "秋分の日", :regions => [:jp]},
|
49
49
|
{:function => "jp_national_culture_day_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]}],
|
50
|
-
10 => [{:wday => 1, :week => 2,
|
51
|
-
{:wday => 1, :week => 2,
|
50
|
+
10 => [{:wday => 1, :week => 2, :year_ranges => { :until => 2019 },:name => "体育の日", :regions => [:jp]},
|
51
|
+
{:wday => 1, :week => 2, :year_ranges => { :from => 2021 },:name => "スポーツの日", :regions => [:jp]},
|
52
52
|
{:function => "jp_health_sports_day_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]},
|
53
|
-
{:mday => 22,
|
53
|
+
{:mday => 22, :year_ranges => { :limited => [2019] },:name => "即位礼正殿の儀", :regions => [:jp]}],
|
54
54
|
11 => [{:mday => 3, :name => "文化の日", :regions => [:jp]},
|
55
55
|
{:mday => 3, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]},
|
56
56
|
{:mday => 23, :name => "勤労感謝の日", :regions => [:jp]},
|
57
57
|
{:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}],
|
58
|
-
12 => [{:mday => 23,
|
59
|
-
{:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day],
|
58
|
+
12 => [{:mday => 23, :year_ranges => { :until => 2018 },:name => "天皇誕生日", :regions => [:jp]},
|
59
|
+
{:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :year_ranges => { :until => 2018 },:name => "振替休日", :regions => [:jp]}]
|
60
60
|
}
|
61
61
|
end
|
62
62
|
|
@@ -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
|
@@ -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
|
@@ -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]},
|
@@ -69,7 +69,7 @@ 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]},
|
@@ -114,7 +114,7 @@ module Holidays
|
|
114
114
|
{:mday => 1, :type => :informal, :name => "Todos los Santos", :regions => [:mx]},
|
115
115
|
{:mday => 2, :type => :informal, :name => "Los Fieles Difuntos", :regions => [:mx]},
|
116
116
|
{: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, :
|
117
|
+
{: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
118
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]},
|
119
119
|
{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]},
|
120
120
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]},
|
@@ -123,7 +123,7 @@ module Holidays
|
|
123
123
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Lincoln's Birthday", :regions => [:us_in]},
|
124
124
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "American Indian Heritage Day", :regions => [:us_md]},
|
125
125
|
{: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 => "
|
126
|
+
12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca]},
|
127
127
|
{:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]},
|
128
128
|
{: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]},
|
129
129
|
{:mday => 12, :type => :informal, :name => "Día de la Virgen de Guadalupe", :regions => [:mx]},
|
@@ -132,11 +132,11 @@ module Holidays
|
|
132
132
|
{:mday => 28, :name => "Los Santos Inocentes", :regions => [:mx]},
|
133
133
|
{:mday => 24, :name => "Christmas Eve", :regions => [:us_ar, :us_mi, :us_nc, :us_sc, :us_tx, :us_wi]},
|
134
134
|
{: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 => "
|
135
|
+
{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:us]},
|
136
136
|
{:mday => 26, :name => "Day after Christmas", :regions => [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx]},
|
137
137
|
{:mday => 31, :name => "New Year's Eve", :regions => [:us_mi, :us_wi]}],
|
138
138
|
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
|
139
|
+
{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc]},
|
140
140
|
{:wday => 1, :week => 3, :name => "Patriots' Day", :regions => [:us_me, :us_ma]},
|
141
141
|
{:mday => 21, :name => "San Jacinto Day", :regions => [:us_tx]},
|
142
142
|
{: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]},
|
@@ -58,7 +58,7 @@ module Holidays
|
|
58
58
|
{:wday => 0, :week => 2, :type => :informal, :name => "Día de la Madre", :regions => [:pe]},
|
59
59
|
{:mday => 1, :name => "Día del Trabajador", :regions => [:ve]}],
|
60
60
|
6 => [{:mday => 20, :name => "Día de la Bandera", :regions => [:ar]},
|
61
|
-
{:mday => 29,
|
61
|
+
{:mday => 29, :year_ranges => { :until => 1999 },:name => "San Pedro y San Pablo", :regions => [:cl]},
|
62
62
|
{:function => "saint_peter_and_saint_paul(year)", :function_arguments => [:year], :name => "San Pedro y San Pablo", :regions => [:co]},
|
63
63
|
{:mday => 7, :type => :informal, :name => "Día de la Bandera", :regions => [:pe]},
|
64
64
|
{:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:pe]},
|
@@ -80,8 +80,8 @@ module Holidays
|
|
80
80
|
{:mday => 30, :name => "Santa Rosa de Lima", :regions => [:pe]}],
|
81
81
|
10 => [{:mday => 12, :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]},
|
82
82
|
{:mday => 12, :name => "Dia de Nossa Senhora Aparecida", :regions => [:br]},
|
83
|
-
{:mday => 12,
|
84
|
-
{:function => "columbus_day_cl(year)", :function_arguments => [:year],
|
83
|
+
{:mday => 12, :year_ranges => { :until => 1999 },:name => "Encuentro de Dos Mundos", :regions => [:cl]},
|
84
|
+
{:function => "columbus_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "Encuentro de Dos Mundos", :regions => [:cl]},
|
85
85
|
{:function => "columbus_day(year)", :function_arguments => [:year], :name => "Día de la Raza", :regions => [:co]},
|
86
86
|
{:mday => 8, :name => "Batalla de Angamos", :regions => [:pe]},
|
87
87
|
{:mday => 12, :name => "Día de la Resistencia Indígena", :regions => [:ve]}],
|
@@ -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
|
}
|
@@ -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]},
|
@@ -71,7 +70,7 @@ module Holidays
|
|
71
70
|
{:mday => 18, :name => "Alaska Day", :regions => [:us_ak]},
|
72
71
|
{:wday => 5, :week => -1, :name => "Nevada Day", :regions => [:us_nv]},
|
73
72
|
{: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, :
|
73
|
+
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
74
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]},
|
76
75
|
{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]},
|
77
76
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]},
|
@@ -82,7 +81,7 @@ module Holidays
|
|
82
81
|
{: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
82
|
12 => [{:mday => 24, :name => "Christmas Eve", :regions => [:us_ar, :us_mi, :us_nc, :us_sc, :us_tx, :us_wi]},
|
84
83
|
{: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 => "
|
84
|
+
{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:us]},
|
86
85
|
{:mday => 26, :name => "Day after Christmas", :regions => [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx]},
|
87
86
|
{:mday => 31, :name => "New Year's Eve", :regions => [:us_mi, :us_wi]}]
|
88
87
|
}
|
data/lib/holidays.rb
CHANGED
@@ -40,6 +40,8 @@ module Holidays
|
|
40
40
|
|
41
41
|
start_date, end_date = get_date(start_date), get_date(end_date)
|
42
42
|
|
43
|
+
raise ArgumentError if end_date < start_date
|
44
|
+
|
43
45
|
if cached_holidays = Factory::Definition.cache_repository.find(start_date, end_date, options)
|
44
46
|
return cached_holidays
|
45
47
|
end
|
@@ -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]
|