holidays 9.2.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +38 -2
- data/lib/generated_definitions/au.rb +16 -42
- data/lib/generated_definitions/europe.rb +2 -10
- data/lib/generated_definitions/lu.rb +1 -1
- data/lib/generated_definitions/nz.rb +9 -1
- data/lib/generated_definitions/pl.rb +3 -11
- data/lib/holidays/definition/context/function_processor.rb +4 -5
- data/lib/holidays/definition/context/generator.rb +3 -1
- data/lib/holidays/version.rb +1 -1
- metadata +3 -313
- data/.github/workflows/changelog-check.yml +0 -47
- data/.github/workflows/release.yml +0 -46
- data/.github/workflows/ruby.yml +0 -26
- data/.gitmodules +0 -3
- data/CODE_OF_CONDUCT.md +0 -74
- data/Gemfile +0 -8
- data/Makefile +0 -60
- data/Rakefile +0 -137
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/doc/CONTRIBUTING.md +0 -72
- data/doc/MAINTAINERS.md +0 -79
- data/doc/REFERENCES +0 -19
- data/holidays.gemspec +0 -31
- data/test/coverage_report.rb +0 -24
- data/test/data/test_custom_year_range_holiday_defs.yaml +0 -31
- data/test/data/test_date_transform_conflict_region_1.yaml +0 -14
- data/test/data/test_date_transform_conflict_region_2.yaml +0 -14
- data/test/data/test_invalid_region.rb +0 -15
- data/test/data/test_region.rb +0 -15
- data/test/data/test_single_custom_holiday_defs.yaml +0 -12
- data/test/data/test_single_custom_holiday_with_custom_procs.yaml +0 -28
- data/test/defs/test_defs_ar.rb +0 -69
- data/test/defs/test_defs_at.rb +0 -31
- data/test/defs/test_defs_au.rb +0 -233
- data/test/defs/test_defs_be_fr.rb +0 -45
- data/test/defs/test_defs_be_nl.rb +0 -45
- data/test/defs/test_defs_bg.rb +0 -41
- data/test/defs/test_defs_br.rb +0 -49
- data/test/defs/test_defs_ca.rb +0 -289
- data/test/defs/test_defs_ch.rb +0 -51
- data/test/defs/test_defs_cl.rb +0 -69
- data/test/defs/test_defs_co.rb +0 -113
- data/test/defs/test_defs_cr.rb +0 -29
- data/test/defs/test_defs_cy.rb +0 -41
- data/test/defs/test_defs_cz.rb +0 -37
- data/test/defs/test_defs_de.rb +0 -91
- data/test/defs/test_defs_dk.rb +0 -47
- data/test/defs/test_defs_ecbtarget.rb +0 -27
- data/test/defs/test_defs_ee.rb +0 -41
- data/test/defs/test_defs_es.rb +0 -137
- data/test/defs/test_defs_europe.rb +0 -1530
- data/test/defs/test_defs_fed_ex.rb +0 -24
- data/test/defs/test_defs_federalreserve.rb +0 -119
- data/test/defs/test_defs_federalreservebanks.rb +0 -251
- data/test/defs/test_defs_fedex.rb +0 -31
- data/test/defs/test_defs_fi.rb +0 -59
- data/test/defs/test_defs_fr.rb +0 -43
- data/test/defs/test_defs_gb.rb +0 -163
- data/test/defs/test_defs_ge.rb +0 -53
- data/test/defs/test_defs_gr.rb +0 -41
- data/test/defs/test_defs_hk.rb +0 -93
- data/test/defs/test_defs_hr.rb +0 -45
- data/test/defs/test_defs_hu.rb +0 -47
- data/test/defs/test_defs_ie.rb +0 -53
- data/test/defs/test_defs_il.rb +0 -35
- data/test/defs/test_defs_in.rb +0 -94
- data/test/defs/test_defs_is.rb +0 -51
- data/test/defs/test_defs_it.rb +0 -57
- data/test/defs/test_defs_jp.rb +0 -159
- data/test/defs/test_defs_ke.rb +0 -31
- data/test/defs/test_defs_kr.rb +0 -37
- data/test/defs/test_defs_kz.rb +0 -39
- data/test/defs/test_defs_li.rb +0 -35
- data/test/defs/test_defs_lt.rb +0 -65
- data/test/defs/test_defs_lu.rb +0 -35
- data/test/defs/test_defs_lv.rb +0 -98
- data/test/defs/test_defs_ma.rb +0 -29
- data/test/defs/test_defs_mc.rb +0 -43
- data/test/defs/test_defs_mt_en.rb +0 -41
- data/test/defs/test_defs_mt_mt.rb +0 -41
- data/test/defs/test_defs_mx.rb +0 -49
- data/test/defs/test_defs_my.rb +0 -23
- data/test/defs/test_defs_nerc.rb +0 -29
- data/test/defs/test_defs_ng.rb +0 -29
- data/test/defs/test_defs_nl.rb +0 -33
- data/test/defs/test_defs_no.rb +0 -43
- data/test/defs/test_defs_northamerica.rb +0 -679
- data/test/defs/test_defs_nyse.rb +0 -46
- data/test/defs/test_defs_nz.rb +0 -67
- data/test/defs/test_defs_pe.rb +0 -47
- data/test/defs/test_defs_ph.rb +0 -29
- data/test/defs/test_defs_pl.rb +0 -229
- data/test/defs/test_defs_pt.rb +0 -47
- data/test/defs/test_defs_ro.rb +0 -69
- data/test/defs/test_defs_rs_cyrl.rb +0 -46
- data/test/defs/test_defs_rs_la.rb +0 -46
- data/test/defs/test_defs_ru.rb +0 -34
- data/test/defs/test_defs_scandinavia.rb +0 -215
- data/test/defs/test_defs_se.rb +0 -59
- data/test/defs/test_defs_sg.rb +0 -25
- data/test/defs/test_defs_si.rb +0 -105
- data/test/defs/test_defs_sk.rb +0 -37
- data/test/defs/test_defs_southamerica.rb +0 -327
- data/test/defs/test_defs_th.rb +0 -33
- data/test/defs/test_defs_tn.rb +0 -27
- data/test/defs/test_defs_tr.rb +0 -60
- data/test/defs/test_defs_tsx.rb +0 -70
- data/test/defs/test_defs_ua.rb +0 -41
- data/test/defs/test_defs_unitednations.rb +0 -11
- data/test/defs/test_defs_ups.rb +0 -31
- data/test/defs/test_defs_us.rb +0 -399
- data/test/defs/test_defs_ve.rb +0 -35
- data/test/defs/test_defs_vi.rb +0 -22
- data/test/defs/test_defs_za.rb +0 -35
- data/test/e2e/README.md +0 -52
- data/test/e2e/data/test_multiple_regions_with_conflicts_region_1.yaml +0 -38
- data/test/e2e/data/test_multiple_regions_with_conflicts_region_2.yaml +0 -38
- data/test/e2e/data/test_multiple_regions_with_conflicts_region_3.yaml +0 -38
- data/test/e2e/test_all_regions.rb +0 -49
- data/test/e2e/test_any_holidays_during_work_week.rb +0 -90
- data/test/e2e/test_holidays.rb +0 -244
- data/test/e2e/test_holidays_between.rb +0 -87
- data/test/e2e/test_multiple_regions.rb +0 -71
- data/test/e2e/test_multiple_regions_with_conflict.rb +0 -228
- data/test/e2e/test_nonstandard_regions.rb +0 -25
- data/test/holidays/core_extensions/test_date.rb +0 -122
- data/test/holidays/core_extensions/test_date_time.rb +0 -60
- data/test/holidays/date_calculator/test_day_of_month.rb +0 -27
- data/test/holidays/date_calculator/test_easter_gregorian.rb +0 -30
- data/test/holidays/date_calculator/test_easter_julian.rb +0 -36
- data/test/holidays/date_calculator/test_lunar_date.rb +0 -89
- data/test/holidays/date_calculator/test_weekend_modifier.rb +0 -54
- data/test/holidays/definition/context/test_function_processor.rb +0 -199
- data/test/holidays/definition/context/test_generator.rb +0 -226
- data/test/holidays/definition/context/test_load.rb +0 -37
- data/test/holidays/definition/context/test_merger.rb +0 -25
- data/test/holidays/definition/decorator/test_custom_method_proc.rb +0 -113
- data/test/holidays/definition/decorator/test_custom_method_source.rb +0 -96
- data/test/holidays/definition/decorator/test_test.rb +0 -123
- data/test/holidays/definition/generator/test_module.rb +0 -268
- data/test/holidays/definition/generator/test_regions.rb +0 -97
- data/test/holidays/definition/generator/test_test.rb +0 -113
- data/test/holidays/definition/parser/test_custom_method.rb +0 -79
- data/test/holidays/definition/parser/test_test.rb +0 -142
- data/test/holidays/definition/repository/test_cache.rb +0 -123
- data/test/holidays/definition/repository/test_custom_methods.rb +0 -43
- data/test/holidays/definition/repository/test_holidays_by_month.rb +0 -275
- data/test/holidays/definition/repository/test_proc_result_cache.rb +0 -91
- data/test/holidays/definition/repository/test_regions.rb +0 -104
- data/test/holidays/definition/validator/test_custom_method.rb +0 -94
- data/test/holidays/definition/validator/test_region.rb +0 -54
- data/test/holidays/definition/validator/test_test.rb +0 -60
- data/test/holidays/finder/context/test_between.rb +0 -172
- data/test/holidays/finder/context/test_dates_driver_builder.rb +0 -91
- data/test/holidays/finder/context/test_next_holiday.rb +0 -156
- data/test/holidays/finder/context/test_parse_options.rb +0 -141
- data/test/holidays/finder/context/test_search.rb +0 -290
- data/test/holidays/finder/context/test_year_holiday.rb +0 -202
- data/test/holidays/finder/rules/test_in_region.rb +0 -42
- data/test/holidays/finder/rules/test_year_range.rb +0 -166
- data/test/integration/README.md +0 -48
- data/test/integration/data/test_custom_govt_holiday_defs.yaml +0 -5
- data/test/integration/data/test_custom_informal_holidays_defs.yaml +0 -11
- data/test/integration/data/test_multiple_custom_holiday_defs.yaml +0 -12
- data/test/integration/test_custom_holidays.rb +0 -41
- data/test/integration/test_custom_informal_holidays.rb +0 -15
- data/test/integration/test_custom_year_range_holidays.rb +0 -35
- data/test/smoke/README.md +0 -31
- data/test/smoke/test_available_regions.rb +0 -18
- data/test/smoke/test_smoke.rb +0 -74
- data/test/test_helper.rb +0 -37
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4046bc784338ea2145744c92c8e288a4fddf9aad2ad072a9f82718644d5486bf
|
|
4
|
+
data.tar.gz: a4b5b4ebba6f915bdf4fa9293cc3a2dc57d3206377b22693473372fdcecfe540
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6081748d62b3e64344ed7b70d8a966c46c6608d3e459a89946ab73f029379589e3184177323b76b6c872118b3609372ac82dfe448f2fd13eca80e746f473e827
|
|
7
|
+
data.tar.gz: d45a5c3020248e82fc40d73c12753e8eb85c7ef70c4a8569f59c8e069da8b7ec76ca1e449cbbb9100bea2e91354c6223f8f9a93a1365f2795e8029b97322fee0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Ruby Holidays Gem CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 10.0.0
|
|
4
|
+
|
|
5
|
+
* Drop support for Ruby 3.2. Supported versions are now 3.3, 3.4, 4.0, and ruby-head.
|
|
6
|
+
* Update to [v7.0.0 definitions](https://github.com/holidays/definitions/releases/tag/v7.0.0). Please see the changelog for the definition details.
|
|
7
|
+
* Bump tested JRuby from 10.0.4.0 to 10.0.5.0
|
|
8
|
+
* Raise an `ArgumentError` during definition parsing when a `function` or `observed` rule references an unknown method ([#333](https://github.com/holidays/holidays/issues/333))
|
|
9
|
+
* Fix bug ([#352](https://github.com/holidays/holidays/issues/352)) where holidays with the same name and region that differed only by their function modifier were merged into a single entry, dropping one of the dates
|
|
10
|
+
* Document that `tests` stanzas in custom definition files loaded via `load_custom` are not run at runtime ([#304](https://github.com/holidays/holidays/issues/304))
|
|
11
|
+
|
|
3
12
|
## 9.2.0
|
|
4
13
|
|
|
5
14
|
* Update to [v6.1.1 definitions](https://github.com/holidays/definitions/releases/tag/v6.1.1). Please see the changelog for the definition details.
|
data/README.md
CHANGED
|
@@ -4,6 +4,8 @@ Functionality to deal with holidays in Ruby.
|
|
|
4
4
|
|
|
5
5
|
Extends Ruby's built-in Date and Time classes and supports custom holiday definition lists.
|
|
6
6
|
|
|
7
|
+
All holiday definitions are maintained in the [holidays/definitions](https://github.com/holidays/definitions) repository. By default this gem returns statutory (formally government-defined) holidays. Culturally recognized but non-statutory holidays (such as Valentine's Day) are available via the `:informal` option. See the [definitions syntax guide](https://github.com/holidays/definitions/blob/master/doc/SYNTAX.md#formalinformal) for details on how holidays are classified.
|
|
8
|
+
|
|
7
9
|
## Installation
|
|
8
10
|
|
|
9
11
|
```
|
|
@@ -14,11 +16,10 @@ gem install holidays
|
|
|
14
16
|
|
|
15
17
|
This gem is tested with the following ruby versions:
|
|
16
18
|
|
|
17
|
-
* 3.2
|
|
18
19
|
* 3.3
|
|
19
20
|
* 3.4
|
|
20
21
|
* 4.0
|
|
21
|
-
* JRuby 10.0.
|
|
22
|
+
* JRuby 10.0.5.0
|
|
22
23
|
|
|
23
24
|
## Semver
|
|
24
25
|
|
|
@@ -65,6 +66,35 @@ You can leave off 'regions' to get holidays for any region in our [definitions](
|
|
|
65
66
|
]
|
|
66
67
|
```
|
|
67
68
|
|
|
69
|
+
#### Wildcard regions
|
|
70
|
+
|
|
71
|
+
A region ending in an underscore (e.g. `:au_`, `:ca_`) is a *wildcard*. It matches the
|
|
72
|
+
parent country region **and all of its sub-regions** in a single call:
|
|
73
|
+
|
|
74
|
+
```ruby
|
|
75
|
+
Holidays.on(Date.new(2017, 3, 13), :au_)
|
|
76
|
+
=> [{:name=>"Eight Hours Day", :regions=>[:au_tas],...},
|
|
77
|
+
{:name=>"Labour Day", :regions=>[:au_vic],...},
|
|
78
|
+
{:name=>"March Public Holiday", :regions=>[:au_sa],...},
|
|
79
|
+
{:name=>"Canberra Day", :regions=>[:au_act],...}]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The same date queried with the plain `:au` region returns nothing, because none of
|
|
83
|
+
those holidays are observed nation-wide:
|
|
84
|
+
|
|
85
|
+
```ruby
|
|
86
|
+
Holidays.on(Date.new(2017, 3, 13), :au)
|
|
87
|
+
=> []
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Use a wildcard when you want "this country and every sub-region it defines" without
|
|
91
|
+
listing each sub-region explicitly.
|
|
92
|
+
|
|
93
|
+
Note that a wildcard always collapses to the **top-level** country region. The portion
|
|
94
|
+
between the country prefix and the trailing underscore is ignored, so `:au_vic_` behaves
|
|
95
|
+
identically to `:au_` (it loads every Australian sub-region, not just Victoria's). There
|
|
96
|
+
is currently no way to wildcard-match only the children of a sub-region.
|
|
97
|
+
|
|
68
98
|
#### Checking a date range
|
|
69
99
|
|
|
70
100
|
Get all holidays during the month of July 2008 in Canada and the US:
|
|
@@ -236,6 +266,12 @@ Holidays.load_custom(
|
|
|
236
266
|
)
|
|
237
267
|
```
|
|
238
268
|
|
|
269
|
+
Note that any `tests:` stanzas in a custom definition file are ignored by
|
|
270
|
+
`load_custom`. Tests are only executed at build time for definitions contributed
|
|
271
|
+
to the [definitions repository](https://github.com/holidays/definitions), where
|
|
272
|
+
`rake generate` turns them into the test suite. There is no runtime mechanism to
|
|
273
|
+
run the tests embedded in a custom file loaded on the fly.
|
|
274
|
+
|
|
239
275
|
## Extending Ruby's Date and Time classes
|
|
240
276
|
|
|
241
277
|
### Date
|
|
@@ -24,19 +24,20 @@ module Holidays
|
|
|
24
24
|
3 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_wa]},
|
|
25
25
|
{:wday => 1, :week => 2, :name => "Eight Hours Day", :regions => [:au_tas]},
|
|
26
26
|
{:wday => 1, :week => 2, :name => "Labour Day", :regions => [:au_vic]},
|
|
27
|
-
{:function => "march_pub_hol_sa(year)", :function_arguments => [:year], :name => "March Public Holiday", :regions => [:au_sa]},
|
|
27
|
+
{:function => "march_pub_hol_sa(year)", :function_arguments => [:year], :year_ranges => { :from => 2006 },:name => "March Public Holiday", :regions => [:au_sa]},
|
|
28
28
|
{:wday => 1, :week => 2, :name => "Canberra Day", :regions => [:au_act]}],
|
|
29
29
|
4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:au, :au_vic]},
|
|
30
30
|
{:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:au_qld, :au_nt, :au_act, :au_sa]},
|
|
31
31
|
{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:au_wa]}],
|
|
32
|
-
5 => [{:function => "qld_labour_day_may(year)", :function_arguments => [:year], :name => "Labour Day", :regions => [:au_qld]},
|
|
32
|
+
5 => [{:function => "qld_labour_day_may(year)", :function_arguments => [:year], :year_ranges => { :until => 2012 },:name => "Labour Day", :regions => [:au_qld]},
|
|
33
|
+
{:function => "qld_labour_day_may(year)", :function_arguments => [:year], :year_ranges => { :from => 2016 },:name => "Labour Day", :regions => [:au_qld]},
|
|
33
34
|
{:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]},
|
|
34
|
-
{:function => "may_pub_hol_sa(year)", :function_arguments => [:year], :name => "May Public Holiday", :regions => [:au_sa]},
|
|
35
|
+
{:function => "may_pub_hol_sa(year)", :function_arguments => [:year], :year_ranges => { :until => 2005 },:name => "May Public Holiday", :regions => [:au_sa]},
|
|
35
36
|
{:mday => 27, :function => "to_nearest_monday_after(date)", :function_arguments => [:date], :year_ranges => { :from => 2018 },:name => "Reconciliation Day", :regions => [:au_act]}],
|
|
36
37
|
6 => [{:wday => 1, :week => 1, :name => "Western Australia Day", :regions => [:au_wa]},
|
|
37
38
|
{:wday => 1, :week => 2, :year_ranges => { :until => 2022 },:name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]},
|
|
38
39
|
{:wday => 1, :week => 2, :year_ranges => { :from => 2023 },:name => "King's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]},
|
|
39
|
-
{:function => "qld_queens_birthday_june(year)", :function_arguments => [:year], :name => "Queen's Birthday", :regions => [:au_qld]},
|
|
40
|
+
{:function => "qld_queens_birthday_june(year)", :function_arguments => [:year], :year_ranges => { :until => 2015 },: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 => [{:function => "qld_brisbane_ekka_holiday(year)", :function_arguments => [:year], :name => "Ekka", :regions => [:au_qld_brisbane]}],
|
|
@@ -46,11 +47,12 @@ module Holidays
|
|
|
46
47
|
{:wday => 1, :week => -1, :year_ranges => { :until => 2017 },:name => "Family & Community Day", :regions => [:au_act]}],
|
|
47
48
|
10 => [{:function => "afl_grand_final(year)", :function_arguments => [:year], :name => "Friday before the AFL Grand Final", :regions => [:au_vic]},
|
|
48
49
|
{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_act, :au_nsw, :au_sa]},
|
|
49
|
-
{:function => "qld_labour_day_october(year)", :function_arguments => [:year], :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Labour Day", :regions => [:au_qld]},
|
|
50
|
-
{:
|
|
50
|
+
{:function => "qld_labour_day_october(year)", :function_arguments => [:year], :year_ranges => { :between => 2013..2015 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Labour Day", :regions => [:au_qld]},
|
|
51
|
+
{:mday => 1, :year_ranges => { :limited => [2012] },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Queen's Birthday", :regions => [:au_qld]},
|
|
52
|
+
{:function => "qld_queens_bday_october(year)", :function_arguments => [:year], :year_ranges => { :between => 2016..2022 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Queen's Birthday", :regions => [:au_qld]},
|
|
51
53
|
{:function => "qld_kings_bday_october(year)", :function_arguments => [:year], :year_ranges => { :from => 2023 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "King's Birthday", :regions => [:au_qld]},
|
|
52
54
|
{:function => "hobart_show_day(year)", :function_arguments => [:year], :name => "Royal Hobart Show", :regions => [:au_tas_south]}],
|
|
53
|
-
11 => [{:
|
|
55
|
+
11 => [{:mday => 14, :year_ranges => { :limited => [2014] },:name => "G20 Day", :regions => [:au_qld_brisbane]},
|
|
54
56
|
{:wday => 1, :week => 1, :name => "Recreation Day", :regions => [:au_tas_north]},
|
|
55
57
|
{:wday => 2, :week => 1, :name => "Melbourne Cup Day", :regions => [:au_vic_melbourne]}],
|
|
56
58
|
12 => [{:mday => 25, :observed => "to_tuesday_if_sunday_or_monday_if_saturday(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:au_qld, :au_nsw, :au_act, :au_tas, :au_wa, :au_vic, :au_nt]},
|
|
@@ -85,43 +87,23 @@ end
|
|
|
85
87
|
},
|
|
86
88
|
|
|
87
89
|
"qld_queens_bday_october(year)" => Proc.new { |year|
|
|
88
|
-
|
|
89
|
-
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
|
90
|
-
elsif year == 2012
|
|
91
|
-
1
|
|
92
|
-
else
|
|
93
|
-
nil
|
|
94
|
-
end
|
|
90
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
|
95
91
|
},
|
|
96
92
|
|
|
97
93
|
"qld_kings_bday_october(year)" => Proc.new { |year|
|
|
98
|
-
|
|
99
|
-
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
|
100
|
-
else
|
|
101
|
-
nil
|
|
102
|
-
end
|
|
94
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
|
103
95
|
},
|
|
104
96
|
|
|
105
97
|
"qld_queens_birthday_june(year)" => Proc.new { |year|
|
|
106
|
-
|
|
107
|
-
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 6, 2, 1)
|
|
108
|
-
end
|
|
98
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 6, 2, 1)
|
|
109
99
|
},
|
|
110
100
|
|
|
111
101
|
"qld_labour_day_may(year)" => Proc.new { |year|
|
|
112
|
-
|
|
113
|
-
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, 1, 1)
|
|
114
|
-
end
|
|
102
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, 1, 1)
|
|
115
103
|
},
|
|
116
104
|
|
|
117
105
|
"qld_labour_day_october(year)" => Proc.new { |year|
|
|
118
|
-
|
|
119
|
-
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
|
120
|
-
end
|
|
121
|
-
},
|
|
122
|
-
|
|
123
|
-
"g20_day_2014_only(year)" => Proc.new { |year|
|
|
124
|
-
year == 2014 ? 14 : nil
|
|
106
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
|
125
107
|
},
|
|
126
108
|
|
|
127
109
|
"hobart_show_day(year)" => Proc.new { |year|
|
|
@@ -130,19 +112,11 @@ fourth_sat_in_oct - 2 # the thursday before
|
|
|
130
112
|
},
|
|
131
113
|
|
|
132
114
|
"march_pub_hol_sa(year)" => Proc.new { |year|
|
|
133
|
-
|
|
134
|
-
nil
|
|
135
|
-
else
|
|
136
|
-
Date.civil(year, 3, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 3, :second, :monday))
|
|
137
|
-
end
|
|
115
|
+
Date.civil(year, 3, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 3, :second, :monday))
|
|
138
116
|
},
|
|
139
117
|
|
|
140
118
|
"may_pub_hol_sa(year)" => Proc.new { |year|
|
|
141
|
-
|
|
142
|
-
nil
|
|
143
|
-
else
|
|
144
|
-
Date.civil(year, 5, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, :third, :monday))
|
|
145
|
-
end
|
|
119
|
+
Date.civil(year, 5, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, :third, :monday))
|
|
146
120
|
},
|
|
147
121
|
|
|
148
122
|
"qld_brisbane_ekka_holiday(year)" => Proc.new { |year|
|
|
@@ -194,8 +194,8 @@ module Holidays
|
|
|
194
194
|
{:mday => 1, :name => "Nieuwjaarsdag", :regions => [:nl]},
|
|
195
195
|
{:mday => 1, :name => "Nyttårsdag", :regions => [:no]},
|
|
196
196
|
{:mday => 1, :name => "Nowy Rok", :regions => [:pl]},
|
|
197
|
-
{:
|
|
198
|
-
{:
|
|
197
|
+
{:mday => 6, :year_ranges => { :from => 2011 },:name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]},
|
|
198
|
+
{:mday => 6, :year_ranges => { :until => 2010 },:type => :informal, :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]},
|
|
199
199
|
{:mday => 21, :type => :informal, :name => "Dzień Babci", :regions => [:pl]},
|
|
200
200
|
{:mday => 22, :type => :informal, :name => "Dzień Dziadka", :regions => [:pl]},
|
|
201
201
|
{:mday => 1, :name => "Ano Novo", :regions => [:pt]},
|
|
@@ -629,14 +629,6 @@ when 2028
|
|
|
629
629
|
end
|
|
630
630
|
},
|
|
631
631
|
|
|
632
|
-
"pl_trzech_kroli(year)" => Proc.new { |year|
|
|
633
|
-
year >= 2011 ? 6 : nil
|
|
634
|
-
},
|
|
635
|
-
|
|
636
|
-
"pl_trzech_kroli_informal(year)" => Proc.new { |year|
|
|
637
|
-
year < 2011 ? 6 : nil
|
|
638
|
-
},
|
|
639
|
-
|
|
640
632
|
|
|
641
633
|
}
|
|
642
634
|
end
|
|
@@ -14,7 +14,7 @@ module Holidays
|
|
|
14
14
|
{
|
|
15
15
|
0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ouschterméindeg", :regions => [:lu]},
|
|
16
16
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Christi Himmelfaart", :regions => [:lu]},
|
|
17
|
-
{:function => "easter(year)", :function_arguments => [:year], :function_modifier =>
|
|
17
|
+
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Péngschtméindeg", :regions => [:lu]}],
|
|
18
18
|
1 => [{:mday => 1, :name => "Neijoerschdag", :regions => [:lu]}],
|
|
19
19
|
5 => [{:mday => 1, :name => "Dag vun der Aarbecht", :regions => [:lu]},
|
|
20
20
|
{:mday => 9, :year_ranges => { :from => 2019 },:name => "Europadag", :regions => [:lu]}],
|
|
@@ -32,7 +32,7 @@ module Holidays
|
|
|
32
32
|
10 => [{:wday => 1, :week => 1, :observed => "previous_friday(date)", :observed_arguments => [:date], :name => "Hawke's bay Anniversary Day", :regions => [:nz_hb]},
|
|
33
33
|
{:wday => 1, :week => 4, :name => "Labour Day", :regions => [:nz]},
|
|
34
34
|
{:wday => 1, :week => 4, :observed => "next_week(date)", :observed_arguments => [:date], :name => "Marlborough Anniversary Day", :regions => [:nz_mb]}],
|
|
35
|
-
11 => [{:
|
|
35
|
+
11 => [{:function => "nz_canterbury_anniversary(year)", :function_arguments => [:year], :name => "Canterbury Anniversary Day", :regions => [:nz_ca]},
|
|
36
36
|
{:mday => 30, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Chatham Island Anniversary Day", :regions => [:nz_ch]}],
|
|
37
37
|
12 => [{:mday => 1, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Westland Anniversary Day", :regions => [:nz_wl]},
|
|
38
38
|
{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:nz]},
|
|
@@ -61,6 +61,14 @@ date - 3
|
|
|
61
61
|
date + 7
|
|
62
62
|
},
|
|
63
63
|
|
|
64
|
+
"nz_canterbury_anniversary(year)" => Proc.new { |year|
|
|
65
|
+
date = Date.civil(year, 11, 1)
|
|
66
|
+
date += 1 until date.tuesday?
|
|
67
|
+
date += 1
|
|
68
|
+
date += 1 until date.friday?
|
|
69
|
+
date + 7
|
|
70
|
+
},
|
|
71
|
+
|
|
64
72
|
"matariki(year)" => Proc.new { |year|
|
|
65
73
|
@matariki_dates ||= {
|
|
66
74
|
'2022' => Date.civil(2022, 6, 24),
|
|
@@ -24,8 +24,8 @@ module Holidays
|
|
|
24
24
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Zesłanie Ducha Świętego (Zielone Świątki)", :regions => [:pl]},
|
|
25
25
|
{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", :regions => [:pl]}],
|
|
26
26
|
1 => [{:mday => 1, :name => "Nowy Rok", :regions => [:pl]},
|
|
27
|
-
{:
|
|
28
|
-
{:
|
|
27
|
+
{:mday => 6, :year_ranges => { :from => 2011 },:name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]},
|
|
28
|
+
{:mday => 6, :year_ranges => { :until => 2010 },:type => :informal, :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]},
|
|
29
29
|
{:mday => 21, :type => :informal, :name => "Dzień Babci", :regions => [:pl]},
|
|
30
30
|
{:mday => 22, :type => :informal, :name => "Dzień Dziadka", :regions => [:pl]}],
|
|
31
31
|
2 => [{:mday => 2, :type => :informal, :name => "Ofiarowanie Pańskie (Matki Boskiej Gromnicznej)", :regions => [:pl]},
|
|
@@ -58,15 +58,7 @@ module Holidays
|
|
|
58
58
|
|
|
59
59
|
def self.custom_methods
|
|
60
60
|
{
|
|
61
|
-
|
|
62
|
-
year >= 2011 ? 6 : nil
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
"pl_trzech_kroli_informal(year)" => Proc.new { |year|
|
|
66
|
-
year < 2011 ? 6 : nil
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
|
|
70
62
|
}
|
|
71
63
|
end
|
|
72
64
|
end
|
|
@@ -74,11 +74,10 @@ module Holidays
|
|
|
74
74
|
raise Holidays::InvalidFunctionResponse.new("invalid day response from custom method call resulting in invalid date. Result: '#{result}'")
|
|
75
75
|
end
|
|
76
76
|
elsif result.nil?
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
# custom definition functions. See https://github.com/holidays/holidays/issues/204
|
|
77
|
+
# nil is a valid return value meaning the calculation determined that no
|
|
78
|
+
# holiday exists on this date. For example, jp_substitute_holiday returns
|
|
79
|
+
# nil when the original holiday does not fall on a Sunday (no substitute
|
|
80
|
+
# needed), and us_inauguration_day returns nil when year % 4 != 1.
|
|
82
81
|
else
|
|
83
82
|
raise Holidays::InvalidFunctionResponse.new("invalid response from custom method call, must be a 'date' or 'integer' representing the day. Result: '#{result}'")
|
|
84
83
|
end
|
|
@@ -110,7 +110,7 @@ module Holidays
|
|
|
110
110
|
|
|
111
111
|
exists = false
|
|
112
112
|
rules_by_month[month].each do |ex|
|
|
113
|
-
if ex[:name] == rule[:name] and ex[:wday] == rule[:wday] and ex[:mday] == rule[:mday] and ex[:week] == rule[:week] and ex[:type] == rule[:type] and ex[:function] == rule[:function] and ex[:observed] == rule[:observed] and ex[:year_ranges] == rule[:year_ranges]
|
|
113
|
+
if ex[:name] == rule[:name] and ex[:wday] == rule[:wday] and ex[:mday] == rule[:mday] and ex[:week] == rule[:week] and ex[:type] == rule[:type] and ex[:function] == rule[:function] and ex[:function_modifier] == rule[:function_modifier] and ex[:observed] == rule[:observed] and ex[:year_ranges] == rule[:year_ranges]
|
|
114
114
|
ex[:regions] << rule[:regions].flatten
|
|
115
115
|
exists = true
|
|
116
116
|
end
|
|
@@ -201,6 +201,8 @@ module Holidays
|
|
|
201
201
|
method.parameters.collect { |arg| arg[1] }
|
|
202
202
|
elsif method = parsed_custom_methods[function_id]
|
|
203
203
|
method.arguments.collect { |arg| arg.to_sym }
|
|
204
|
+
else
|
|
205
|
+
raise ArgumentError, "Unknown function '#{function_id}'. It must either be a built-in method or be defined in the 'methods' section of a definition file."
|
|
204
206
|
end
|
|
205
207
|
end
|
|
206
208
|
end
|
data/lib/holidays/version.rb
CHANGED