holidays 11.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ddbd4a71c58985797a9d23c0915ab057dcc6c33955dd376c4d6bf666ebaf162
4
- data.tar.gz: caff42a910a845239c211675f9f281d6eee616a701b890666638925ddf2bc4f5
3
+ metadata.gz: ecb3d48fdd2ac2ca954701f6835dc8a5176260ca0d1c39c539523dc28c9ed7f9
4
+ data.tar.gz: 3a0cee035b7bebdd3bb34a4bf938c3197911306a88d63b2099637f466357833b
5
5
  SHA512:
6
- metadata.gz: 35817afac8beb46dba118b1919092d278a00281e8ef82819dbc55217520af2b3ccf27f64e84412a34d7826c7cd17002af310f42bcf94eb5423218de70a115bf0
7
- data.tar.gz: 4bba40653e048451b4a02f1d360ba089c8211be3ce4d420f42b7f60ce57f82442ba1d77fe088978ec067af89506bf8aee71cfc0a1865e9534c16b6dea6c7f3c1
6
+ metadata.gz: '09bd24e6e1cd39da887cdd02705ba433a79ca9a83c820ed56047ffe72af747116a68f295205b228c9fad539ba6b850e248122e24c63256fe2368cc7a70152ab0'
7
+ data.tar.gz: c5189a7c4c2c08793abb53bca23477e91a8ecf8d38f16527a3bd7abb19eff55c907dce2ca4ab4179692bb2d389c8bd40229936fecad1cf5e341826e9b1c18ed8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
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
+
3
11
  ## 11.2.0
4
12
 
5
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.
@@ -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]}],
@@ -534,12 +536,15 @@ module Holidays
534
536
  {:mday => 8, :name => "Maria Geburt", :regions => [:li]},
535
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]},
536
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]},
537
541
  {:mday => 15, :name => "Sedembolestná Panna Mária", :regions => [:sk]},
538
542
  {:mday => 6, :name => "Unification Day", :regions => [:bg_en]},
539
543
  {:mday => 6, :name => "Ден на Съединението", :regions => [:bg_bg]},
540
544
  {:mday => 22, :name => "The Independence Day", :regions => [:bg_en]},
541
545
  {:mday => 22, :name => "Ден на Независимостта", :regions => [:bg_bg]}],
542
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]},
543
548
  {:mday => 18, :type => :informal, :name => "Konudagur", :regions => [:is]},
544
549
  {:mday => 2, :name => "Maria Lichtmess", :regions => [:li]},
545
550
  {:mday => 16, :name => "Valstybės atkūrimo diena", :regions => [:lt]},
@@ -606,6 +611,15 @@ end
606
611
  date
607
612
  },
608
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
+
609
623
  "is_sumardagurinn_fyrsti(year)" => Proc.new { |year|
610
624
  date = Date.civil(year,4,18)
611
625
  if date.wday < 4
@@ -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 => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Juneteenth National Independence Day", :regions => [:us]},
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
  },
@@ -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 => 15, :name => "Sedembolestná Panna Mária", :regions => [:sk]}],
24
- 11 => [{:mday => 1, :name => "Sviatok všetkých svätých", :regions => [:sk]}],
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 => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Juneteenth National Independence Day", :regions => [:us]},
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
- args = []
40
-
41
- if target_args.include?(:year)
42
- args << input[:year]
43
- end
44
-
45
- if target_args.include?(:month)
46
- args << input[:month]
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
@@ -1,3 +1,3 @@
1
1
  module Holidays
2
- VERSION = '11.2.0'
2
+ VERSION = '11.3.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holidays
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.2.0
4
+ version: 11.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dunae