holidays 3.3.0 → 4.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 +44 -0
- data/CONTRIBUTING.md +37 -0
- data/README.md +16 -25
- data/REFERENCES +4 -1
- data/Rakefile +38 -8
- data/benchmark.rb +8 -0
- data/definitions/README.md +187 -8
- data/definitions/ar.yaml +2 -1
- data/definitions/at.yaml +17 -13
- data/definitions/au.yaml +65 -60
- data/definitions/be_fr.yaml +14 -10
- data/definitions/be_nl.yaml +8 -4
- data/definitions/bg.yaml +12 -6
- data/definitions/br.yaml +6 -3
- data/definitions/ca.yaml +8 -6
- data/definitions/ch.yaml +21 -15
- data/definitions/cl.yaml +4 -2
- data/definitions/cr.yaml +5 -3
- data/definitions/cz.yaml +4 -2
- data/definitions/de.yaml +25 -14
- data/definitions/dk.yaml +26 -17
- data/definitions/ecb_target.yaml +4 -2
- data/definitions/el.yaml +23 -18
- data/definitions/es.yaml +31 -28
- data/definitions/federal_reserve.yaml +12 -12
- data/definitions/fedex.yaml +6 -6
- data/definitions/fi.yaml +26 -25
- data/definitions/fr.yaml +8 -4
- data/definitions/gb.yaml +9 -7
- data/definitions/hr.yaml +8 -6
- data/definitions/hu.yaml +8 -6
- data/definitions/ie.yaml +17 -16
- data/definitions/index.yaml +1 -1
- data/definitions/is.yaml +29 -19
- data/definitions/it.yaml +10 -9
- data/definitions/jp.yaml +92 -44
- data/definitions/li.yaml +25 -20
- data/definitions/lt.yaml +2 -1
- data/definitions/ma.yaml +7 -7
- data/definitions/mx.yaml +11 -11
- data/definitions/nerc.yaml +6 -6
- data/definitions/nl.yaml +22 -18
- data/definitions/no.yaml +19 -11
- data/definitions/north_america_informal.yaml +6 -6
- data/definitions/nyse.yaml +9 -8
- data/definitions/nz.yaml +33 -29
- data/definitions/ph.yaml +15 -8
- data/definitions/pl.yaml +27 -17
- data/definitions/pt.yaml +4 -2
- data/definitions/ro.yaml +21 -18
- data/definitions/se.yaml +24 -18
- data/definitions/sg.yaml +10 -9
- data/definitions/si.yaml +4 -2
- data/definitions/sk.yaml +4 -2
- data/definitions/united_nations.yaml +12 -12
- data/definitions/ups.yaml +6 -6
- data/definitions/us.yaml +12 -11
- data/definitions/ve.yaml +8 -4
- data/definitions/vi.yaml +6 -6
- data/definitions/za.yaml +26 -24
- data/holidays.gemspec +3 -1
- data/lib/generated_definitions/MANIFEST +1 -1
- data/lib/generated_definitions/ar.rb +8 -6
- data/lib/generated_definitions/at.rb +11 -9
- data/lib/generated_definitions/au.rb +75 -99
- data/lib/generated_definitions/be.rb +12 -10
- data/lib/generated_definitions/be_fr.rb +12 -10
- data/lib/generated_definitions/be_nl.rb +12 -10
- data/lib/generated_definitions/bg.rb +14 -13
- data/lib/generated_definitions/br.rb +11 -9
- data/lib/generated_definitions/ca.rb +20 -20
- data/lib/generated_definitions/ch.rb +41 -44
- data/lib/generated_definitions/cl.rb +9 -7
- data/lib/generated_definitions/cr.rb +9 -7
- data/lib/generated_definitions/cz.rb +9 -6
- data/lib/generated_definitions/de.rb +25 -25
- data/lib/generated_definitions/dk.rb +17 -15
- data/lib/generated_definitions/ecb_target.rb +9 -7
- data/lib/generated_definitions/el.rb +13 -11
- data/lib/generated_definitions/es.rb +35 -33
- data/lib/generated_definitions/europe.rb +234 -247
- data/lib/generated_definitions/federal_reserve.rb +11 -9
- data/lib/generated_definitions/fedex.rb +42 -0
- data/lib/generated_definitions/fi.rb +32 -36
- data/lib/generated_definitions/fr.rb +12 -10
- data/lib/generated_definitions/gb.rb +15 -13
- data/lib/generated_definitions/hr.rb +10 -8
- data/lib/generated_definitions/hu.rb +9 -7
- data/lib/generated_definitions/ie.rb +17 -17
- data/lib/generated_definitions/is.rb +26 -26
- data/lib/generated_definitions/it.rb +9 -7
- data/lib/generated_definitions/jp.rb +112 -89
- data/lib/generated_definitions/li.rb +14 -12
- data/lib/generated_definitions/lt.rb +9 -7
- data/lib/generated_definitions/ma.rb +7 -5
- data/lib/generated_definitions/mx.rb +7 -5
- data/lib/generated_definitions/nerc.rb +10 -8
- data/lib/generated_definitions/nl.rb +15 -13
- data/lib/generated_definitions/no.rb +16 -14
- data/lib/generated_definitions/north_america.rb +34 -37
- data/lib/generated_definitions/nyse.rb +10 -8
- data/lib/generated_definitions/nz.rb +40 -40
- data/lib/generated_definitions/ph.rb +17 -13
- data/lib/generated_definitions/pl.rb +25 -27
- data/lib/generated_definitions/pt.rb +10 -8
- data/lib/generated_definitions/ro.rb +11 -9
- data/lib/generated_definitions/scandinavia.rb +92 -102
- data/lib/generated_definitions/se.rb +25 -27
- data/lib/generated_definitions/sg.rb +11 -9
- data/lib/generated_definitions/si.rb +10 -8
- data/lib/generated_definitions/sk.rb +9 -7
- data/lib/generated_definitions/united_nations.rb +7 -5
- data/lib/generated_definitions/ups.rb +13 -12
- data/lib/generated_definitions/us.rb +20 -21
- data/lib/generated_definitions/ve.rb +11 -9
- data/lib/generated_definitions/vi.rb +7 -5
- data/lib/generated_definitions/za.rb +19 -17
- data/lib/holidays.rb +20 -83
- data/lib/holidays/date_calculator/weekend_modifier.rb +22 -5
- data/lib/holidays/definition/context/generator.rb +67 -29
- data/lib/holidays/definition/context/merger.rb +8 -8
- data/lib/holidays/definition/decorator/custom_method_proc.rb +28 -0
- data/lib/holidays/definition/decorator/custom_method_source.rb +30 -0
- data/lib/holidays/definition/entity/custom_method.rb +11 -0
- data/lib/holidays/definition/parser/custom_method.rb +69 -0
- data/lib/holidays/definition/repository/custom_methods.rb +27 -0
- data/lib/holidays/definition/repository/holidays_by_month.rb +1 -1
- data/lib/holidays/definition/repository/{proc_cache.rb → proc_result_cache.rb} +19 -4
- data/lib/holidays/definition/validator/custom_method.rb +31 -0
- data/lib/holidays/definition_factory.rb +42 -6
- data/lib/holidays/errors.rb +6 -0
- data/lib/holidays/load_all_definitions.rb +57 -0
- data/lib/holidays/option/context/parse_options.rb +26 -16
- data/lib/holidays/option_factory.rb +1 -0
- data/lib/holidays/use_case/context/between.rb +41 -14
- data/lib/holidays/use_case_factory.rb +2 -1
- data/lib/holidays/version.rb +1 -1
- data/test/data/test_single_custom_holiday_with_custom_procs.yaml +24 -0
- data/test/defs/test_defs_at.rb +1 -1
- data/test/defs/test_defs_au.rb +3 -2
- data/test/defs/test_defs_cr.rb +1 -0
- data/test/defs/test_defs_cz.rb +1 -0
- data/test/defs/test_defs_dk.rb +2 -2
- data/test/defs/test_defs_el.rb +7 -6
- data/test/defs/test_defs_europe.rb +40 -33
- data/test/defs/test_defs_fedex.rb +24 -0
- data/test/defs/test_defs_fi.rb +4 -3
- data/test/defs/test_defs_hr.rb +2 -2
- data/test/defs/test_defs_hu.rb +2 -2
- data/test/defs/test_defs_is.rb +2 -1
- data/test/defs/test_defs_it.rb +2 -1
- data/test/defs/test_defs_jp.rb +1 -1
- data/test/defs/test_defs_li.rb +1 -1
- data/test/defs/test_defs_ma.rb +2 -1
- data/test/defs/test_defs_mx.rb +4 -3
- data/test/defs/test_defs_nl.rb +7 -6
- data/test/defs/test_defs_no.rb +1 -0
- data/test/defs/test_defs_north_america.rb +4 -3
- data/test/defs/test_defs_nyse.rb +2 -1
- data/test/defs/test_defs_pl.rb +1 -0
- data/test/defs/test_defs_ro.rb +11 -11
- data/test/defs/test_defs_scandinavia.rb +12 -8
- data/test/defs/test_defs_se.rb +3 -2
- data/test/defs/test_defs_sg.rb +2 -1
- data/test/defs/test_defs_vi.rb +1 -1
- data/test/defs/test_defs_za.rb +3 -2
- data/test/holidays/date_calculator/test_weekend_modifier.rb +11 -0
- data/test/holidays/definition/context/test_generator.rb +64 -5
- data/test/holidays/definition/context/test_merger.rb +5 -2
- data/test/holidays/definition/decorator/test_custom_method_proc.rb +113 -0
- data/test/holidays/definition/decorator/test_custom_method_source.rb +96 -0
- data/test/holidays/definition/parser/test_custom_method.rb +79 -0
- data/test/holidays/definition/repository/test_custom_methods.rb +43 -0
- data/test/holidays/definition/repository/test_holidays_by_month.rb +0 -32
- data/test/holidays/definition/repository/test_proc_result_cache.rb +84 -0
- data/test/holidays/definition/validator/test_custom_method.rb +89 -0
- data/test/holidays/option/context/test_parse_options.rb +5 -0
- data/test/holidays/test_definition_factory.rb +17 -2
- data/test/holidays/use_case/context/test_between.rb +2 -0
- data/test/test_all_regions.rb +7 -49
- data/test/test_custom_holidays.rb +8 -2
- data/test/test_helper.rb +9 -2
- data/test/test_holidays.rb +9 -29
- metadata +46 -11
- data/lib/generated_definitions/fed_ex.rb +0 -41
- data/test/holidays/definition/repository/test_proc_cache.rb +0 -29
- data/test/test_parse_definitions.rb +0 -30
|
@@ -10,7 +10,7 @@ module Holidays
|
|
|
10
10
|
# require 'holidays'
|
|
11
11
|
# require 'generated_definitions/no'
|
|
12
12
|
#
|
|
13
|
-
# All the definitions are available at https://github.com/
|
|
13
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
14
14
|
module NO # :nodoc:
|
|
15
15
|
def self.defined_regions
|
|
16
16
|
[:no]
|
|
@@ -18,15 +18,15 @@ module Holidays
|
|
|
18
18
|
|
|
19
19
|
def self.holidays_by_month
|
|
20
20
|
{
|
|
21
|
-
0 => [{:function =>
|
|
22
|
-
{:function =>
|
|
23
|
-
{:function =>
|
|
24
|
-
{:function =>
|
|
25
|
-
{:function =>
|
|
26
|
-
{:function =>
|
|
27
|
-
{:function =>
|
|
28
|
-
{:function =>
|
|
29
|
-
{:function =>
|
|
21
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -49, :type => :informal, :name => "Fastelavn", :regions => [:no]},
|
|
22
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :name => "Palmesøndag", :regions => [:no]},
|
|
23
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skjærtorsdag", :regions => [:no]},
|
|
24
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:no]},
|
|
25
|
+
{:function => "easter(year)", :function_arguments => [:year], :name => "1. påskedag", :regions => [:no]},
|
|
26
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:no]},
|
|
27
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:no]},
|
|
28
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "1. pinsedag", :regions => [:no]},
|
|
29
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. pinsedag", :regions => [:no]}],
|
|
30
30
|
1 => [{:mday => 1, :name => "Nyttårsdag", :regions => [:no]}],
|
|
31
31
|
5 => [{:mday => 1, :name => "1. mai", :regions => [:no]},
|
|
32
32
|
{:mday => 17, :name => "17. mai", :regions => [:no]}],
|
|
@@ -36,9 +36,11 @@ module Holidays
|
|
|
36
36
|
{:mday => 31, :type => :informal, :name => "Nyttårsaften", :regions => [:no]}]
|
|
37
37
|
}
|
|
38
38
|
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
39
|
|
|
40
|
+
def self.custom_methods
|
|
41
|
+
{
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
end
|
|
42
46
|
end
|
|
43
|
-
|
|
44
|
-
Holidays.merge_defs(Holidays::NO.defined_regions, Holidays::NO.holidays_by_month)
|
|
@@ -10,7 +10,7 @@ module Holidays
|
|
|
10
10
|
# require 'holidays'
|
|
11
11
|
# require 'generated_definitions/north_america'
|
|
12
12
|
#
|
|
13
|
-
# All the definitions are available at https://github.com/
|
|
13
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
14
14
|
module NORTH_AMERICA # :nodoc:
|
|
15
15
|
def self.defined_regions
|
|
16
16
|
[:ca, :ca_qc, :ca_ab, :ca_on, :ca_sk, :ca_mb, :ca_ns, :ca_pe, :ca_bc, :ca_nf, :ca_nt, :ca_nu, :ca_nb, :ca_yk, :mx, :mx_pue, :us, :us_dc, :us_ca]
|
|
@@ -18,18 +18,18 @@ module Holidays
|
|
|
18
18
|
|
|
19
19
|
def self.holidays_by_month
|
|
20
20
|
{
|
|
21
|
-
0 => [{:function =>
|
|
22
|
-
{:function =>
|
|
23
|
-
{:function =>
|
|
24
|
-
{:function =>
|
|
25
|
-
{:function =>
|
|
21
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ca]},
|
|
22
|
+
{:function => "easter(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:ca]},
|
|
23
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :type => :informal, :name => "Easter Monday", :regions => [:ca]},
|
|
24
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Good Friday", :regions => [:us]},
|
|
25
|
+
{:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:us]}],
|
|
26
26
|
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:ca]},
|
|
27
27
|
{:mday => 2, :name => "New Year's", :regions => [:ca_qc]},
|
|
28
28
|
{:mday => 1, :name => "Año nuevo", :regions => [:mx]},
|
|
29
29
|
{:mday => 6, :name => "Dia de los Santos Reyes", :regions => [:mx]},
|
|
30
|
-
{:mday => 1, :observed =>
|
|
30
|
+
{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:us]},
|
|
31
31
|
{:wday => 1, :week => 3, :name => "Martin Luther King, Jr. Day", :regions => [:us]},
|
|
32
|
-
{:function =>
|
|
32
|
+
{:function => "us_inauguration_day(year)", :function_arguments => [:year], :name => "Inauguration Day", :regions => [:us_dc]}],
|
|
33
33
|
2 => [{:wday => 1, :week => 3, :name => "Family Day", :regions => [:ca_ab, :ca_on, :ca_sk]},
|
|
34
34
|
{:wday => 1, :week => 3, :name => "Louis Riel Day", :regions => [:ca_mb]},
|
|
35
35
|
{:wday => 1, :week => 3, :name => "Nova Scotia Heritage Day", :regions => [:ca_ns]},
|
|
@@ -43,8 +43,8 @@ module Holidays
|
|
|
43
43
|
{:wday => 1, :week => 3, :name => "Natalicio de Benito Juárez", :regions => [:mx]},
|
|
44
44
|
{:mday => 31, :name => "Cesar Chavez Day", :regions => [:us_ca]},
|
|
45
45
|
{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}],
|
|
46
|
-
5 => [{:function =>
|
|
47
|
-
{:function =>
|
|
46
|
+
5 => [{:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "Victoria Day", :regions => [:ca]},
|
|
47
|
+
{:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "National Patriotes Day", :regions => [:ca_qc]},
|
|
48
48
|
{:mday => 1, :name => "Día del Trabajo", :regions => [:mx]},
|
|
49
49
|
{:mday => 5, :type => :informal, :name => "Cinco de Mayo", :regions => [:mx]},
|
|
50
50
|
{:mday => 5, :name => "La Batalla de Puebla", :regions => [:mx_pue]},
|
|
@@ -58,10 +58,10 @@ module Holidays
|
|
|
58
58
|
{:mday => 21, :name => "National Aboriginal Day", :regions => [:ca_nt]},
|
|
59
59
|
{:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:mx]},
|
|
60
60
|
{:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}],
|
|
61
|
-
7 => [{:mday => 1, :observed =>
|
|
61
|
+
7 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Canada Day", :regions => [:ca]},
|
|
62
62
|
{:mday => 12, :name => "Orangemen's Day", :regions => [:ca_nf]},
|
|
63
63
|
{:mday => 9, :name => "Nunavut Day", :regions => [:ca_nu]},
|
|
64
|
-
{:mday => 4, :observed =>
|
|
64
|
+
{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:us]}],
|
|
65
65
|
8 => [{:wday => 1, :week => 1, :name => "BC Day", :regions => [:ca_bc]},
|
|
66
66
|
{:wday => 1, :week => 1, :name => "Saskatchewan Day", :regions => [:ca_sk]},
|
|
67
67
|
{:wday => 1, :week => 1, :name => "Heritage Day", :regions => [:ca_ab]},
|
|
@@ -81,47 +81,44 @@ module Holidays
|
|
|
81
81
|
{:mday => 1, :type => :informal, :name => "Todos los Santos", :regions => [:mx]},
|
|
82
82
|
{:mday => 2, :type => :informal, :name => "Los Fieles Difuntos", :regions => [:mx]},
|
|
83
83
|
{:wday => 1, :week => 3, :name => "Día de la Revolución", :regions => [:mx]},
|
|
84
|
-
{:mday => 11, :observed =>
|
|
84
|
+
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]},
|
|
85
85
|
{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]},
|
|
86
|
-
{:function =>
|
|
86
|
+
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Day after Thanksgiving", :regions => [:us_ca]}],
|
|
87
87
|
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:ca]},
|
|
88
88
|
{:mday => 26, :name => "Boxing Day", :regions => [:ca]},
|
|
89
89
|
{:mday => 12, :type => :informal, :name => "Día de la Virgen de Guadalupe", :regions => [:mx]},
|
|
90
90
|
{:mday => 24, :type => :informal, :name => "Nochebuena", :regions => [:mx]},
|
|
91
91
|
{:mday => 25, :name => "Navidad", :regions => [:mx]},
|
|
92
92
|
{:mday => 28, :name => "Los Santos Inocentes", :regions => [:mx]},
|
|
93
|
-
{:mday => 25, :observed =>
|
|
93
|
+
{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:us]}],
|
|
94
94
|
4 => [{:mday => 30, :type => :informal, :name => "Día del Niño", :regions => [:mx]},
|
|
95
95
|
{:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]},
|
|
96
96
|
{:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}]
|
|
97
97
|
}
|
|
98
98
|
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# Monday on or before May 24
|
|
102
|
-
def self.ca_victoria_day(year)
|
|
103
|
-
date = Date.civil(year,5,24)
|
|
104
|
-
if date.wday > 1
|
|
105
|
-
date -= (date.wday - 1)
|
|
106
|
-
elsif date.wday == 0
|
|
107
|
-
date -= 6
|
|
108
|
-
end
|
|
109
|
-
date
|
|
110
|
-
end
|
|
111
|
-
|
|
112
99
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
100
|
+
def self.custom_methods
|
|
101
|
+
{
|
|
102
|
+
"ca_victoria_day(year)" => Proc.new { |year|
|
|
103
|
+
date = Date.civil(year,5,24)
|
|
104
|
+
if date.wday > 1
|
|
105
|
+
date -= (date.wday - 1)
|
|
106
|
+
elsif date.wday == 0
|
|
107
|
+
date -= 6
|
|
116
108
|
end
|
|
109
|
+
date
|
|
110
|
+
},
|
|
117
111
|
|
|
112
|
+
"us_inauguration_day(year)" => Proc.new { |year|
|
|
113
|
+
year % 4 == 1 ? 20 : nil
|
|
114
|
+
},
|
|
118
115
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
116
|
+
"day_after_thanksgiving(year)" => Proc.new { |year|
|
|
117
|
+
Holidays::DateCalculatorFactory.day_of_month_calculator.call(year, 11, 4, 4) + 1
|
|
118
|
+
},
|
|
123
119
|
|
|
124
120
|
|
|
121
|
+
}
|
|
122
|
+
end
|
|
123
|
+
end
|
|
125
124
|
end
|
|
126
|
-
|
|
127
|
-
Holidays.merge_defs(Holidays::NORTH_AMERICA.defined_regions, Holidays::NORTH_AMERICA.holidays_by_month)
|
|
@@ -10,7 +10,7 @@ module Holidays
|
|
|
10
10
|
# require 'holidays'
|
|
11
11
|
# require 'generated_definitions/nyse'
|
|
12
12
|
#
|
|
13
|
-
# All the definitions are available at https://github.com/
|
|
13
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
14
14
|
module NYSE # :nodoc:
|
|
15
15
|
def self.defined_regions
|
|
16
16
|
[:nyse]
|
|
@@ -18,20 +18,22 @@ module Holidays
|
|
|
18
18
|
|
|
19
19
|
def self.holidays_by_month
|
|
20
20
|
{
|
|
21
|
-
0 => [{:function =>
|
|
21
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:nyse]}],
|
|
22
22
|
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:nyse]},
|
|
23
23
|
{:wday => 1, :week => 3, :name => "Martin Luther King, Jr. Day", :regions => [:nyse]}],
|
|
24
24
|
2 => [{:wday => 1, :week => 3, :name => "Presidents' Day", :regions => [:nyse]}],
|
|
25
25
|
5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:nyse]}],
|
|
26
|
-
7 => [{:mday => 4, :observed =>
|
|
26
|
+
7 => [{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:nyse]}],
|
|
27
27
|
9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:nyse]}],
|
|
28
28
|
11 => [{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:nyse]}],
|
|
29
|
-
12 => [{:mday => 25, :observed =>
|
|
29
|
+
12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:nyse]}]
|
|
30
30
|
}
|
|
31
31
|
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
32
|
|
|
33
|
+
def self.custom_methods
|
|
34
|
+
{
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
end
|
|
38
|
+
end
|
|
35
39
|
end
|
|
36
|
-
|
|
37
|
-
Holidays.merge_defs(Holidays::NYSE.defined_regions, Holidays::NYSE.holidays_by_month)
|
|
@@ -10,7 +10,7 @@ module Holidays
|
|
|
10
10
|
# require 'holidays'
|
|
11
11
|
# require 'generated_definitions/nz'
|
|
12
12
|
#
|
|
13
|
-
# All the definitions are available at https://github.com/
|
|
13
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
14
14
|
module NZ # :nodoc:
|
|
15
15
|
def self.defined_regions
|
|
16
16
|
[:nz, :nz_sl, :nz_we, :nz_ak, :nz_nl, :nz_ne, :nz_ot, :nz_ta, :nz_sc, :nz_hb, :nz_mb, :nz_ca, :nz_ch, :nz_wl]
|
|
@@ -18,56 +18,56 @@ module Holidays
|
|
|
18
18
|
|
|
19
19
|
def self.holidays_by_month
|
|
20
20
|
{
|
|
21
|
-
0 => [{:function =>
|
|
22
|
-
{:function =>
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:nz]},
|
|
22
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Easter Saturday", :regions => [:nz]},
|
|
23
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:nz]}],
|
|
24
|
+
1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:nz]},
|
|
25
|
+
{:mday => 2, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Day after New Year's Day", :regions => [:nz]},
|
|
25
26
|
{:mday => 17, :name => "Southland Anniversary Day", :regions => [:nz_sl]},
|
|
26
|
-
{:mday => 22, :observed =>
|
|
27
|
-
{:mday => 29, :observed =>
|
|
28
|
-
{:mday => 29, :observed =>
|
|
29
|
-
2 => [{:mday => 1, :observed =>
|
|
30
|
-
{:mday => 6, :observed =>
|
|
31
|
-
3 => [{:mday => 23, :observed =>
|
|
32
|
-
{:wday => 1, :week => 2, :observed =>
|
|
33
|
-
4 => [{:mday => 25, :observed =>
|
|
27
|
+
{:mday => 22, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Wellington Anniversary Day", :regions => [:nz_we]},
|
|
28
|
+
{:mday => 29, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Auckland Anniversary Day", :regions => [:nz_ak]},
|
|
29
|
+
{:mday => 29, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Northland Anniversary Day", :regions => [:nz_nl]}],
|
|
30
|
+
2 => [{:mday => 1, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Nelson Anniversary Day", :regions => [:nz_ne]},
|
|
31
|
+
{:mday => 6, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Waitangi Day", :regions => [:nz]}],
|
|
32
|
+
3 => [{:mday => 23, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Otago Anniversary Day", :regions => [:nz_ot]},
|
|
33
|
+
{:wday => 1, :week => 2, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Taranaki Anniversary Day", :regions => [:nz_ta]}],
|
|
34
|
+
4 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:nz]}],
|
|
34
35
|
6 => [{:wday => 1, :week => 1, :name => "Queen's Birthday", :regions => [:nz]}],
|
|
35
36
|
9 => [{:wday => 1, :week => 4, :name => "Dominion Day", :regions => [:nz_sc]}],
|
|
36
|
-
10 => [{:wday => 1, :week => 1, :observed =>
|
|
37
|
+
10 => [{:wday => 1, :week => 1, :observed => "previous_friday(date)", :observed_arguments => [:date], :name => "Hawke's bay Anniversary Day", :regions => [:nz_hb]},
|
|
37
38
|
{:wday => 1, :week => 4, :name => "Labour Day", :regions => [:nz]},
|
|
38
|
-
{:wday => 1, :week => 4, :observed =>
|
|
39
|
+
{:wday => 1, :week => 4, :observed => "next_week(date)", :observed_arguments => [:date], :name => "Marlborough Anniversary Day", :regions => [:nz_mb]}],
|
|
39
40
|
11 => [{:wday => 5, :week => 2, :name => "Canterbury Anniversary Day", :regions => [:nz_ca]},
|
|
40
|
-
{:mday => 30, :observed =>
|
|
41
|
-
12 => [{:mday => 1, :observed =>
|
|
42
|
-
{:mday => 25, :observed =>
|
|
43
|
-
{:mday => 26, :observed =>
|
|
41
|
+
{:mday => 30, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Chatham Island Anniversary Day", :regions => [:nz_ch]}],
|
|
42
|
+
12 => [{:mday => 1, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Westland Anniversary Day", :regions => [:nz_wl]},
|
|
43
|
+
{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:nz]},
|
|
44
|
+
{:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:nz]}]
|
|
44
45
|
}
|
|
45
46
|
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def self.closest_monday(date)
|
|
49
|
-
if [1, 2, 3, 4].include?(date.wday)
|
|
50
|
-
date -= (date.wday - 1)
|
|
51
|
-
elsif 0 == date.wday
|
|
52
|
-
date += 1
|
|
53
|
-
else
|
|
54
|
-
date += 8 - date.wday
|
|
55
|
-
end
|
|
56
|
-
date
|
|
57
|
-
end
|
|
58
|
-
|
|
59
47
|
|
|
60
|
-
def self.
|
|
61
|
-
|
|
48
|
+
def self.custom_methods
|
|
49
|
+
{
|
|
50
|
+
"closest_monday(date)" => Proc.new { |date|
|
|
51
|
+
if [1, 2, 3, 4].include?(date.wday)
|
|
52
|
+
date -= (date.wday - 1)
|
|
53
|
+
elsif 0 == date.wday
|
|
54
|
+
date += 1
|
|
55
|
+
else
|
|
56
|
+
date += 8 - date.wday
|
|
62
57
|
end
|
|
58
|
+
date
|
|
59
|
+
},
|
|
63
60
|
|
|
61
|
+
"previous_friday(date)" => Proc.new { |date|
|
|
62
|
+
date - 3
|
|
63
|
+
},
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
"next_week(date)" => Proc.new { |date|
|
|
66
|
+
date + 7
|
|
67
|
+
},
|
|
69
68
|
|
|
70
69
|
|
|
70
|
+
}
|
|
71
|
+
end
|
|
72
|
+
end
|
|
71
73
|
end
|
|
72
|
-
|
|
73
|
-
Holidays.merge_defs(Holidays::NZ.defined_regions, Holidays::NZ.holidays_by_month)
|
|
@@ -10,7 +10,7 @@ module Holidays
|
|
|
10
10
|
# require 'holidays'
|
|
11
11
|
# require 'generated_definitions/ph'
|
|
12
12
|
#
|
|
13
|
-
# All the definitions are available at https://github.com/
|
|
13
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
14
14
|
module PH # :nodoc:
|
|
15
15
|
def self.defined_regions
|
|
16
16
|
[:ph]
|
|
@@ -18,17 +18,17 @@ module Holidays
|
|
|
18
18
|
|
|
19
19
|
def self.holidays_by_month
|
|
20
20
|
{
|
|
21
|
-
0 => [{:function =>
|
|
22
|
-
{:function =>
|
|
23
|
-
{:function =>
|
|
24
|
-
{:function =>
|
|
21
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Maundy Thursday", :regions => [:ph]},
|
|
22
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ph]},
|
|
23
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Holy Saturday", :regions => [:ph]},
|
|
24
|
+
{:function => "easter(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:ph]}],
|
|
25
25
|
1 => [{:mday => 1, :name => "New Year’s Day", :regions => [:ph]}],
|
|
26
26
|
2 => [{:mday => 25, :name => "People Power Anniversary", :regions => [:ph]}],
|
|
27
27
|
4 => [{:mday => 9, :name => "The Day of Valor", :regions => [:ph]}],
|
|
28
28
|
5 => [{:mday => 1, :name => "Labor Day", :regions => [:ph]}],
|
|
29
29
|
6 => [{:mday => 12, :name => "Independence Day", :regions => [:ph]}],
|
|
30
30
|
8 => [{:mday => 21, :name => "Ninoy Aquino Day", :regions => [:ph]},
|
|
31
|
-
{:function =>
|
|
31
|
+
{:function => "ph_heroes_day(year)", :function_arguments => [:year], :name => "National Heroes Day", :regions => [:ph]}],
|
|
32
32
|
11 => [{:mday => 1, :name => "All Saints Day", :regions => [:ph]},
|
|
33
33
|
{:mday => 30, :name => "Bonifacio Day", :regions => [:ph]}],
|
|
34
34
|
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:ph]},
|
|
@@ -36,17 +36,21 @@ module Holidays
|
|
|
36
36
|
{:mday => 31, :name => "New Year's Eve", :regions => [:ph]}]
|
|
37
37
|
}
|
|
38
38
|
end
|
|
39
|
-
end
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
def self.custom_methods
|
|
41
|
+
{
|
|
42
|
+
"ph_heroes_day(year)" => Proc.new { |year|
|
|
43
|
+
date = Date.new(year, 8, -1)
|
|
44
|
+
|
|
45
|
+
if date.wday != 1
|
|
45
46
|
date -= date.wday - 1
|
|
46
47
|
end
|
|
47
48
|
|
|
49
|
+
date
|
|
50
|
+
},
|
|
48
51
|
|
|
49
52
|
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
end
|
|
50
56
|
end
|
|
51
|
-
|
|
52
|
-
Holidays.merge_defs(Holidays::PH.defined_regions, Holidays::PH.holidays_by_month)
|
|
@@ -10,7 +10,7 @@ module Holidays
|
|
|
10
10
|
# require 'holidays'
|
|
11
11
|
# require 'generated_definitions/pl'
|
|
12
12
|
#
|
|
13
|
-
# All the definitions are available at https://github.com/
|
|
13
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
14
14
|
module PL # :nodoc:
|
|
15
15
|
def self.defined_regions
|
|
16
16
|
[:pl]
|
|
@@ -18,20 +18,20 @@ module Holidays
|
|
|
18
18
|
|
|
19
19
|
def self.holidays_by_month
|
|
20
20
|
{
|
|
21
|
-
0 => [{:function =>
|
|
22
|
-
{:function =>
|
|
23
|
-
{:function =>
|
|
24
|
-
{:function =>
|
|
25
|
-
{:function =>
|
|
26
|
-
{:function =>
|
|
27
|
-
{:function =>
|
|
28
|
-
{:function =>
|
|
29
|
-
{:function =>
|
|
30
|
-
{:function =>
|
|
31
|
-
{:function =>
|
|
21
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -52, :type => :informal, :name => "Tłusty Czwartek", :regions => [:pl]},
|
|
22
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :type => :informal, :name => "Ostatki", :regions => [:pl]},
|
|
23
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :type => :informal, :name => "Środa Popielcowa", :regions => [:pl]},
|
|
24
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :type => :informal, :name => "Niedziela Palmowa", :regions => [:pl]},
|
|
25
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :type => :informal, :name => "Wielki Czwartek", :regions => [:pl]},
|
|
26
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Wielki Piątek", :regions => [:pl]},
|
|
27
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :type => :informal, :name => "Wielka Sobota", :regions => [:pl]},
|
|
28
|
+
{:function => "easter(year)", :function_arguments => [:year], :name => "Niedziela Wielkanocna", :regions => [:pl]},
|
|
29
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Poniedziałek Wielkanocny (Lany Poniedziałek)", :regions => [:pl]},
|
|
30
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Zesłanie Ducha Świętego (Zielone Świątki)", :regions => [:pl]},
|
|
31
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", :regions => [:pl]}],
|
|
32
32
|
1 => [{:mday => 1, :name => "Nowy Rok", :regions => [:pl]},
|
|
33
|
-
{:function =>
|
|
34
|
-
{:function =>
|
|
33
|
+
{:function => "pl_trzech_kroli(year)", :function_arguments => [:year], :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]},
|
|
34
|
+
{:function => "pl_trzech_kroli_informal(year)", :function_arguments => [:year], :type => :informal, :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]},
|
|
35
35
|
{:mday => 21, :type => :informal, :name => "Dzień Babci", :regions => [:pl]},
|
|
36
36
|
{:mday => 22, :type => :informal, :name => "Dzień Dziadka", :regions => [:pl]}],
|
|
37
37
|
2 => [{:mday => 2, :type => :informal, :name => "Ofiarowanie Pańskie (Matki Boskiej Gromnicznej)", :regions => [:pl]},
|
|
@@ -60,21 +60,19 @@ module Holidays
|
|
|
60
60
|
{:mday => 31, :type => :informal, :name => "Sylwester", :regions => [:pl]}]
|
|
61
61
|
}
|
|
62
62
|
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Poland: January 6 is holiday since 2011
|
|
66
|
-
def self.pl_trzech_kroli(year)
|
|
67
|
-
year >= 2011 ? 6 : nil
|
|
68
|
-
end
|
|
69
63
|
|
|
64
|
+
def self.custom_methods
|
|
65
|
+
{
|
|
66
|
+
"pl_trzech_kroli(year)" => Proc.new { |year|
|
|
67
|
+
year >= 2011 ? 6 : nil
|
|
68
|
+
},
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
end
|
|
75
|
-
|
|
70
|
+
"pl_trzech_kroli_informal(year)" => Proc.new { |year|
|
|
71
|
+
year < 2011 ? 6 : nil
|
|
72
|
+
},
|
|
76
73
|
|
|
77
74
|
|
|
75
|
+
}
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
78
|
end
|
|
79
|
-
|
|
80
|
-
Holidays.merge_defs(Holidays::PL.defined_regions, Holidays::PL.holidays_by_month)
|