holidays 8.8.0 → 9.1.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/.github/workflows/changelog-check.yml +47 -0
- data/.github/workflows/release.yml +46 -0
- data/.github/workflows/ruby.yml +2 -2
- data/CHANGELOG.md +10 -0
- data/README.md +4 -8
- data/holidays.gemspec +4 -4
- data/lib/generated_definitions/MANIFEST +3 -0
- data/lib/generated_definitions/REGIONS.rb +2 -2
- data/lib/generated_definitions/au.rb +9 -5
- data/lib/generated_definitions/bg.rb +7 -7
- data/lib/generated_definitions/cy.rb +40 -0
- data/lib/generated_definitions/de.rb +9 -5
- data/lib/generated_definitions/europe.rb +20 -14
- data/lib/generated_definitions/hk.rb +12 -77
- data/lib/generated_definitions/in.rb +64 -0
- data/lib/generated_definitions/it.rb +1 -0
- data/lib/generated_definitions/northamerica.rb +13 -5
- data/lib/generated_definitions/pl.rb +2 -1
- data/lib/generated_definitions/ro.rb +2 -0
- data/lib/generated_definitions/sk.rb +2 -4
- data/lib/generated_definitions/tsx.rb +46 -0
- data/lib/generated_definitions/ups.rb +2 -1
- data/lib/generated_definitions/us.rb +13 -5
- data/lib/holidays/date_calculator/lunar_date.rb +160 -5
- data/lib/holidays/date_calculator/weekend_modifier.rb +13 -0
- data/lib/holidays/definition/context/generator.rb +2 -2
- data/lib/holidays/definition/generator/regions.rb +2 -1
- data/lib/holidays/definition/generator/test.rb +1 -1
- data/lib/holidays/finder/context/search.rb +4 -1
- data/lib/holidays/load_all_definitions.rb +4 -1
- data/lib/holidays/version.rb +1 -1
- data/test/defs/test_defs_bg.rb +4 -4
- data/test/defs/test_defs_cy.rb +41 -0
- data/test/defs/test_defs_de.rb +2 -0
- data/test/defs/test_defs_europe.rb +26 -20
- data/test/defs/test_defs_hk.rb +34 -0
- data/test/defs/test_defs_in.rb +94 -0
- data/test/defs/test_defs_it.rb +2 -0
- data/test/defs/test_defs_northamerica.rb +16 -9
- data/test/defs/test_defs_pl.rb +3 -1
- data/test/defs/test_defs_ro.rb +4 -0
- data/test/defs/test_defs_sk.rb +11 -15
- data/test/defs/test_defs_tsx.rb +70 -0
- data/test/defs/test_defs_us.rb +16 -9
- data/test/holidays/definition/context/test_generator.rb +2 -2
- data/test/holidays/definition/generator/test_regions.rb +4 -4
- data/test/integration/test_available_regions.rb +1 -1
- data/test/integration/test_holidays.rb +1 -1
- metadata +21 -13
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Holidays
|
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
|
4
|
+
#
|
|
5
|
+
# Definitions loaded: definitions/in.yaml
|
|
6
|
+
#
|
|
7
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
8
|
+
module IN # :nodoc:
|
|
9
|
+
def self.defined_regions
|
|
10
|
+
[:in, :in_wb, :in_od, :in_tr, :in_mh, :in_ar, :in_mz, :in_br, :in_hp, :in_gj, :in_sk, :in_ts, :in_jh, :in_py, :in_kl, :in_ka, :in_jk, :in_ap, :in_cg, :in_hr, :in_mp, :in_pb, :in_nl, :in_as, :in_ga]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.holidays_by_month
|
|
14
|
+
{
|
|
15
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:in]}],
|
|
16
|
+
1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:in]},
|
|
17
|
+
{:mday => 12, :name => "Swami Vivekananda Jayanti", :regions => [:in_wb]},
|
|
18
|
+
{:mday => 14, :name => "Makar Sankranti / Pongal / Magh Bihu / Uttarayan / Khichdi / Sankranti", :regions => [:in]},
|
|
19
|
+
{:mday => 23, :name => "Netaji Subhas Chandra Bose Jayanti", :regions => [:in_od, :in_wb, :in_tr]},
|
|
20
|
+
{:mday => 26, :name => "Republic Day", :regions => [:in]}],
|
|
21
|
+
2 => [{:mday => 19, :name => "Chhatrapati Shivaji Maharaj Jayanti", :regions => [:in_mh]},
|
|
22
|
+
{:mday => 20, :name => "Arunachal Pradesh Statehood Day", :regions => [:in_ar]},
|
|
23
|
+
{:mday => 20, :name => "Mizoram State Day", :regions => [:in_mz]}],
|
|
24
|
+
3 => [{:mday => 22, :name => "Bihar Day", :regions => [:in_br]}],
|
|
25
|
+
4 => [{:mday => 1, :name => "Odisha Day", :regions => [:in_od]},
|
|
26
|
+
{:mday => 14, :name => "Dr. B. R. Ambedkar Jayanti", :regions => [:in]},
|
|
27
|
+
{:mday => 15, :name => "Himachal Pradesh Day", :regions => [:in_hp]},
|
|
28
|
+
{:mday => 15, :name => "West Bengal Day", :regions => [:in_wb]}],
|
|
29
|
+
5 => [{:mday => 1, :name => "Gujarat Day", :regions => [:in_gj]},
|
|
30
|
+
{:mday => 1, :name => "Maharashtra Day", :regions => [:in_mh]},
|
|
31
|
+
{:mday => 1, :name => "Labour Day", :regions => [:in]},
|
|
32
|
+
{:mday => 7, :name => "Rabindranath Tagore Jayanti", :regions => [:in_wb]},
|
|
33
|
+
{:mday => 16, :name => "Sikkim State Day", :regions => [:in_sk]}],
|
|
34
|
+
6 => [{:mday => 2, :name => "Telangana Formation Day", :regions => [:in_ts]}],
|
|
35
|
+
7 => [{:mday => 13, :name => "Martyrs' Day", :regions => [:in_jh]}],
|
|
36
|
+
8 => [{:mday => 15, :name => "Independence day", :regions => [:in]},
|
|
37
|
+
{:mday => 16, :name => "Puducherry De Jure Transfer Day", :regions => [:in_py]},
|
|
38
|
+
{:mday => 20, :name => "Sree Narayana Guru Jayanti", :regions => [:in_kl]}],
|
|
39
|
+
9 => [{:mday => 17, :name => "Hyderabad-Karnataka Liberation Day", :regions => [:in_ka]}],
|
|
40
|
+
10 => [{:mday => 2, :name => "Mahatma Gandhi Jayanti", :regions => [:in]},
|
|
41
|
+
{:mday => 26, :name => "Jammu and Kashmir Association Day", :regions => [:in_jk]},
|
|
42
|
+
{:mday => 31, :name => "Sardar Vallabhbhai Patel Jayanti", :regions => [:in_gj]}],
|
|
43
|
+
11 => [{:mday => 1, :name => "Andhra Pradesh Day", :regions => [:in_ap]},
|
|
44
|
+
{:mday => 1, :name => "Chhattisgarh Rajyotsava", :regions => [:in_cg]},
|
|
45
|
+
{:mday => 1, :name => "Haryana Day", :regions => [:in_hr]},
|
|
46
|
+
{:mday => 1, :name => "Kannada Rajyothsava", :regions => [:in_ka]},
|
|
47
|
+
{:mday => 1, :name => "Kerala Day", :regions => [:in_kl]},
|
|
48
|
+
{:mday => 1, :name => "Madhya Pradesh Day", :regions => [:in_mp]},
|
|
49
|
+
{:mday => 1, :name => "Punjab Day", :regions => [:in_pb]},
|
|
50
|
+
{:mday => 1, :name => "Puducherry Liberation Day", :regions => [:in_py]}],
|
|
51
|
+
12 => [{:mday => 1, :name => "Nagaland State Inauguration Day", :regions => [:in_nl]},
|
|
52
|
+
{:mday => 2, :name => "Asom Day", :regions => [:in_as]},
|
|
53
|
+
{:mday => 19, :name => "Goa Liberation Day", :regions => [:in_ga]},
|
|
54
|
+
{:mday => 25, :name => "Christmas Day", :regions => [:in]}]
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.custom_methods
|
|
59
|
+
{
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -27,6 +27,7 @@ module Holidays
|
|
|
27
27
|
{:mday => 29, :name => "Festa di San Pietro e Paolo", :regions => [:it_rm]}],
|
|
28
28
|
8 => [{:mday => 15, :name => "Assunzione", :regions => [:it]}],
|
|
29
29
|
9 => [{:mday => 8, :name => "Festa della Madonna di Monte Berico", :regions => [:it_vi]}],
|
|
30
|
+
10 => [{:mday => 4, :year_ranges => { :from => 2026 },:name => "Festa di San Francesco d'Assisi", :regions => [:it]}],
|
|
30
31
|
11 => [{:mday => 1, :name => "Ognissanti", :regions => [:it]},
|
|
31
32
|
{:mday => 11, :name => "Festa di San Martino", :regions => [:it_bl]},
|
|
32
33
|
{:mday => 26, :name => "Festa di San Bellino", :regions => [:it_ro]}],
|
|
@@ -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, :us_vt, :us_ak, :us_ca, :us_me, :us_ma, :
|
|
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_al, :us_la, :us, :us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_nj, :us_nc, :us_nd, :us_pa, :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_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_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
|
|
@@ -16,9 +16,9 @@ module Holidays
|
|
|
16
16
|
{:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:ca]},
|
|
17
17
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :type => :informal, :name => "Easter Monday", :regions => [:ca]},
|
|
18
18
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Shrove Tuesday", :regions => [:us_fl]},
|
|
19
|
-
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Mardi Gras Day", :regions => [:us_la]},
|
|
19
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Mardi Gras Day", :regions => [:us_al, :us_la]},
|
|
20
20
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Good Friday", :regions => [:us]},
|
|
21
|
-
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn]},
|
|
21
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pa, :us_pr, :us_tn]},
|
|
22
22
|
{:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:us]}],
|
|
23
23
|
1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ca]},
|
|
24
24
|
{:mday => 2, :name => "New Year's", :regions => [:ca_qc]},
|
|
@@ -118,6 +118,7 @@ module Holidays
|
|
|
118
118
|
{:mday => 2, :type => :informal, :name => "Los Fieles Difuntos", :regions => [:mx]},
|
|
119
119
|
{:wday => 1, :week => 3, :name => "Día de la Revolución", :regions => [:mx]},
|
|
120
120
|
{: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]},
|
|
121
|
+
{:function => "even_year_election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_la]},
|
|
121
122
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]},
|
|
122
123
|
{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]},
|
|
123
124
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]},
|
|
@@ -145,10 +146,11 @@ module Holidays
|
|
|
145
146
|
{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc]},
|
|
146
147
|
{:wday => 1, :week => 3, :name => "Patriots' Day", :regions => [:us_me, :us_ma]},
|
|
147
148
|
{:mday => 21, :name => "San Jacinto Day", :regions => [:us_tx]},
|
|
148
|
-
{:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:
|
|
149
|
+
{:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:us_ms]},
|
|
150
|
+
{:wday => 1, :week => 4, :name => "Confederate Memorial Day", :regions => [:us_al]},
|
|
149
151
|
{:mday => 26, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Confederate Memorial Day", :regions => [:us_fl]},
|
|
150
152
|
{:function => "georgia_state_holiday(year, month)", :function_arguments => [:year, :month], :name => "State Holiday", :regions => [:us_ga]},
|
|
151
|
-
{:
|
|
153
|
+
{:wday => 5, :week => -1, :name => "Arbor Day", :regions => [:us_ne]},
|
|
152
154
|
{:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]},
|
|
153
155
|
{:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}]
|
|
154
156
|
}
|
|
@@ -214,6 +216,12 @@ king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 }
|
|
|
214
216
|
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
215
217
|
},
|
|
216
218
|
|
|
219
|
+
"even_year_election_day(year)" => Proc.new { |year|
|
|
220
|
+
if year % 2 == 0
|
|
221
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
222
|
+
end
|
|
223
|
+
},
|
|
224
|
+
|
|
217
225
|
"us_inauguration_day(year)" => Proc.new { |year|
|
|
218
226
|
year % 4 == 1 ? 20 : nil
|
|
219
227
|
},
|
|
@@ -48,7 +48,8 @@ module Holidays
|
|
|
48
48
|
{:mday => 29, :type => :informal, :name => "Andrzejki", :regions => [:pl]}],
|
|
49
49
|
12 => [{:mday => 4, :type => :informal, :name => "Barbórka (Dzień Górnika, Naftowca i Gazownika)", :regions => [:pl]},
|
|
50
50
|
{:mday => 6, :type => :informal, :name => "Mikołajki", :regions => [:pl]},
|
|
51
|
-
{:mday => 24, :
|
|
51
|
+
{:mday => 24, :year_ranges => { :from => 2025 },:name => "Wigilia Bożego Narodzenia", :regions => [:pl]},
|
|
52
|
+
{:mday => 24, :year_ranges => { :until => 2024 },:type => :informal, :name => "Wigilia Bożego Narodzenia", :regions => [:pl]},
|
|
52
53
|
{:mday => 25, :name => "pierwszy dzień Bożego Narodzenia", :regions => [:pl]},
|
|
53
54
|
{:mday => 26, :name => "drugi dzień Bożego Narodzenia", :regions => [:pl]},
|
|
54
55
|
{:mday => 31, :type => :informal, :name => "Sylwester", :regions => [:pl]}]
|
|
@@ -19,6 +19,8 @@ module Holidays
|
|
|
19
19
|
{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Rusaliile - 51", :regions => [:ro]}],
|
|
20
20
|
1 => [{:mday => 1, :name => "Anul nou", :regions => [:ro]},
|
|
21
21
|
{:mday => 2, :name => "Anul nou", :regions => [:ro]},
|
|
22
|
+
{:mday => 6, :name => "Botezul Domnului - Boboteaza", :regions => [:ro]},
|
|
23
|
+
{:mday => 7, :name => "Soborul Sfântului Proroc Ioan Botezătorul", :regions => [:ro]},
|
|
22
24
|
{:mday => 24, :year_ranges => { :from => 2017 },:name => "Unirea Principatelor Române", :regions => [:ro]}],
|
|
23
25
|
5 => [{:mday => 1, :name => "Ziua muncii", :regions => [:ro]}],
|
|
24
26
|
6 => [{:mday => 1, :year_ranges => { :from => 2017 },:name => "Ziua Copilului", :regions => [:ro]}],
|
|
@@ -20,10 +20,8 @@ module Holidays
|
|
|
20
20
|
{:mday => 8, :name => "Deň víťazstva nad fašizmom", :regions => [:sk]}],
|
|
21
21
|
7 => [{:mday => 5, :name => "Sviatok svätého Cyrila a svätého Metoda", :regions => [:sk]}],
|
|
22
22
|
8 => [{:mday => 29, :name => "Výročie Slovenského národného povstania", :regions => [:sk]}],
|
|
23
|
-
9 => [{:mday =>
|
|
24
|
-
|
|
25
|
-
11 => [{:mday => 1, :name => "Sviatok všetkých svätých", :regions => [:sk]},
|
|
26
|
-
{:mday => 17, :name => "Deň boja za slobodu a demokraciu", :regions => [:sk]}],
|
|
23
|
+
9 => [{:mday => 15, :name => "Sedembolestná Panna Mária", :regions => [:sk]}],
|
|
24
|
+
11 => [{:mday => 1, :name => "Sviatok všetkých svätých", :regions => [:sk]}],
|
|
27
25
|
12 => [{:mday => 24, :name => "Štedrý deň", :regions => [:sk]},
|
|
28
26
|
{:mday => 25, :name => "1. sviatok vianočný", :regions => [:sk]},
|
|
29
27
|
{:mday => 26, :name => "2. sviatok vianočný", :regions => [:sk]}]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Holidays
|
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
|
4
|
+
#
|
|
5
|
+
# Definitions loaded: definitions/tsx.yaml
|
|
6
|
+
#
|
|
7
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
|
8
|
+
module TSX # :nodoc:
|
|
9
|
+
def self.defined_regions
|
|
10
|
+
[:tsx]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.holidays_by_month
|
|
14
|
+
{
|
|
15
|
+
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:tsx]}],
|
|
16
|
+
1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:tsx]}],
|
|
17
|
+
2 => [{:wday => 1, :week => 3, :year_ranges => { :from => 2008 },:name => "Family Day", :regions => [:tsx]}],
|
|
18
|
+
5 => [{:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "Victoria Day", :regions => [:tsx]}],
|
|
19
|
+
7 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Canada Day", :regions => [:tsx]}],
|
|
20
|
+
8 => [{:wday => 1, :week => 1, :name => "Civic Holiday", :regions => [:tsx]}],
|
|
21
|
+
9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:tsx]}],
|
|
22
|
+
10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:tsx]}],
|
|
23
|
+
12 => [{:mday => 25, :year_ranges => { :until => 2020 },:observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:tsx]},
|
|
24
|
+
{:mday => 25, :year_ranges => { :from => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:tsx]},
|
|
25
|
+
{:mday => 26, :year_ranges => { :until => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:tsx]},
|
|
26
|
+
{:mday => 26, :year_ranges => { :from => 2020 },:observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:tsx]}]
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.custom_methods
|
|
31
|
+
{
|
|
32
|
+
"ca_victoria_day(year)" => Proc.new { |year|
|
|
33
|
+
date = Date.civil(year,5,24)
|
|
34
|
+
if date.wday > 1
|
|
35
|
+
date -= (date.wday - 1)
|
|
36
|
+
elsif date.wday == 0
|
|
37
|
+
date -= 6
|
|
38
|
+
end
|
|
39
|
+
date
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -12,7 +12,8 @@ module Holidays
|
|
|
12
12
|
|
|
13
13
|
def self.holidays_by_month
|
|
14
14
|
{
|
|
15
|
-
1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ups]}
|
|
15
|
+
1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ups]},
|
|
16
|
+
{:wday => 1, :week => 3, :name => "Birthday of Martin Luther King, Jr", :regions => [:ups]}],
|
|
16
17
|
5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:ups]}],
|
|
17
18
|
7 => [{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:ups]}],
|
|
18
19
|
9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:ups]}],
|
|
@@ -7,15 +7,15 @@ 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, :us_vt, :us_ak, :us_ca, :us_me, :us_ma, :
|
|
10
|
+
[:us_fl, :us_al, :us_la, :us, :us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_nj, :us_nc, :us_nd, :us_pa, :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_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_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
|
|
14
14
|
{
|
|
15
15
|
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Shrove Tuesday", :regions => [:us_fl]},
|
|
16
|
-
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Mardi Gras Day", :regions => [:us_la]},
|
|
16
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Mardi Gras Day", :regions => [:us_al, :us_la]},
|
|
17
17
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Good Friday", :regions => [:us]},
|
|
18
|
-
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn]},
|
|
18
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pa, :us_pr, :us_tn]},
|
|
19
19
|
{:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:us]}],
|
|
20
20
|
1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:us]},
|
|
21
21
|
{:wday => 1, :week => 3, :name => "Martin Luther King's and Robert E. Lee's Birthdays", :regions => [:us_ms]},
|
|
@@ -37,10 +37,11 @@ module Holidays
|
|
|
37
37
|
4 => [{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc]},
|
|
38
38
|
{:wday => 1, :week => 3, :name => "Patriots' Day", :regions => [:us_me, :us_ma]},
|
|
39
39
|
{:mday => 21, :name => "San Jacinto Day", :regions => [:us_tx]},
|
|
40
|
-
{:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:
|
|
40
|
+
{:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:us_ms]},
|
|
41
|
+
{:wday => 1, :week => 4, :name => "Confederate Memorial Day", :regions => [:us_al]},
|
|
41
42
|
{:mday => 26, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Confederate Memorial Day", :regions => [:us_fl]},
|
|
42
43
|
{:function => "georgia_state_holiday(year, month)", :function_arguments => [:year, :month], :name => "State Holiday", :regions => [:us_ga]},
|
|
43
|
-
{:
|
|
44
|
+
{:wday => 5, :week => -1, :name => "Arbor Day", :regions => [:us_ne]},
|
|
44
45
|
{:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]},
|
|
45
46
|
{:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}],
|
|
46
47
|
5 => [{:mday => 8, :name => "Truman Day", :regions => [:us_mo]},
|
|
@@ -72,6 +73,7 @@ module Holidays
|
|
|
72
73
|
{:wday => 5, :week => -1, :name => "Nevada Day", :regions => [:us_nv]},
|
|
73
74
|
{:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}],
|
|
74
75
|
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]},
|
|
76
|
+
{:function => "even_year_election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_la]},
|
|
75
77
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]},
|
|
76
78
|
{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]},
|
|
77
79
|
{:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]},
|
|
@@ -138,6 +140,12 @@ king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 }
|
|
|
138
140
|
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
139
141
|
},
|
|
140
142
|
|
|
143
|
+
"even_year_election_day(year)" => Proc.new { |year|
|
|
144
|
+
if year % 2 == 0
|
|
145
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
146
|
+
end
|
|
147
|
+
},
|
|
148
|
+
|
|
141
149
|
"us_inauguration_day(year)" => Proc.new { |year|
|
|
142
150
|
year % 4 == 1 ? 20 : nil
|
|
143
151
|
},
|
|
@@ -340,18 +340,173 @@ module Holidays
|
|
|
340
340
|
[355, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze
|
|
341
341
|
].freeze
|
|
342
342
|
|
|
343
|
+
# Source: https://github.com/hungtcs/traditional-chinese-calendar-database/blob/master/database/all.json
|
|
344
|
+
CHINESE_LUNAR_YEAR_INFO = [
|
|
345
|
+
[384, 1, 2, 1, 1, 2, 1, 2, 4, 2, 2, 1, 2].freeze, # 1900 unavailable, filled with data from Vietnamese calendar
|
|
346
|
+
[354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze,
|
|
347
|
+
[355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze,
|
|
348
|
+
[383, 1, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2].freeze,
|
|
349
|
+
[354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze,
|
|
350
|
+
[355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
351
|
+
[384, 1, 2, 2, 5, 1, 2, 1, 2, 1, 2, 1, 2].freeze,
|
|
352
|
+
[354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze,
|
|
353
|
+
[355, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze,
|
|
354
|
+
[384, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2].freeze,
|
|
355
|
+
[354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze,
|
|
356
|
+
[384, 2, 1, 2, 1, 1, 4, 1, 2, 2, 1, 2, 2].freeze,
|
|
357
|
+
[354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2].freeze,
|
|
358
|
+
[354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
359
|
+
[384, 2, 2, 1, 2, 5, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
360
|
+
[354, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1].freeze,
|
|
361
|
+
[355, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze,
|
|
362
|
+
[384, 2, 3, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze,
|
|
363
|
+
[355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze,
|
|
364
|
+
[384, 1, 2, 1, 1, 2, 1, 5, 2, 1, 2, 2, 2].freeze,
|
|
365
|
+
[354, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2].freeze,
|
|
366
|
+
[354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze,
|
|
367
|
+
[384, 2, 1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2].freeze,
|
|
368
|
+
[354, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
369
|
+
[354, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze,
|
|
370
|
+
[385, 2, 1, 2, 5, 2, 1, 2, 2, 1, 2, 1, 2].freeze,
|
|
371
|
+
[354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze,
|
|
372
|
+
[355, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2].freeze,
|
|
373
|
+
[384, 1, 4, 1, 2, 1, 1, 2, 1, 2, 2, 2, 2].freeze,
|
|
374
|
+
[354, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2].freeze,
|
|
375
|
+
[383, 1, 2, 2, 1, 1, 4, 1, 2, 1, 2, 2, 1].freeze,
|
|
376
|
+
[354, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze,
|
|
377
|
+
[355, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
378
|
+
[384, 1, 2, 2, 1, 6, 1, 2, 1, 2, 1, 1, 2].freeze,
|
|
379
|
+
[355, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze,
|
|
380
|
+
[354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze,
|
|
381
|
+
[384, 2, 1, 5, 1, 1, 2, 2, 1, 2, 2, 2, 1].freeze,
|
|
382
|
+
[354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1].freeze,
|
|
383
|
+
[384, 2, 2, 1, 1, 2, 1, 5, 1, 2, 2, 1, 2].freeze,
|
|
384
|
+
[354, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
385
|
+
[354, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze,
|
|
386
|
+
[384, 2, 2, 1, 2, 2, 5, 1, 1, 2, 1, 2, 1].freeze,
|
|
387
|
+
[355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze,
|
|
388
|
+
[354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze,
|
|
389
|
+
[385, 2, 1, 2, 5, 1, 2, 1, 2, 2, 1, 2, 2].freeze,
|
|
390
|
+
[354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2].freeze,
|
|
391
|
+
[354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2].freeze,
|
|
392
|
+
[384, 2, 4, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze,
|
|
393
|
+
[354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
394
|
+
[384, 2, 1, 2, 2, 1, 2, 3, 2, 1, 2, 1, 2].freeze,
|
|
395
|
+
[354, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1].freeze, # 1950
|
|
396
|
+
[355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze,
|
|
397
|
+
[384, 1, 2, 1, 2, 5, 1, 2, 2, 1, 2, 1, 2].freeze,
|
|
398
|
+
[354, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze,
|
|
399
|
+
[355, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2].freeze,
|
|
400
|
+
[384, 1, 2, 5, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze,
|
|
401
|
+
[354, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze,
|
|
402
|
+
[383, 2, 1, 2, 1, 2, 1, 1, 4, 2, 1, 2, 1].freeze,
|
|
403
|
+
[355, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
404
|
+
[354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1].freeze,
|
|
405
|
+
[384, 2, 1, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1].freeze,
|
|
406
|
+
[355, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2].freeze,
|
|
407
|
+
[354, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze,
|
|
408
|
+
[384, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 1].freeze,
|
|
409
|
+
[355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze,
|
|
410
|
+
[353, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze,
|
|
411
|
+
[384, 2, 2, 4, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze,
|
|
412
|
+
[355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
413
|
+
[384, 1, 2, 1, 2, 2, 1, 4, 2, 1, 2, 1, 2].freeze,
|
|
414
|
+
[354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze,
|
|
415
|
+
[355, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze,
|
|
416
|
+
[384, 1, 2, 1, 1, 4, 2, 1, 2, 2, 2, 1, 2].freeze,
|
|
417
|
+
[354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2].freeze,
|
|
418
|
+
[354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2].freeze,
|
|
419
|
+
[384, 2, 2, 1, 4, 1, 2, 1, 1, 2, 2, 1, 2].freeze,
|
|
420
|
+
[354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
421
|
+
[384, 2, 2, 1, 2, 1, 2, 1, 4, 1, 2, 1, 2].freeze,
|
|
422
|
+
[354, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1].freeze,
|
|
423
|
+
[355, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze,
|
|
424
|
+
[384, 2, 1, 1, 2, 1, 6, 1, 2, 2, 1, 2, 1].freeze,
|
|
425
|
+
[355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze,
|
|
426
|
+
[354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze,
|
|
427
|
+
[384, 2, 1, 2, 3, 2, 1, 1, 2, 1, 2, 2, 2].freeze,
|
|
428
|
+
[354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze,
|
|
429
|
+
[384, 2, 1, 2, 2, 1, 1, 2, 1, 1, 4, 2, 2].freeze,
|
|
430
|
+
[354, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
431
|
+
[354, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze,
|
|
432
|
+
[384, 2, 1, 2, 1, 2, 4, 2, 2, 1, 2, 1, 1].freeze,
|
|
433
|
+
[355, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze,
|
|
434
|
+
[355, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2].freeze,
|
|
435
|
+
[384, 1, 2, 1, 1, 4, 1, 2, 1, 2, 2, 2, 2].freeze,
|
|
436
|
+
[354, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2].freeze,
|
|
437
|
+
[354, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze,
|
|
438
|
+
[383, 1, 2, 4, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze,
|
|
439
|
+
[355, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
440
|
+
[384, 1, 2, 2, 1, 2, 1, 2, 4, 1, 2, 1, 2].freeze,
|
|
441
|
+
[354, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 1].freeze,
|
|
442
|
+
[355, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze,
|
|
443
|
+
[384, 2, 1, 1, 2, 3, 2, 2, 1, 2, 2, 1, 2].freeze,
|
|
444
|
+
[354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1].freeze,
|
|
445
|
+
[354, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1].freeze, # 2000
|
|
446
|
+
[384, 2, 2, 1, 4, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
447
|
+
[354, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze,
|
|
448
|
+
[355, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
449
|
+
[384, 1, 4, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze,
|
|
450
|
+
[354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze,
|
|
451
|
+
[385, 2, 1, 2, 1, 2, 1, 4, 2, 2, 1, 2, 2].freeze,
|
|
452
|
+
[354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2].freeze,
|
|
453
|
+
[354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2].freeze,
|
|
454
|
+
[384, 2, 2, 1, 1, 4, 1, 2, 1, 2, 1, 2, 2].freeze,
|
|
455
|
+
[354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
456
|
+
[354, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze,
|
|
457
|
+
[384, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 2, 1].freeze,
|
|
458
|
+
[355, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2].freeze,
|
|
459
|
+
[384, 1, 2, 1, 2, 1, 2, 1, 2, 4, 2, 1, 2].freeze,
|
|
460
|
+
[354, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1].freeze,
|
|
461
|
+
[355, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2].freeze,
|
|
462
|
+
[384, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 2, 2].freeze,
|
|
463
|
+
[354, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze,
|
|
464
|
+
[354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2].freeze,
|
|
465
|
+
[384, 1, 2, 2, 4, 2, 1, 1, 2, 1, 2, 1, 2].freeze,
|
|
466
|
+
[354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1].freeze,
|
|
467
|
+
[355, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2].freeze,
|
|
468
|
+
[384, 1, 4, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2].freeze,
|
|
469
|
+
[354, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze,
|
|
470
|
+
[384, 2, 1, 2, 1, 1, 4, 2, 1, 2, 2, 2, 1].freeze,
|
|
471
|
+
[354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1].freeze,
|
|
472
|
+
[354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze,
|
|
473
|
+
[384, 2, 2, 2, 1, 4, 1, 2, 1, 1, 2, 2, 1].freeze,
|
|
474
|
+
[355, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2].freeze,
|
|
475
|
+
[354, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1].freeze,
|
|
476
|
+
[384, 1, 2, 4, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze,
|
|
477
|
+
[355, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze,
|
|
478
|
+
[384, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 4, 2].freeze,
|
|
479
|
+
[354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2].freeze,
|
|
480
|
+
[354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2].freeze,
|
|
481
|
+
[384, 2, 2, 1, 2, 1, 5, 1, 1, 2, 1, 2, 2].freeze,
|
|
482
|
+
[354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
483
|
+
[354, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1].freeze,
|
|
484
|
+
[384, 2, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 1].freeze,
|
|
485
|
+
[355, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1].freeze,
|
|
486
|
+
[355, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze,
|
|
487
|
+
[384, 1, 4, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze,
|
|
488
|
+
[354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze,
|
|
489
|
+
[384, 2, 1, 2, 1, 1, 2, 3, 2, 1, 2, 2, 2].freeze,
|
|
490
|
+
[354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze,
|
|
491
|
+
[354, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
492
|
+
[384, 2, 1, 2, 2, 5, 1, 2, 1, 1, 2, 1, 2].freeze,
|
|
493
|
+
[354, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1].freeze,
|
|
494
|
+
[355, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze, # 2049
|
|
495
|
+
].freeze
|
|
496
|
+
|
|
343
497
|
MAX_YEAR_NUMBER = 150
|
|
344
498
|
|
|
345
|
-
# Given the region, CALENDAR_YEAR_INFO_MAP looks up the date
|
|
499
|
+
# Given the region, CALENDAR_YEAR_INFO_MAP looks up the date
|
|
346
500
|
# table and uses it in the calculation
|
|
347
501
|
CALENDAR_YEAR_INFO_MAP = {
|
|
348
502
|
kr: KOREAN_LUNAR_YEAR_INFO,
|
|
349
|
-
vi: VIETNAMESE_LUNAR_YEAR_INFO
|
|
503
|
+
vi: VIETNAMESE_LUNAR_YEAR_INFO,
|
|
504
|
+
hk: CHINESE_LUNAR_YEAR_INFO,
|
|
350
505
|
}.freeze
|
|
351
506
|
|
|
352
|
-
# Provides number of days per lunar month type. Lunar months
|
|
353
|
-
# can be either 29 or 30 days long (29.5 days, rounded up or down).
|
|
354
|
-
# Keys 3 - 6 provide data for intercalary (leap month) occurrences.
|
|
507
|
+
# Provides number of days per lunar month type. Lunar months
|
|
508
|
+
# can be either 29 or 30 days long (29.5 days, rounded up or down).
|
|
509
|
+
# Keys 3 - 6 provide data for intercalary (leap month) occurrences.
|
|
355
510
|
# Format: [TOTAL, NORMAL, LEAP]
|
|
356
511
|
LUNARDAYS_FOR_MONTHTYPE = {
|
|
357
512
|
1 => [29, 29, 0],
|
|
@@ -17,6 +17,14 @@ module Holidays
|
|
|
17
17
|
to_next_weekday(date)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def to_the_weekday_after(date)
|
|
21
|
+
to_monday_if_sunday(to_monday_if_sunday(date) + 1)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def to_the_second_weekday_after(date)
|
|
25
|
+
to_monday_if_sunday(to_the_weekday_after(date) + 1)
|
|
26
|
+
end
|
|
27
|
+
|
|
20
28
|
# Move Boxing Day if it falls on a weekend, leaving room for Christmas.
|
|
21
29
|
# Used as a callback function.
|
|
22
30
|
def to_weekday_if_boxing_weekend(date)
|
|
@@ -75,6 +83,11 @@ module Holidays
|
|
|
75
83
|
|
|
76
84
|
date
|
|
77
85
|
end
|
|
86
|
+
|
|
87
|
+
def to_previous_day_if_leap_year(date)
|
|
88
|
+
date -= 1 if ::Date.gregorian_leap?(date.year)
|
|
89
|
+
date
|
|
90
|
+
end
|
|
78
91
|
end
|
|
79
92
|
end
|
|
80
93
|
end
|
|
@@ -62,7 +62,7 @@ module Holidays
|
|
|
62
62
|
month_strings = generate_month_definition_strings(rules_by_month, custom_methods)
|
|
63
63
|
|
|
64
64
|
# Build the custom methods string
|
|
65
|
-
custom_method_string = ''
|
|
65
|
+
custom_method_string = +''
|
|
66
66
|
custom_methods.each do |key, code|
|
|
67
67
|
custom_method_string << @custom_method_source_decorator.call(code) + ",\n\n"
|
|
68
68
|
end
|
|
@@ -140,7 +140,7 @@ module Holidays
|
|
|
140
140
|
month_string = " #{month.to_s} => ["
|
|
141
141
|
rule_strings = []
|
|
142
142
|
rules.each do |rule|
|
|
143
|
-
string = '{'
|
|
143
|
+
string = +'{'
|
|
144
144
|
if rule[:mday]
|
|
145
145
|
string << ":mday => #{rule[:mday]}, "
|
|
146
146
|
end
|
|
@@ -21,7 +21,10 @@ module Holidays
|
|
|
21
21
|
"calculate_day_of_month(year, month, day, wday)" => day_of_month_calculator.method(:call).to_proc,
|
|
22
22
|
"to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year)" => weekend_modifier.method(:to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday).to_proc,
|
|
23
23
|
"to_tuesday_if_sunday_or_monday_if_saturday(date)" => weekend_modifier.method(:to_tuesday_if_sunday_or_monday_if_saturday).to_proc,
|
|
24
|
-
"lunar_to_solar(year, month, day, region)" => lunar_date.method(:to_solar).to_proc,
|
|
24
|
+
"lunar_to_solar(year, month, day, region)" => lunar_date.method(:to_solar).to_proc,
|
|
25
|
+
"to_the_weekday_after(date)" => weekend_modifier.method(:to_the_weekday_after).to_proc,
|
|
26
|
+
"to_the_second_weekday_after(date)" => weekend_modifier.method(:to_the_second_weekday_after).to_proc,
|
|
27
|
+
"to_previous_day_if_leap_year(date)" => weekend_modifier.method(:to_previous_day_if_leap_year).to_proc,
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
Factory::Definition.custom_methods_repository.add(global_methods)
|
data/lib/holidays/version.rb
CHANGED
data/test/defs/test_defs_bg.rb
CHANGED
|
@@ -11,13 +11,13 @@ class BgDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
|
11
11
|
|
|
12
12
|
assert_equal "Liberation Day", (Holidays.on(Date.civil(2015, 3, 3), [:bg_en])[0] || {})[:name]
|
|
13
13
|
|
|
14
|
-
assert_equal "Good Friday", (Holidays.on(Date.civil(2015,
|
|
14
|
+
assert_equal "Good Friday", (Holidays.on(Date.civil(2015, 4, 10), [:bg_en])[0] || {})[:name]
|
|
15
15
|
|
|
16
|
-
assert_equal "Holy Saturday", (Holidays.on(Date.civil(2015,
|
|
16
|
+
assert_equal "Holy Saturday", (Holidays.on(Date.civil(2015, 4, 11), [:bg_en])[0] || {})[:name]
|
|
17
17
|
|
|
18
|
-
assert_equal "Easter Sunday", (Holidays.on(Date.civil(2015,
|
|
18
|
+
assert_equal "Easter Sunday", (Holidays.on(Date.civil(2015, 4, 12), [:bg_en])[0] || {})[:name]
|
|
19
19
|
|
|
20
|
-
assert_equal "Easter Monday", (Holidays.on(Date.civil(2015,
|
|
20
|
+
assert_equal "Easter Monday", (Holidays.on(Date.civil(2015, 4, 13), [:bg_en])[0] || {})[:name]
|
|
21
21
|
|
|
22
22
|
assert_equal "Labour Day", (Holidays.on(Date.civil(2015, 5, 1), [:bg_en])[0] || {})[:name]
|
|
23
23
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
|
|
3
|
+
|
|
4
|
+
# This file is generated by the Ruby Holiday gem.
|
|
5
|
+
#
|
|
6
|
+
# Definitions loaded: definitions/cy.yaml
|
|
7
|
+
class CyDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
8
|
+
|
|
9
|
+
def test_cy
|
|
10
|
+
assert_equal "Πρωτοχρονιά", (Holidays.on(Date.civil(2011, 1, 1), [:cy], [:informal])[0] || {})[:name]
|
|
11
|
+
|
|
12
|
+
assert_equal "Θεοφάνεια", (Holidays.on(Date.civil(2011, 1, 6), [:cy], [:informal])[0] || {})[:name]
|
|
13
|
+
|
|
14
|
+
assert_equal "Μεγάλη Παρασκευή", (Holidays.on(Date.civil(2011, 4, 22), [:cy], [:informal])[0] || {})[:name]
|
|
15
|
+
|
|
16
|
+
assert_equal "Μεγάλο Σάββατο", (Holidays.on(Date.civil(1970, 4, 25), [:cy], [:informal])[0] || {})[:name]
|
|
17
|
+
|
|
18
|
+
assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(1985, 4, 14), [:cy], [:informal])[0] || {})[:name]
|
|
19
|
+
|
|
20
|
+
assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(2011, 4, 24), [:cy], [:informal])[0] || {})[:name]
|
|
21
|
+
|
|
22
|
+
assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(2027, 5, 2), [:cy], [:informal])[0] || {})[:name]
|
|
23
|
+
|
|
24
|
+
assert_equal "Δευτέρα του Πάσχα", (Holidays.on(Date.civil(2046, 4, 30), [:cy], [:informal])[0] || {})[:name]
|
|
25
|
+
|
|
26
|
+
assert_equal "Πρωτομαγιά", (Holidays.on(Date.civil(2011, 5, 1), [:cy], [:informal])[0] || {})[:name]
|
|
27
|
+
|
|
28
|
+
assert_equal "Αγίου Πνεύματος", (Holidays.on(Date.civil(2011, 6, 13), [:cy], [:informal])[0] || {})[:name]
|
|
29
|
+
|
|
30
|
+
assert_equal "Αγίου Πνεύματος", (Holidays.on(Date.civil(2012, 6, 4), [:cy], [:informal])[0] || {})[:name]
|
|
31
|
+
|
|
32
|
+
assert_equal "Καθαρά Δευτέρα", (Holidays.on(Date.civil(2011, 3, 7), [:cy], [:informal])[0] || {})[:name]
|
|
33
|
+
|
|
34
|
+
assert_equal "Καθαρά Δευτέρα", (Holidays.on(Date.civil(2012, 2, 27), [:cy], [:informal])[0] || {})[:name]
|
|
35
|
+
|
|
36
|
+
assert_equal "Χριστούγεννα", (Holidays.on(Date.civil(2011, 12, 25), [:cy], [:informal])[0] || {})[:name]
|
|
37
|
+
|
|
38
|
+
assert_equal "Δεύτερη ημέρα των Χριστουγέννων", (Holidays.on(Date.civil(2011, 12, 26), [:cy], [:informal])[0] || {})[:name]
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|