holidays 7.1.0 → 8.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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]
|