holidays 11.1.0 → 11.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 +15 -0
- data/lib/generated_definitions/europe.rb +15 -0
- data/lib/generated_definitions/gb.rb +2 -1
- data/lib/generated_definitions/ie.rb +11 -1
- data/lib/generated_definitions/northamerica.rb +22 -1
- data/lib/generated_definitions/sg.rb +46 -4
- data/lib/generated_definitions/sk.rb +6 -2
- data/lib/generated_definitions/us.rb +22 -1
- data/lib/holidays/date_calculator/lunar_date.rb +1 -0
- data/lib/holidays/definition/context/function_processor.rb +11 -22
- data/lib/holidays/finder/context/search.rb +4 -1
- data/lib/holidays/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ecb3d48fdd2ac2ca954701f6835dc8a5176260ca0d1c39c539523dc28c9ed7f9
|
|
4
|
+
data.tar.gz: 3a0cee035b7bebdd3bb34a4bf938c3197911306a88d63b2099637f466357833b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '09bd24e6e1cd39da887cdd02705ba433a79ca9a83c820ed56047ffe72af747116a68f295205b228c9fad539ba6b850e248122e24c63256fe2368cc7a70152ab0'
|
|
7
|
+
data.tar.gz: c5189a7c4c2c08793abb53bca23477e91a8ecf8d38f16527a3bd7abb19eff55c907dce2ca4ab4179692bb2d389c8bd40229936fecad1cf5e341826e9b1c18ed8
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Ruby Holidays Gem CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 11.3.0
|
|
4
|
+
|
|
5
|
+
* Update to [v8.1.0 definitions](https://github.com/holidays/definitions/releases/tag/v8.1.0). Please see the changelog for the definition details.
|
|
6
|
+
* Pass a custom method's declared arguments to `observed` methods, and supply all custom method arguments in the order the definition declares them ([#433](https://github.com/holidays/holidays/issues/433)). Previously `observed` methods only ever received `date`, and arguments were supplied in a fixed order regardless of the declared order, so a definition declaring anything else bound values to the wrong parameters.
|
|
7
|
+
* Add `us_ut` Juneteenth observance, observed on June 19 when that is a Monday, the preceding Monday when June 19 is Tuesday through Friday, and the following Monday when it is a weekend. Callers querying `us_ut` with the `:observed` option will see a different date from the rest of `us`.
|
|
8
|
+
* Add `ie` St Brigid's Day, the first Monday in February or 1 February when that day is a Friday, a public holiday from 2023
|
|
9
|
+
* Restore `sk` Deň Ústavy Slovenskej republiky and Deň boja za slobodu a demokraciu, which remain state holidays in Slovak law. Both are formal up to the year each stopped being a day of rest, 2024 and 2025 respectively, and informal from then on, so they no longer appear in default results for those later years
|
|
10
|
+
|
|
11
|
+
## 11.2.0
|
|
12
|
+
|
|
13
|
+
* Update to [v8.0.2 definitions](https://github.com/holidays/definitions/releases/tag/v8.0.2). Please see the changelog for the definition details.
|
|
14
|
+
* Fix `sg` observed dates so Saturday holidays are no longer shifted back to Friday ([#488](https://github.com/holidays/holidays/issues/488)). New Year's Day, National Day and Christmas Day now follow the Ministry of Manpower rule that only a Sunday holiday gets a substitute. Callers using the `:observed` option will see these holidays return the Saturday date itself, and no longer see a substitute on the preceding Friday.
|
|
15
|
+
* Add `sg` Chinese New Year, Vesak Day, Hari Raya Puasa, Hari Raya Haji and Deepavali ([#351](https://github.com/holidays/holidays/issues/351))
|
|
16
|
+
* Add `gb_sct` bank holiday for 15 June 2026 to mark the World Cup
|
|
17
|
+
|
|
3
18
|
## 11.1.0
|
|
4
19
|
|
|
5
20
|
* Add `Holidays.region_names` and `Holidays.region_name(region)` to expose the English name of each region ([#160](https://github.com/holidays/holidays/issues/160)). Names are the ISO 3166 English short names added in [definitions #325](https://github.com/holidays/definitions/pull/325). `region_name` returns `nil` for an unknown region. `available_regions` is unchanged.
|
|
@@ -354,6 +354,8 @@ module Holidays
|
|
|
354
354
|
{:mday => 1, :name => "Dia de Todos-os-Santos", :regions => [:pt]},
|
|
355
355
|
{:mday => 30, :name => "Sfântul Apostol Andrei", :regions => [:ro]},
|
|
356
356
|
{:mday => 1, :name => "Sviatok všetkých svätých", :regions => [:sk]},
|
|
357
|
+
{:mday => 17, :year_ranges => { :until => 2024 },:name => "Deň boja za slobodu a demokraciu", :regions => [:sk]},
|
|
358
|
+
{:mday => 17, :year_ranges => { :from => 2025 },:type => :informal, :name => "Deň boja za slobodu a demokraciu", :regions => [:sk]},
|
|
357
359
|
{:mday => 1, :name => "dan spomina na mrtve", :regions => [:si]},
|
|
358
360
|
{:mday => 1, :name => "Revival Leader's Day", :regions => [:bg_en]},
|
|
359
361
|
{:mday => 1, :name => "Ден на Народните будители", :regions => [:bg_bg]}],
|
|
@@ -500,6 +502,7 @@ module Holidays
|
|
|
500
502
|
{:mday => 24, :name => "San Juan", :regions => [:es_ct, :es_vc]},
|
|
501
503
|
{:mday => 2, :year_ranges => { :limited => [2022] },:name => "Bank Holiday", :regions => [:gb]},
|
|
502
504
|
{:mday => 3, :year_ranges => { :limited => [2022] },:name => "Platinum Jubilee", :regions => [:gb]},
|
|
505
|
+
{:mday => 15, :year_ranges => { :limited => [2026] },:name => "World Cup Bank Holiday", :regions => [:gb_sct]},
|
|
503
506
|
{:mday => 22, :name => "Dan antifašističke borbe", :regions => [:hr]},
|
|
504
507
|
{:mday => 25, :year_ranges => { :until => 2019 },:name => "Dan državnosti", :regions => [:hr]},
|
|
505
508
|
{:wday => 1, :week => 1, :name => "June Bank Holiday", :regions => [:ie]},
|
|
@@ -533,12 +536,15 @@ module Holidays
|
|
|
533
536
|
{:mday => 8, :name => "Maria Geburt", :regions => [:li]},
|
|
534
537
|
{:mday => 24, :year_ranges => { :limited => [2018] },:name => "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena", :regions => [:lv]},
|
|
535
538
|
{:mday => 30, :type => :informal, :name => "Dzień Chłopaka", :regions => [:pl]},
|
|
539
|
+
{:mday => 1, :year_ranges => { :until => 2023 },:name => "Deň Ústavy Slovenskej republiky", :regions => [:sk]},
|
|
540
|
+
{:mday => 1, :year_ranges => { :from => 2024 },:type => :informal, :name => "Deň Ústavy Slovenskej republiky", :regions => [:sk]},
|
|
536
541
|
{:mday => 15, :name => "Sedembolestná Panna Mária", :regions => [:sk]},
|
|
537
542
|
{:mday => 6, :name => "Unification Day", :regions => [:bg_en]},
|
|
538
543
|
{:mday => 6, :name => "Ден на Съединението", :regions => [:bg_bg]},
|
|
539
544
|
{:mday => 22, :name => "The Independence Day", :regions => [:bg_en]},
|
|
540
545
|
{:mday => 22, :name => "Ден на Независимостта", :regions => [:bg_bg]}],
|
|
541
546
|
2 => [{:mday => 28, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Andalucía", :regions => [:es_an]},
|
|
547
|
+
{:function => "ie_st_brigids_day(year)", :function_arguments => [:year], :year_ranges => { :from => 2023 },:name => "St Brigid's Day", :regions => [:ie]},
|
|
542
548
|
{:mday => 18, :type => :informal, :name => "Konudagur", :regions => [:is]},
|
|
543
549
|
{:mday => 2, :name => "Maria Lichtmess", :regions => [:li]},
|
|
544
550
|
{:mday => 16, :name => "Valstybės atkūrimo diena", :regions => [:lt]},
|
|
@@ -605,6 +611,15 @@ end
|
|
|
605
611
|
date
|
|
606
612
|
},
|
|
607
613
|
|
|
614
|
+
"ie_st_brigids_day(year)" => Proc.new { |year|
|
|
615
|
+
date = Date.civil(year, 2, 1)
|
|
616
|
+
if date.wday == 5
|
|
617
|
+
date
|
|
618
|
+
else
|
|
619
|
+
date + ((1 - date.wday) % 7)
|
|
620
|
+
end
|
|
621
|
+
},
|
|
622
|
+
|
|
608
623
|
"is_sumardagurinn_fyrsti(year)" => Proc.new { |year|
|
|
609
624
|
date = Date.civil(year,4,18)
|
|
610
625
|
if date.wday < 4
|
|
@@ -28,7 +28,8 @@ module Holidays
|
|
|
28
28
|
{:wday => 1, :week => -1, :year_ranges => { :until => 2021 },:name => "Bank Holiday", :regions => [:gb]},
|
|
29
29
|
{:wday => 1, :week => -1, :year_ranges => { :from => 2023 },:name => "Bank Holiday", :regions => [:gb]}],
|
|
30
30
|
6 => [{:mday => 2, :year_ranges => { :limited => [2022] },:name => "Bank Holiday", :regions => [:gb]},
|
|
31
|
-
{:mday => 3, :year_ranges => { :limited => [2022] },:name => "Platinum Jubilee", :regions => [:gb]}
|
|
31
|
+
{:mday => 3, :year_ranges => { :limited => [2022] },:name => "Platinum Jubilee", :regions => [:gb]},
|
|
32
|
+
{:mday => 15, :year_ranges => { :limited => [2026] },:name => "World Cup Bank Holiday", :regions => [:gb_sct]}],
|
|
32
33
|
7 => [{:mday => 5, :name => "Tynwald Day", :regions => [:im, :gb_iom]},
|
|
33
34
|
{:mday => 12, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Battle of the Boyne", :regions => [:gb_nir]}],
|
|
34
35
|
8 => [{:wday => 1, :week => 1, :name => "Bank Holiday", :regions => [:gb_sct]},
|
|
@@ -14,6 +14,7 @@ module Holidays
|
|
|
14
14
|
{
|
|
15
15
|
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:ie]}],
|
|
16
16
|
1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ie]}],
|
|
17
|
+
2 => [{:function => "ie_st_brigids_day(year)", :function_arguments => [:year], :year_ranges => { :from => 2023 },:name => "St Brigid's Day", :regions => [:ie]}],
|
|
17
18
|
3 => [{:mday => 17, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Patrick's Day", :regions => [:ie]}],
|
|
18
19
|
5 => [{:wday => 1, :week => 1, :name => "May Day", :regions => [:ie]}],
|
|
19
20
|
6 => [{:wday => 1, :week => 1, :name => "June Bank Holiday", :regions => [:ie]}],
|
|
@@ -26,7 +27,16 @@ module Holidays
|
|
|
26
27
|
|
|
27
28
|
def self.custom_methods
|
|
28
29
|
{
|
|
29
|
-
|
|
30
|
+
"ie_st_brigids_day(year)" => Proc.new { |year|
|
|
31
|
+
date = Date.civil(year, 2, 1)
|
|
32
|
+
if date.wday == 5
|
|
33
|
+
date
|
|
34
|
+
else
|
|
35
|
+
date + ((1 - date.wday) % 7)
|
|
36
|
+
end
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
|
|
30
40
|
}
|
|
31
41
|
end
|
|
32
42
|
end
|
|
@@ -75,7 +75,7 @@ module Holidays
|
|
|
75
75
|
{:wday => 1, :week => 1, :name => "Jefferson Davis' Birthday", :regions => [:us_al]},
|
|
76
76
|
{:mday => 3, :name => "Birthday of Jefferson Davis", :regions => [:us_fl]},
|
|
77
77
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "King Kamehameha I Day", :regions => [:us_hi]},
|
|
78
|
-
{:mday => 19, :year_ranges => { :from => 2021 },:observed => "
|
|
78
|
+
{:mday => 19, :year_ranges => { :from => 2021 },:observed => "juneteenth_national_independence_day(region, date)", :observed_arguments => [:region, :date], :name => "Juneteenth National Independence Day", :regions => [:us]},
|
|
79
79
|
{:mday => 19, :name => "Emancipation Day in Texas", :regions => [:us_tx]},
|
|
80
80
|
{:mday => 20, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "West Virginia Day", :regions => [:us_wv]},
|
|
81
81
|
{:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}],
|
|
@@ -213,6 +213,27 @@ king_day = Date.civil(year, month, day_of_holiday)
|
|
|
213
213
|
king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 }
|
|
214
214
|
},
|
|
215
215
|
|
|
216
|
+
"juneteenth_national_independence_day(region, date)" => Proc.new { |region, date|
|
|
217
|
+
if region == :us_ut
|
|
218
|
+
case date.wday
|
|
219
|
+
when 1
|
|
220
|
+
date
|
|
221
|
+
when 2,3,4,5
|
|
222
|
+
date - (date.wday - 1)
|
|
223
|
+
when 6
|
|
224
|
+
date + 2
|
|
225
|
+
when 0
|
|
226
|
+
date + 1
|
|
227
|
+
end
|
|
228
|
+
elsif date.wday == 0
|
|
229
|
+
date + 1
|
|
230
|
+
elsif date.wday == 6
|
|
231
|
+
date - 1
|
|
232
|
+
else
|
|
233
|
+
date
|
|
234
|
+
end
|
|
235
|
+
},
|
|
236
|
+
|
|
216
237
|
"election_day(year)" => Proc.new { |year|
|
|
217
238
|
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
218
239
|
},
|
|
@@ -13,12 +13,54 @@ module Holidays
|
|
|
13
13
|
def self.holidays_by_month
|
|
14
14
|
{
|
|
15
15
|
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:sg]}],
|
|
16
|
-
1 => [{:mday => 1, :observed => "
|
|
16
|
+
1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:sg]},
|
|
17
|
+
{:mday => 1, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Chinese New Year", :regions => [:sg]},
|
|
18
|
+
{:mday => 2, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Chinese New Year", :regions => [:sg]}],
|
|
17
19
|
2 => [{:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:sg]},
|
|
18
20
|
{:mday => 15, :type => :informal, :name => "Total Defence Day", :regions => [:sg]}],
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
3 => [{:mday => 31, :year_ranges => { :limited => [2025] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
22
|
+
{:mday => 21, :year_ranges => { :limited => [2026] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]}],
|
|
23
|
+
4 => [{:mday => 22, :year_ranges => { :limited => [2023] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
24
|
+
{:mday => 10, :year_ranges => { :limited => [2024] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]}],
|
|
25
|
+
5 => [{:mday => 1, :name => "Labour Day", :regions => [:sg]},
|
|
26
|
+
{:mday => 10, :year_ranges => { :limited => [2017] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
27
|
+
{:mday => 29, :year_ranges => { :limited => [2018] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
28
|
+
{:mday => 19, :year_ranges => { :limited => [2019] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
29
|
+
{:mday => 7, :year_ranges => { :limited => [2020] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
30
|
+
{:mday => 26, :year_ranges => { :limited => [2021] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
31
|
+
{:mday => 15, :year_ranges => { :limited => [2022] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
32
|
+
{:mday => 22, :year_ranges => { :limited => [2024] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
33
|
+
{:mday => 12, :year_ranges => { :limited => [2025] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
34
|
+
{:mday => 31, :year_ranges => { :limited => [2026] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
35
|
+
{:mday => 24, :year_ranges => { :limited => [2020] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
36
|
+
{:mday => 13, :year_ranges => { :limited => [2021] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
37
|
+
{:mday => 3, :year_ranges => { :limited => [2022] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
38
|
+
{:mday => 27, :year_ranges => { :limited => [2026] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]}],
|
|
39
|
+
6 => [{:mday => 2, :year_ranges => { :limited => [2023] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Vesak Day", :regions => [:sg]},
|
|
40
|
+
{:mday => 25, :year_ranges => { :limited => [2017] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
41
|
+
{:mday => 15, :year_ranges => { :limited => [2018] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
42
|
+
{:mday => 5, :year_ranges => { :limited => [2019] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Puasa", :regions => [:sg]},
|
|
43
|
+
{:mday => 29, :year_ranges => { :limited => [2023] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]},
|
|
44
|
+
{:mday => 17, :year_ranges => { :limited => [2024] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]},
|
|
45
|
+
{:mday => 7, :year_ranges => { :limited => [2025] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]}],
|
|
46
|
+
7 => [{:mday => 31, :year_ranges => { :limited => [2020] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]},
|
|
47
|
+
{:mday => 20, :year_ranges => { :limited => [2021] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]},
|
|
48
|
+
{:mday => 10, :year_ranges => { :limited => [2022] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]}],
|
|
49
|
+
8 => [{:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "National Day", :regions => [:sg]},
|
|
50
|
+
{:mday => 22, :year_ranges => { :limited => [2018] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]},
|
|
51
|
+
{:mday => 11, :year_ranges => { :limited => [2019] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]}],
|
|
52
|
+
9 => [{:mday => 1, :year_ranges => { :limited => [2017] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hari Raya Haji", :regions => [:sg]}],
|
|
53
|
+
10 => [{:mday => 18, :year_ranges => { :limited => [2017] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
54
|
+
{:mday => 27, :year_ranges => { :limited => [2019] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
55
|
+
{:mday => 24, :year_ranges => { :limited => [2022] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
56
|
+
{:mday => 31, :year_ranges => { :limited => [2024] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
57
|
+
{:mday => 20, :year_ranges => { :limited => [2025] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]}],
|
|
58
|
+
11 => [{:mday => 6, :year_ranges => { :limited => [2018] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
59
|
+
{:mday => 14, :year_ranges => { :limited => [2020] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
60
|
+
{:mday => 4, :year_ranges => { :limited => [2021] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
61
|
+
{:mday => 12, :year_ranges => { :limited => [2023] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]},
|
|
62
|
+
{:mday => 8, :year_ranges => { :limited => [2026] },:observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Deepavali", :regions => [:sg]}],
|
|
63
|
+
12 => [{:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:sg]}]
|
|
22
64
|
}
|
|
23
65
|
end
|
|
24
66
|
|
|
@@ -20,8 +20,12 @@ 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
|
-
|
|
23
|
+
9 => [{:mday => 1, :year_ranges => { :until => 2023 },:name => "Deň Ústavy Slovenskej republiky", :regions => [:sk]},
|
|
24
|
+
{:mday => 1, :year_ranges => { :from => 2024 },:type => :informal, :name => "Deň Ústavy Slovenskej republiky", :regions => [:sk]},
|
|
25
|
+
{:mday => 15, :name => "Sedembolestná Panna Mária", :regions => [:sk]}],
|
|
26
|
+
11 => [{:mday => 1, :name => "Sviatok všetkých svätých", :regions => [:sk]},
|
|
27
|
+
{:mday => 17, :year_ranges => { :until => 2024 },:name => "Deň boja za slobodu a demokraciu", :regions => [:sk]},
|
|
28
|
+
{:mday => 17, :year_ranges => { :from => 2025 },:type => :informal, :name => "Deň boja za slobodu a demokraciu", :regions => [:sk]}],
|
|
25
29
|
12 => [{:mday => 24, :name => "Štedrý deň", :regions => [:sk]},
|
|
26
30
|
{:mday => 25, :name => "1. sviatok vianočný", :regions => [:sk]},
|
|
27
31
|
{:mday => 26, :name => "2. sviatok vianočný", :regions => [:sk]}]
|
|
@@ -53,7 +53,7 @@ module Holidays
|
|
|
53
53
|
6 => [{:wday => 1, :week => 1, :name => "Jefferson Davis' Birthday", :regions => [:us_al]},
|
|
54
54
|
{:mday => 3, :name => "Birthday of Jefferson Davis", :regions => [:us_fl]},
|
|
55
55
|
{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "King Kamehameha I Day", :regions => [:us_hi]},
|
|
56
|
-
{:mday => 19, :year_ranges => { :from => 2021 },:observed => "
|
|
56
|
+
{:mday => 19, :year_ranges => { :from => 2021 },:observed => "juneteenth_national_independence_day(region, date)", :observed_arguments => [:region, :date], :name => "Juneteenth National Independence Day", :regions => [:us]},
|
|
57
57
|
{:mday => 19, :name => "Emancipation Day in Texas", :regions => [:us_tx]},
|
|
58
58
|
{:mday => 20, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "West Virginia Day", :regions => [:us_wv]},
|
|
59
59
|
{:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}],
|
|
@@ -137,6 +137,27 @@ king_day = Date.civil(year, month, day_of_holiday)
|
|
|
137
137
|
king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 }
|
|
138
138
|
},
|
|
139
139
|
|
|
140
|
+
"juneteenth_national_independence_day(region, date)" => Proc.new { |region, date|
|
|
141
|
+
if region == :us_ut
|
|
142
|
+
case date.wday
|
|
143
|
+
when 1
|
|
144
|
+
date
|
|
145
|
+
when 2,3,4,5
|
|
146
|
+
date - (date.wday - 1)
|
|
147
|
+
when 6
|
|
148
|
+
date + 2
|
|
149
|
+
when 0
|
|
150
|
+
date + 1
|
|
151
|
+
end
|
|
152
|
+
elsif date.wday == 0
|
|
153
|
+
date + 1
|
|
154
|
+
elsif date.wday == 6
|
|
155
|
+
date - 1
|
|
156
|
+
else
|
|
157
|
+
date
|
|
158
|
+
end
|
|
159
|
+
},
|
|
160
|
+
|
|
140
161
|
"election_day(year)" => Proc.new { |year|
|
|
141
162
|
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
|
|
142
163
|
},
|
|
@@ -35,30 +35,19 @@ module Holidays
|
|
|
35
35
|
raise ArgumentError if desired_func_args.include?(:region) && !input[:region].is_a?(Symbol)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
# Arguments are supplied in the order the definition declares them. The proc
|
|
39
|
+
# is built with that same declared order, so anything else silently binds
|
|
40
|
+
# values to the wrong parameters.
|
|
38
41
|
def parse_arguments(input, target_args)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
if target_args.include?(:day)
|
|
50
|
-
args << input[:day]
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
if target_args.include?(:date)
|
|
54
|
-
args << Date.civil(input[:year], input[:month], input[:day])
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
if target_args.include?(:region)
|
|
58
|
-
args << input[:region]
|
|
42
|
+
target_args.map do |arg|
|
|
43
|
+
case arg
|
|
44
|
+
when :year then input[:year]
|
|
45
|
+
when :month then input[:month]
|
|
46
|
+
when :day then input[:day]
|
|
47
|
+
when :date then Date.civil(input[:year], input[:month], input[:day])
|
|
48
|
+
when :region then input[:region]
|
|
49
|
+
end
|
|
59
50
|
end
|
|
60
|
-
|
|
61
|
-
args
|
|
62
51
|
end
|
|
63
52
|
|
|
64
53
|
def calculate(input, id, args, modifier)
|
|
@@ -120,11 +120,14 @@ module Holidays
|
|
|
120
120
|
}
|
|
121
121
|
end
|
|
122
122
|
|
|
123
|
+
# Observed methods default to taking only a date, but they may declare
|
|
124
|
+
# additional arguments such as :region so that a single definition shared
|
|
125
|
+
# across regions can observe differently in one of them.
|
|
123
126
|
def build_observed_date(date, regions, h)
|
|
124
127
|
@custom_method_processor.call(
|
|
125
128
|
build_custom_method_input(date.year, date.month, date.day, regions),
|
|
126
129
|
h[:observed],
|
|
127
|
-
[:date],
|
|
130
|
+
h[:observed_arguments] || [:date],
|
|
128
131
|
)
|
|
129
132
|
end
|
|
130
133
|
end
|
data/lib/holidays/version.rb
CHANGED