holidays 3.2.0 → 3.3.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 +19 -0
- data/README.md +18 -9
- data/definitions/README.md +174 -0
- data/definitions/ar.yaml +37 -27
- data/definitions/au.yaml +73 -13
- data/definitions/{be.yaml → be_fr.yaml} +15 -15
- data/definitions/be_nl.yaml +65 -0
- data/definitions/cz.yaml +7 -4
- data/definitions/de.yaml +80 -10
- data/definitions/index.yaml +3 -2
- data/definitions/jp.yaml +20 -3
- data/definitions/nl.yaml +2 -1
- data/definitions/nz.yaml +0 -3
- data/lib/generated_definitions/MANIFEST +2 -0
- data/lib/generated_definitions/REGIONS.rb +1 -1
- data/lib/generated_definitions/ar.rb +9 -6
- data/lib/generated_definitions/au.rb +33 -9
- data/lib/generated_definitions/be_fr.rb +40 -0
- data/lib/generated_definitions/be_nl.rb +40 -0
- data/lib/generated_definitions/de.rb +14 -5
- data/lib/generated_definitions/europe.rb +37 -16
- data/lib/generated_definitions/jp.rb +3 -2
- data/lib/generated_definitions/nl.rb +1 -1
- data/lib/generated_definitions/nz.rb +0 -1
- data/lib/holidays.rb +12 -0
- data/lib/holidays/date_calculator/easter.rb +9 -9
- data/lib/holidays/date_calculator/weekend_modifier.rb +25 -4
- data/lib/holidays/definition/context/generator.rb +1 -1
- data/lib/holidays/definition/repository/holidays_by_month.rb +1 -1
- data/lib/holidays/option/context/parse_options.rb +1 -1
- data/lib/holidays/version.rb +1 -1
- data/test/defs/test_defs_ar.rb +18 -14
- data/test/defs/test_defs_au.rb +29 -2
- data/test/defs/{test_defs_be.rb → test_defs_be_fr.rb} +5 -4
- data/test/defs/test_defs_be_nl.rb +26 -0
- data/test/defs/test_defs_de.rb +25 -4
- data/test/defs/test_defs_europe.rb +44 -6
- data/test/defs/test_defs_jp.rb +8 -0
- data/test/holidays/date_calculator/test_weekend_modifier.rb +10 -0
- data/test/test_all_regions.rb +1 -1
- metadata +11 -6
- data/definitions/SYNTAX.rdoc +0 -111
@@ -36,7 +36,8 @@ module Holidays
|
|
36
36
|
{:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]},
|
37
37
|
{:function => lambda { |year| Holidays.may_pub_hol_sa(year) }, :function_id => "may_pub_hol_sa(year)", :name => "May Public Holiday", :regions => [:au_sa]}],
|
38
38
|
6 => [{:wday => 1, :week => 1, :name => "Foundation Day", :regions => [:au_wa]},
|
39
|
-
{:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :
|
39
|
+
{:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]},
|
40
|
+
{:function => lambda { |year| Holidays.qld_queens_birthday_june(year) }, :function_id => "qld_queens_birthday_june(year)", :name => "Queen's Birthday", :regions => [:au_qld]},
|
40
41
|
{:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}],
|
41
42
|
7 => [{:wday => 5, :week => 3, :name => "Cairns Show", :regions => [:au_qld_cairns]}],
|
42
43
|
8 => [{:wday => 3, :week => -3, :name => "Ekka", :regions => [:au_qld_brisbane]}],
|
@@ -50,9 +51,12 @@ module Holidays
|
|
50
51
|
11 => [{:function => lambda { |year| Holidays.g20_day_2014_only(year) }, :function_id => "g20_day_2014_only(year)", :name => "G20 Day", :regions => [:au_qld_brisbane]},
|
51
52
|
{:wday => 1, :week => 1, :name => "Recreation Day", :regions => [:au_tas_north]},
|
52
53
|
{:wday => 2, :week => 1, :name => "Melbourne Cup Day", :regions => [:au_vic_melbourne]}],
|
53
|
-
12 => [{:mday => 25, :observed => lambda { |date| Holidays.
|
54
|
-
{:mday =>
|
55
|
-
{:function => lambda { |year| Holidays.
|
54
|
+
12 => [{:mday => 25, :observed => lambda { |date| Holidays.to_tuesday_if_sunday_or_monday_if_saturday(date) }, :observed_id => "to_tuesday_if_sunday_or_monday_if_saturday", :name => "Christmas Day", :regions => [:au_qld, :au_nsw, :au_act, :au_tas, :au_wa]},
|
55
|
+
{:mday => 25, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "Christmas Day", :regions => [:au_sa]},
|
56
|
+
{:function => lambda { |year| Holidays.xmas_to_weekday_if_weekend(year) }, :function_id => "xmas_to_weekday_if_weekend(year)", :name => "Christmas Day", :regions => [:au_vic, :au_nt]},
|
57
|
+
{:mday => 26, :observed => lambda { |date| Holidays.to_tuesday_if_sunday_or_monday_if_saturday(date) }, :observed_id => "to_tuesday_if_sunday_or_monday_if_saturday", :name => "Boxing Day", :regions => [:au_nsw, :au_vic, :au_qld, :au_act, :au_wa]},
|
58
|
+
{:function => lambda { |year| Holidays.to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year) }, :function_id => "to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year)", :name => "Boxing Day", :regions => [:au_sa]},
|
59
|
+
{:function => lambda { |year| Holidays.to_weekday_if_boxing_weekend_from_year(year) }, :function_id => "to_weekday_if_boxing_weekend_from_year(year)", :name => "Boxing Day", :regions => [:au_tas, :au_nt]}]
|
56
60
|
}
|
57
61
|
end
|
58
62
|
end
|
@@ -66,22 +70,42 @@ end
|
|
66
70
|
|
67
71
|
# http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
|
68
72
|
# celebrated twice in 2012
|
73
|
+
# in october again from 2016
|
69
74
|
def self.qld_queens_bday_october(year)
|
70
|
-
year
|
75
|
+
if year >= 2016
|
76
|
+
Holidays.calculate_day_of_month(year, 10, 1, 1)
|
77
|
+
elsif year == 2012
|
78
|
+
1
|
79
|
+
else
|
80
|
+
nil
|
81
|
+
end
|
71
82
|
end
|
72
83
|
|
73
84
|
|
74
85
|
# http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
|
75
|
-
#
|
86
|
+
# for 2013 to 2016 it was in October, otherwise it's in May
|
76
87
|
def self.qld_labour_day_may(year)
|
77
|
-
year
|
88
|
+
if year < 2013 || year >= 2016
|
89
|
+
Holidays.calculate_day_of_month(year, 5, 1, 1)
|
90
|
+
end
|
78
91
|
end
|
79
92
|
|
80
93
|
|
81
94
|
# http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
|
82
|
-
#
|
95
|
+
# for 2013 to 2016 it was in October, otherwise it's in May
|
83
96
|
def self.qld_labour_day_october(year)
|
84
|
-
year
|
97
|
+
if year >= 2013 && year < 2016
|
98
|
+
Holidays.calculate_day_of_month(year, 10, 1, 1)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
# http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
|
104
|
+
# in june until 2015
|
105
|
+
def self.qld_queens_birthday_june(year)
|
106
|
+
if year <= 2015
|
107
|
+
Holidays.calculate_day_of_month(year, 6, 2, 1)
|
108
|
+
end
|
85
109
|
end
|
86
110
|
|
87
111
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Holidays
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
4
|
+
#
|
5
|
+
# Definitions loaded: definitions/be_fr.yaml
|
6
|
+
#
|
7
|
+
# To use the definitions in this file, load it right after you load the
|
8
|
+
# Holiday gem:
|
9
|
+
#
|
10
|
+
# require 'holidays'
|
11
|
+
# require 'generated_definitions/be_fr'
|
12
|
+
#
|
13
|
+
# All the definitions are available at https://github.com/alexdunae/holidays
|
14
|
+
module BE_FR # :nodoc:
|
15
|
+
def self.defined_regions
|
16
|
+
[:be_fr]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.holidays_by_month
|
20
|
+
{
|
21
|
+
0 => [{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pâques", :regions => [:be_fr]},
|
22
|
+
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Lundi de Pâques", :regions => [:be_fr]},
|
23
|
+
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Ascension", :regions => [:be_fr]},
|
24
|
+
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pentecôte", :regions => [:be_fr]},
|
25
|
+
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Lundi de Pentecôte", :regions => [:be_fr]}],
|
26
|
+
1 => [{:mday => 1, :name => "Jour de l'an", :regions => [:be_fr]}],
|
27
|
+
5 => [{:mday => 1, :name => "Fête du travail", :regions => [:be_fr]}],
|
28
|
+
7 => [{:mday => 21, :name => "Fête nationale", :regions => [:be_fr]}],
|
29
|
+
8 => [{:mday => 15, :name => "Assomption", :regions => [:be_fr]}],
|
30
|
+
11 => [{:mday => 1, :name => "Toussaint", :regions => [:be_fr]},
|
31
|
+
{:mday => 11, :name => "Armistice 1918", :regions => [:be_fr]}],
|
32
|
+
12 => [{:mday => 25, :name => "Noël", :regions => [:be_fr]}]
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
Holidays.merge_defs(Holidays::BE_FR.defined_regions, Holidays::BE_FR.holidays_by_month)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Holidays
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
4
|
+
#
|
5
|
+
# Definitions loaded: definitions/be_nl.yaml
|
6
|
+
#
|
7
|
+
# To use the definitions in this file, load it right after you load the
|
8
|
+
# Holiday gem:
|
9
|
+
#
|
10
|
+
# require 'holidays'
|
11
|
+
# require 'generated_definitions/be_nl'
|
12
|
+
#
|
13
|
+
# All the definitions are available at https://github.com/alexdunae/holidays
|
14
|
+
module BE_NL # :nodoc:
|
15
|
+
def self.defined_regions
|
16
|
+
[:be_nl]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.holidays_by_month
|
20
|
+
{
|
21
|
+
0 => [{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pasen", :regions => [:be_nl]},
|
22
|
+
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Paasmaandag", :regions => [:be_nl]},
|
23
|
+
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "O.H. Hemelvaart", :regions => [:be_nl]},
|
24
|
+
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pinksteren", :regions => [:be_nl]},
|
25
|
+
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pinkstermaandag", :regions => [:be_nl]}],
|
26
|
+
1 => [{:mday => 1, :name => "Nieuwjaar", :regions => [:be_nl]}],
|
27
|
+
5 => [{:mday => 1, :name => "Feest van de Arbeid", :regions => [:be_nl]}],
|
28
|
+
7 => [{:mday => 21, :name => "Nationale Feestdag", :regions => [:be_nl]}],
|
29
|
+
8 => [{:mday => 15, :name => "O.L.V. Hemelvaart", :regions => [:be_nl]}],
|
30
|
+
11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:be_nl]},
|
31
|
+
{:mday => 11, :name => "Wapenstilstand 1918", :regions => [:be_nl]}],
|
32
|
+
12 => [{:mday => 25, :name => "Kerstmis", :regions => [:be_nl]}]
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
Holidays.merge_defs(Holidays::BE_NL.defined_regions, Holidays::BE_NL.holidays_by_month)
|
@@ -13,27 +13,36 @@ module Holidays
|
|
13
13
|
# All the definitions are available at https://github.com/alexdunae/holidays
|
14
14
|
module DE # :nodoc:
|
15
15
|
def self.defined_regions
|
16
|
-
[:de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_st, :de_by_aux, :de_bb, :de_mv, :
|
16
|
+
[:de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux, :de_sn, :de_st, :de_by_aux, :de_bb, :de_mv, :de_th]
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.holidays_by_month
|
20
20
|
{
|
21
21
|
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:de]},
|
22
|
+
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :type => :informal, :name => "Ostersonntag", :regions => [:de]},
|
22
23
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:de]},
|
23
24
|
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Christi Himmelfahrt", :regions => [:de]},
|
25
|
+
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :type => :informal, :name => "Pfingstsonntag", :regions => [:de]},
|
24
26
|
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:de]},
|
25
|
-
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl]}
|
27
|
+
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux]},
|
28
|
+
{:function => lambda { |year| Holidays.easter(year)-52 }, :function_id => "easter(year)-52", :type => :informal, :name => "Weiberfastnacht", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]},
|
29
|
+
{:function => lambda { |year| Holidays.easter(year)-48 }, :function_id => "easter(year)-48", :type => :informal, :name => "Rosenmontag", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]},
|
30
|
+
{:function => lambda { |year| Holidays.easter(year)-46 }, :function_id => "easter(year)-46", :type => :informal, :name => "Aschermittwoch", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}],
|
26
31
|
1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:de]},
|
27
32
|
{:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by, :de_st]}],
|
28
33
|
5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:de]}],
|
29
34
|
8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by, :de_sl]},
|
30
35
|
{:mday => 8, :name => "Friedensfest", :regions => [:de_by_aux]}],
|
31
36
|
10 => [{:mday => 3, :name => "Tag der Deutschen Einheit", :regions => [:de]},
|
32
|
-
{:mday => 31, :name => "Reformationstag", :regions => [:de_bb, :de_mv, :de_sn, :de_st, :de_th]}
|
37
|
+
{:mday => 31, :name => "Reformationstag", :regions => [:de_bb, :de_mv, :de_sn, :de_st, :de_th]},
|
38
|
+
{:mday => 31, :type => :informal, :name => "Reformationstag", :regions => [:de_bw]},
|
39
|
+
{:mday => 31, :year_ranges => [{:limited => [2017]}],:name => "Reformationstag", :regions => [:de]}],
|
33
40
|
11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:de_bw, :de_by, :de_nw, :de_rp, :de_sl]},
|
34
41
|
{:function => lambda { |year| Holidays.de_buss_und_bettag(year) }, :function_id => "de_buss_und_bettag(year)", :name => "Buß- und Bettag", :regions => [:de_sn]}],
|
35
|
-
12 => [{:mday =>
|
36
|
-
{:mday =>
|
42
|
+
12 => [{:mday => 24, :type => :informal, :name => "Heilig Abend", :regions => [:de]},
|
43
|
+
{:mday => 25, :name => "1. Weihnachtstag", :regions => [:de]},
|
44
|
+
{:mday => 26, :name => "2. Weihnachtstag", :regions => [:de]},
|
45
|
+
{:mday => 31, :type => :informal, :name => "Silvester", :regions => [:de]}]
|
37
46
|
}
|
38
47
|
end
|
39
48
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
module Holidays
|
3
3
|
# This file is generated by the Ruby Holidays gem.
|
4
4
|
#
|
5
|
-
# Definitions loaded: definitions/at.yaml, definitions/
|
5
|
+
# Definitions loaded: definitions/at.yaml, definitions/be_fr.yaml, definitions/be_nl.yaml, definitions/ch.yaml, definitions/cz.yaml, definitions/dk.yaml, definitions/de.yaml, definitions/el.yaml, definitions/es.yaml, definitions/fr.yaml, definitions/gb.yaml, definitions/hr.yaml, definitions/hu.yaml, definitions/ie.yaml, definitions/is.yaml, definitions/it.yaml, definitions/li.yaml, definitions/lt.yaml, definitions/nl.yaml, definitions/no.yaml, definitions/pl.yaml, definitions/pt.yaml, definitions/ro.yaml, definitions/sk.yaml, definitions/si.yaml, definitions/bg.yaml
|
6
6
|
#
|
7
7
|
# To use the definitions in this file, load it right after you load the
|
8
8
|
# Holiday gem:
|
@@ -13,7 +13,7 @@ module Holidays
|
|
13
13
|
# All the definitions are available at https://github.com/alexdunae/holidays
|
14
14
|
module EUROPE # :nodoc:
|
15
15
|
def self.defined_regions
|
16
|
-
[:at, :
|
16
|
+
[:at, :be_fr, :be_nl, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux, :de_sn, :de_st, :de_by_aux, :de_bb, :de_mv, :de_th, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :gb_sct, :gb_con, :je, :gb_jsy, :gg, :gb_gsy, :im, :gb_iom, :hr, :hu, :ie, :is, :it, :li, :lt, :nl, :no, :pl, :pt, :ro, :sk, :si, :bg_en, :bg_bg]
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.holidays_by_month
|
@@ -22,11 +22,16 @@ module Holidays
|
|
22
22
|
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Christi Himmelfahrt", :regions => [:at]},
|
23
23
|
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:at]},
|
24
24
|
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:at]},
|
25
|
-
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pâques", :regions => [:
|
26
|
-
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Lundi de Pâques", :regions => [:
|
27
|
-
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Ascension", :regions => [:
|
28
|
-
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pentecôte", :regions => [:
|
29
|
-
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Lundi de Pentecôte", :regions => [:
|
25
|
+
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pâques", :regions => [:be_fr]},
|
26
|
+
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Lundi de Pâques", :regions => [:be_fr]},
|
27
|
+
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Ascension", :regions => [:be_fr]},
|
28
|
+
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pentecôte", :regions => [:be_fr]},
|
29
|
+
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Lundi de Pentecôte", :regions => [:be_fr]},
|
30
|
+
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pasen", :regions => [:be_nl]},
|
31
|
+
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Paasmaandag", :regions => [:be_nl]},
|
32
|
+
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "O.H. Hemelvaart", :regions => [:be_nl]},
|
33
|
+
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pinksteren", :regions => [:be_nl]},
|
34
|
+
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pinkstermaandag", :regions => [:be_nl]},
|
30
35
|
{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju]},
|
31
36
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_vs, :ch_ge, :ch_ju]},
|
32
37
|
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Auffahrt", :regions => [:ch]},
|
@@ -46,10 +51,15 @@ module Holidays
|
|
46
51
|
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pinsedag", :regions => [:dk]},
|
47
52
|
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "2. Pinsedag", :regions => [:dk]},
|
48
53
|
{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:de]},
|
54
|
+
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :type => :informal, :name => "Ostersonntag", :regions => [:de]},
|
49
55
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:de]},
|
50
56
|
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Christi Himmelfahrt", :regions => [:de]},
|
57
|
+
{:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :type => :informal, :name => "Pfingstsonntag", :regions => [:de]},
|
51
58
|
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:de]},
|
52
|
-
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl]},
|
59
|
+
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux]},
|
60
|
+
{:function => lambda { |year| Holidays.easter(year)-52 }, :function_id => "easter(year)-52", :type => :informal, :name => "Weiberfastnacht", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]},
|
61
|
+
{:function => lambda { |year| Holidays.easter(year)-48 }, :function_id => "easter(year)-48", :type => :informal, :name => "Rosenmontag", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]},
|
62
|
+
{:function => lambda { |year| Holidays.easter(year)-46 }, :function_id => "easter(year)-46", :type => :informal, :name => "Aschermittwoch", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]},
|
53
63
|
{:function => lambda { |year| Holidays.orthodox_easter(year)-2 }, :function_id => "orthodox_easter(year)-2", :name => "Μεγάλη Παρασκευή", :regions => [:el]},
|
54
64
|
{:function => lambda { |year| Holidays.orthodox_easter(year)-1 }, :function_id => "orthodox_easter(year)-1", :name => "Μεγάλο Σάββατο", :regions => [:el]},
|
55
65
|
{:function => lambda { |year| Holidays.orthodox_easter(year) }, :function_id => "orthodox_easter(year)", :name => "Κυριακή του Πάσχα", :regions => [:el]},
|
@@ -95,7 +105,7 @@ module Holidays
|
|
95
105
|
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:li]},
|
96
106
|
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Šv. Velykos", :regions => [:lt]},
|
97
107
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Antroji Velykų diena", :regions => [:lt]},
|
98
|
-
{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Goede Vrijdag", :regions => [:nl]},
|
108
|
+
{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :type => :informal, :name => "Goede Vrijdag", :regions => [:nl]},
|
99
109
|
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pasen", :regions => [:nl]},
|
100
110
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Pasen", :regions => [:nl]},
|
101
111
|
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Hemelvaartsdag", :regions => [:nl]},
|
@@ -143,7 +153,8 @@ module Holidays
|
|
143
153
|
{:function => lambda { |year| Holidays.orthodox_easter_julian(year)+1 }, :function_id => "orthodox_easter_julian(year)+1", :name => "Възкресение Христово. Великден", :regions => [:bg_bg]}],
|
144
154
|
1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:at]},
|
145
155
|
{:mday => 6, :name => "Heilige Drei Könige", :regions => [:at]},
|
146
|
-
{:mday => 1, :name => "Jour de l'an", :regions => [:
|
156
|
+
{:mday => 1, :name => "Jour de l'an", :regions => [:be_fr]},
|
157
|
+
{:mday => 1, :name => "Nieuwjaar", :regions => [:be_nl]},
|
147
158
|
{:mday => 1, :name => "Neujahrstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_vd, :ch_vs, :ch_ne, :ch_ge, :ch_ju, :ch_ti]},
|
148
159
|
{:mday => 2, :name => "Berchtoldstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_sh, :ch_sg, :ch_ag, :ch_tg, :ch_vd, :ch_vs, :ch_ne, :ch_ju]},
|
149
160
|
{:mday => 6, :name => "Dreikönigstag", :regions => [:ch_ur, :ch_sz, :ch_ti]},
|
@@ -186,7 +197,8 @@ module Holidays
|
|
186
197
|
{:mday => 1, :name => "New Year's Day", :regions => [:bg_en]},
|
187
198
|
{:mday => 1, :name => "Нова година", :regions => [:bg_bg]}],
|
188
199
|
5 => [{:mday => 1, :name => "Staatsfeiertag", :regions => [:at]},
|
189
|
-
{:mday => 1, :name => "Fête du travail", :regions => [:
|
200
|
+
{:mday => 1, :name => "Fête du travail", :regions => [:be_fr]},
|
201
|
+
{:mday => 1, :name => "Feest van de Arbeid", :regions => [:be_nl]},
|
190
202
|
{:mday => 1, :name => "Tag der Arbeit", :regions => [:ch_zh, :ch_bs, :ch_bl, :ch_sh, :ch_ag, :ch_tg, :ch_ti, :ch_ne, :ch_ju]},
|
191
203
|
{:mday => 1, :name => "Svátek práce", :regions => [:cz]},
|
192
204
|
{:mday => 8, :name => "Den vítězství", :regions => [:cz]},
|
@@ -231,7 +243,8 @@ module Holidays
|
|
231
243
|
{:mday => 24, :name => "Slavic Literacy Day", :regions => [:bg_en]},
|
232
244
|
{:mday => 24, :name => "Ден на славянската писменост", :regions => [:bg_bg]}],
|
233
245
|
8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:at]},
|
234
|
-
{:mday => 15, :name => "Assomption", :regions => [:
|
246
|
+
{:mday => 15, :name => "Assomption", :regions => [:be_fr]},
|
247
|
+
{:mday => 15, :name => "O.L.V. Hemelvaart", :regions => [:be_nl]},
|
235
248
|
{:mday => 1, :name => "Bundesfeiertag", :regions => [:ch]},
|
236
249
|
{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_ag, :ch_ti, :ch_vs, :ch_ju]},
|
237
250
|
{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by, :de_sl]},
|
@@ -259,6 +272,8 @@ module Holidays
|
|
259
272
|
{:mday => 28, :name => "Den vzniku samostatného československého státu", :regions => [:cz]},
|
260
273
|
{:mday => 3, :name => "Tag der Deutschen Einheit", :regions => [:de]},
|
261
274
|
{:mday => 31, :name => "Reformationstag", :regions => [:de_bb, :de_mv, :de_sn, :de_st, :de_th]},
|
275
|
+
{:mday => 31, :type => :informal, :name => "Reformationstag", :regions => [:de_bw]},
|
276
|
+
{:mday => 31, :year_ranges => [{:limited => [2017]}],:name => "Reformationstag", :regions => [:de]},
|
262
277
|
{:mday => 28, :name => "Επέτειος του Όχι", :regions => [:el]},
|
263
278
|
{:mday => 9, :observed => lambda { |date| Holidays.to_monday_if_sunday(date) }, :observed_id => "to_monday_if_sunday", :name => "Día de Valencia", :regions => [:es_vc, :es_v]},
|
264
279
|
{:mday => 12, :observed => lambda { |date| Holidays.to_monday_if_sunday(date) }, :observed_id => "to_monday_if_sunday", :name => "Día de la Hispanidad", :regions => [:es]},
|
@@ -268,8 +283,10 @@ module Holidays
|
|
268
283
|
{:mday => 14, :type => :informal, :name => "Dzień Nauczyciela (Dzień Edukacji Narodowej)", :regions => [:pl]},
|
269
284
|
{:mday => 31, :name => "dan reformacije", :regions => [:si]}],
|
270
285
|
11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:at]},
|
271
|
-
{:mday => 1, :name => "Toussaint", :regions => [:
|
272
|
-
{:mday => 11, :name => "Armistice 1918", :regions => [:
|
286
|
+
{:mday => 1, :name => "Toussaint", :regions => [:be_fr]},
|
287
|
+
{:mday => 11, :name => "Armistice 1918", :regions => [:be_fr]},
|
288
|
+
{:mday => 1, :name => "Allerheiligen", :regions => [:be_nl]},
|
289
|
+
{:mday => 11, :name => "Wapenstilstand 1918", :regions => [:be_nl]},
|
273
290
|
{:mday => 1, :name => "Allerheiligen", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_sg, :ch_ag, :ch_ti, :ch_vs, :ch_ju]},
|
274
291
|
{:mday => 17, :name => "Den boje za svobodu a demokracii", :regions => [:cz]},
|
275
292
|
{:mday => 10, :type => :informal, :name => "Mortensaften", :regions => [:dk]},
|
@@ -299,7 +316,8 @@ module Holidays
|
|
299
316
|
12 => [{:mday => 8, :name => "Mariä Empfägnis", :regions => [:at]},
|
300
317
|
{:mday => 25, :name => "1. Weihnachtstag", :regions => [:at]},
|
301
318
|
{:mday => 26, :name => "2. Weihnachtstag", :regions => [:at]},
|
302
|
-
{:mday => 25, :name => "Noël", :regions => [:
|
319
|
+
{:mday => 25, :name => "Noël", :regions => [:be_fr]},
|
320
|
+
{:mday => 25, :name => "Kerstmis", :regions => [:be_nl]},
|
303
321
|
{:mday => 8, :name => "Maria Empfängnis", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_ai, :ch_ag, :ch_ti, :ch_vs]},
|
304
322
|
{:mday => 25, :name => "Weihnachten", :regions => [:ch]},
|
305
323
|
{:mday => 26, :name => "Stefanstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vs, :ch_ne]},
|
@@ -311,8 +329,10 @@ module Holidays
|
|
311
329
|
{:mday => 24, :type => :informal, :name => "Juleaftensdag", :regions => [:dk]},
|
312
330
|
{:mday => 25, :name => "1. juledag", :regions => [:dk]},
|
313
331
|
{:mday => 26, :name => "2. juledag", :regions => [:dk]},
|
332
|
+
{:mday => 24, :type => :informal, :name => "Heilig Abend", :regions => [:de]},
|
314
333
|
{:mday => 25, :name => "1. Weihnachtstag", :regions => [:de]},
|
315
334
|
{:mday => 26, :name => "2. Weihnachtstag", :regions => [:de]},
|
335
|
+
{:mday => 31, :type => :informal, :name => "Silvester", :regions => [:de]},
|
316
336
|
{:mday => 25, :name => "Χριστούγεννα", :regions => [:el]},
|
317
337
|
{:mday => 26, :name => "Δεύτερη ημέρα των Χριστουγέννων", :regions => [:el]},
|
318
338
|
{:mday => 6, :observed => lambda { |date| Holidays.to_monday_if_sunday(date) }, :observed_id => "to_monday_if_sunday", :name => "Día de la Constitución", :regions => [:es]},
|
@@ -372,7 +392,8 @@ module Holidays
|
|
372
392
|
{:mday => 25, :name => "Рождество Христово. Коледа", :regions => [:bg_bg]},
|
373
393
|
{:mday => 26, :name => "Christmas", :regions => [:bg_en]},
|
374
394
|
{:mday => 26, :name => "Рождество Христово. Коледа", :regions => [:bg_bg]}],
|
375
|
-
7 => [{:mday => 21, :name => "Fête nationale", :regions => [:
|
395
|
+
7 => [{:mday => 21, :name => "Fête nationale", :regions => [:be_fr]},
|
396
|
+
{:mday => 21, :name => "Nationale Feestdag", :regions => [:be_nl]},
|
376
397
|
{:mday => 5, :name => "Den slovanských věrozvěstů Cyrila a Metoděje", :regions => [:cz]},
|
377
398
|
{:mday => 6, :name => "Den upálení mistra Jana Husa", :regions => [:cz]},
|
378
399
|
{:mday => 23, :observed => lambda { |date| Holidays.to_monday_if_sunday(date) }, :observed_id => "to_monday_if_sunday", :name => "Santiago Apostol", :regions => [:es_ga]},
|
@@ -33,8 +33,9 @@ module Holidays
|
|
33
33
|
{:function => lambda { |year| Holidays.jp_substitute_holiday(year, 5, 3) }, :function_id => "jp_substitute_holiday(year, 5, 3)", :name => "振替休日", :regions => [:jp]},
|
34
34
|
{:function => lambda { |year| Holidays.jp_substitute_holiday(year, 5, 4) }, :function_id => "jp_substitute_holiday(year, 5, 4)", :name => "振替休日", :regions => [:jp]},
|
35
35
|
{:function => lambda { |year| Holidays.jp_substitute_holiday(year, 5, 5) }, :function_id => "jp_substitute_holiday(year, 5, 5)", :name => "振替休日", :regions => [:jp]}],
|
36
|
-
7 => [{:
|
37
|
-
{:function => lambda { |year| Holidays.jp_substitute_holiday(year, 7,
|
36
|
+
7 => [{:mday => 20, :year_ranges => [{:between => 1996..2002}],:name => "海の日", :regions => [:jp]},
|
37
|
+
{:function => lambda { |year| Holidays.jp_substitute_holiday(year, 7, 20) }, :function_id => "jp_substitute_holiday(year, 7, 20)", :year_ranges => [{:between => 1996..2002}],:name => "振替休日", :regions => [:jp]},
|
38
|
+
{:wday => 1, :week => 3, :year_ranges => [{:after => 2003}],:name => "海の日", :regions => [:jp]}],
|
38
39
|
8 => [{:function => lambda { |year| Holidays.jp_mountain_holiday(year) }, :function_id => "jp_mountain_holiday(year)", :year_ranges => [{:after => 2016}],:name => "山の日", :regions => [:jp]},
|
39
40
|
{:function => lambda { |year| Holidays.jp_substitute_holiday(Holidays.jp_mountain_holiday(year)) }, :function_id => "jp_substitute_holiday(Holidays.jp_mountain_holiday(year))", :year_ranges => [{:after => 2016}],:name => "振替休日", :regions => [:jp]}],
|
40
41
|
9 => [{:wday => 1, :week => 3, :name => "敬老の日", :regions => [:jp]},
|
@@ -18,7 +18,7 @@ module Holidays
|
|
18
18
|
|
19
19
|
def self.holidays_by_month
|
20
20
|
{
|
21
|
-
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Goede Vrijdag", :regions => [:nl]},
|
21
|
+
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :type => :informal, :name => "Goede Vrijdag", :regions => [:nl]},
|
22
22
|
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pasen", :regions => [:nl]},
|
23
23
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Pasen", :regions => [:nl]},
|
24
24
|
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Hemelvaartsdag", :regions => [:nl]},
|
@@ -19,7 +19,6 @@ module Holidays
|
|
19
19
|
def self.holidays_by_month
|
20
20
|
{
|
21
21
|
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Good Friday", :regions => [:nz]},
|
22
|
-
{:function => lambda { |year| Holidays.easter(year)-1 }, :function_id => "easter(year)-1", :name => "Easter Saturday", :regions => [:nz]},
|
23
22
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Easter Monday", :regions => [:nz]}],
|
24
23
|
1 => [{:mday => 1, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "New Year's Day", :regions => [:nz]},
|
25
24
|
{:mday => 2, :observed => lambda { |date| Holidays.to_weekday_if_boxing_weekend(date) }, :observed_id => "to_weekday_if_boxing_weekend", :name => "Day after New Year's Day", :regions => [:nz]},
|
data/lib/holidays.rb
CHANGED
@@ -161,6 +161,18 @@ module Holidays
|
|
161
161
|
DateCalculatorFactory.weekend_modifier.to_weekday_if_boxing_weekend(date)
|
162
162
|
end
|
163
163
|
|
164
|
+
def to_tuesday_if_sunday_or_monday_if_saturday(year)
|
165
|
+
DateCalculatorFactory.weekend_modifier.to_tuesday_if_sunday_or_monday_if_saturday(year)
|
166
|
+
end
|
167
|
+
|
168
|
+
def xmas_to_weekday_if_weekend(year)
|
169
|
+
DateCalculatorFactory.weekend_modifier.xmas_to_weekday_if_weekend(year)
|
170
|
+
end
|
171
|
+
|
172
|
+
def to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year)
|
173
|
+
DateCalculatorFactory.weekend_modifier.to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year)
|
174
|
+
end
|
175
|
+
|
164
176
|
def to_weekday_if_boxing_weekend_from_year(year)
|
165
177
|
DateCalculatorFactory.weekend_modifier.to_weekday_if_boxing_weekend_from_year(year)
|
166
178
|
end
|
@@ -48,30 +48,30 @@ module Holidays
|
|
48
48
|
# Copied from https://github.com/Loyolny/when_easter
|
49
49
|
# Graciously allowed by Michał Nierebiński (https://github.com/Loyolny)
|
50
50
|
def calculate_easter_for(year)
|
51
|
-
g = year % 19 +1
|
52
|
-
s = (year -1600) / 100 - (year-1600) / 400
|
51
|
+
g = year % 19 + 1
|
52
|
+
s = (year - 1600) / 100 - (year - 1600) / 400
|
53
53
|
l = (((year - 1400) / 100) * 8) / 25
|
54
54
|
|
55
|
-
p_2 = (3-11*g +s -l) % 30
|
55
|
+
p_2 = (3 - 11 * g + s - l) % 30
|
56
56
|
if p_2 == 29 || (p_2 == 28 && g > 11)
|
57
|
-
p = p_2 -1
|
57
|
+
p = p_2 - 1
|
58
58
|
else
|
59
|
-
p= p_2
|
59
|
+
p = p_2
|
60
60
|
end
|
61
61
|
|
62
62
|
d= (year + year / 4 - year / 100 + year / 400) % 7
|
63
|
-
d_2 = (8-d) % 7
|
63
|
+
d_2 = (8 - d) % 7
|
64
64
|
|
65
65
|
p_3 = (80 + p) % 7
|
66
66
|
x_2 = d_2 - p_3
|
67
67
|
|
68
|
-
x = (x_2 -1) % 7 +1
|
68
|
+
x = (x_2 - 1) % 7 + 1
|
69
69
|
e = p+x
|
70
70
|
|
71
71
|
if e < 11
|
72
|
-
Date.civil(year,3,e+21)
|
72
|
+
Date.civil(year,3,e + 21)
|
73
73
|
else
|
74
|
-
Date.civil(year,4,e-10)
|
74
|
+
Date.civil(year,4,e - 10)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'date'
|
2
|
-
|
3
1
|
module Holidays
|
4
2
|
module DateCalculator
|
5
3
|
class WeekendModifier
|
@@ -18,24 +16,47 @@ module Holidays
|
|
18
16
|
date
|
19
17
|
end
|
20
18
|
|
19
|
+
# if Christmas falls on a Sunday, move it to the next Tuesday (Boxing Day will go on Monday)
|
20
|
+
# if Christmas falls on a Saturday, move it to the next Monday (Boxing Day will be Sunday and potentially Tuesday)
|
21
|
+
# used as a callback function, if xmas is not observed on the 25th
|
22
|
+
def xmas_to_weekday_if_weekend(year)
|
23
|
+
to_tuesday_if_sunday_or_monday_if_saturday(Date.civil(year, 12, 25))
|
24
|
+
end
|
25
|
+
|
21
26
|
# Move Boxing Day if it falls on a weekend, leaving room for Christmas.
|
22
27
|
# Used as a callback function.
|
23
28
|
def to_weekday_if_boxing_weekend(date)
|
24
29
|
if date.wday == 6 || date.wday == 0
|
25
30
|
date += 2
|
26
|
-
elsif date.wday == 1
|
31
|
+
elsif date.wday == 1 # https://github.com/holidays/holidays/issues/27
|
27
32
|
date += 1
|
28
33
|
end
|
29
34
|
|
30
35
|
date
|
31
36
|
end
|
32
37
|
|
38
|
+
# if Christmas falls on a Saturday, move it to the next Monday (Boxing Day will be Sunday and potentially Tuesday)
|
39
|
+
# if Christmas falls on a Sunday, move it to the next Tuesday (Boxing Day will go on Monday)
|
40
|
+
#
|
41
|
+
# if Boxing Day falls on a Saturday, move it to the next Monday (Christmas will go on Friday)
|
42
|
+
# if Boxing Day falls on a Sunday, move it to the next Tuesday (Christmas will go on Saturday & Monday)
|
43
|
+
def to_tuesday_if_sunday_or_monday_if_saturday(date)
|
44
|
+
date += 2 if [0, 6].include?(date.wday)
|
45
|
+
date
|
46
|
+
end
|
47
|
+
|
33
48
|
# Call to_weekday_if_boxing_weekend but first get date based on year
|
34
49
|
# Used as a callback function.
|
35
|
-
def
|
50
|
+
def to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year)
|
36
51
|
to_weekday_if_boxing_weekend(Date.civil(year, 12, 26))
|
37
52
|
end
|
38
53
|
|
54
|
+
# Call to_weekday_if_boxing_weekend but first get date based on year
|
55
|
+
# Used as a callback function.
|
56
|
+
def to_weekday_if_boxing_weekend_from_year(year)
|
57
|
+
to_tuesday_if_sunday_or_monday_if_saturday(Date.civil(year, 12, 26))
|
58
|
+
end
|
59
|
+
|
39
60
|
# Move date to Monday if it occurs on a Sunday or to Friday if it occurs on a
|
40
61
|
# Saturday.
|
41
62
|
# Used as a callback function.
|