holidays 4.6.0 → 4.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/CONTRIBUTING.md +5 -5
- data/Makefile +29 -0
- data/README.md +13 -1
- data/Rakefile +2 -2
- data/definitions/au.yaml +12 -9
- data/definitions/ca.yaml +17 -2
- data/definitions/ch.yaml +1 -1
- data/definitions/index.yaml +3 -0
- data/definitions/is.yaml +1 -1
- data/definitions/jp.yaml +19 -14
- data/definitions/kr.yaml +282 -0
- data/definitions/lu.yaml +56 -0
- data/definitions/my.yaml +51 -0
- data/definitions/ups.yaml +1 -1
- data/definitions/us.yaml +1 -1
- data/lib/generated_definitions/MANIFEST +3 -0
- data/lib/generated_definitions/REGIONS.rb +1 -1
- data/lib/generated_definitions/au.rb +11 -8
- data/lib/generated_definitions/ca.rb +1 -1
- data/lib/generated_definitions/ch.rb +1 -1
- data/lib/generated_definitions/europe.rb +2 -2
- data/lib/generated_definitions/is.rb +1 -1
- data/lib/generated_definitions/jp.rb +13 -15
- data/lib/generated_definitions/kr.rb +248 -0
- data/lib/generated_definitions/lu.rb +39 -0
- data/lib/generated_definitions/my.rb +36 -0
- data/lib/generated_definitions/north_america.rb +2 -2
- data/lib/generated_definitions/scandinavia.rb +1 -1
- data/lib/generated_definitions/ups.rb +1 -1
- data/lib/generated_definitions/us.rb +1 -1
- data/lib/holidays.rb +29 -51
- data/lib/holidays/core_extensions/date.rb +1 -1
- data/lib/holidays/definition/context/function_processor.rb +86 -0
- data/lib/holidays/definition/context/generator.rb +31 -6
- data/lib/holidays/definition/parser/custom_method.rb +1 -3
- data/lib/holidays/definition/repository/holidays_by_month.rb +1 -1
- data/lib/holidays/definition/validator/region.rb +1 -3
- data/lib/holidays/errors.rb +1 -0
- data/lib/holidays/factory/date_calculator.rb +37 -0
- data/lib/holidays/factory/definition.rb +96 -0
- data/lib/holidays/factory/finder.rb +70 -0
- data/lib/holidays/finder/context/between.rb +43 -0
- data/lib/holidays/{use_case → finder}/context/dates_driver_builder.rb +6 -4
- data/lib/holidays/finder/context/next_holiday.rb +57 -0
- data/lib/holidays/{option → finder}/context/parse_options.rb +6 -8
- data/lib/holidays/finder/context/search.rb +86 -0
- data/lib/holidays/finder/context/year_holiday.rb +57 -0
- data/lib/holidays/finder/rules/in_region.rb +23 -0
- data/lib/holidays/finder/rules/year_range.rb +82 -0
- data/lib/holidays/load_all_definitions.rb +7 -5
- data/lib/holidays/version.rb +1 -1
- data/test/coverage_report.rb +7 -0
- data/test/defs/test_defs_au.rb +1 -1
- data/test/defs/test_defs_ca.rb +16 -1
- data/test/defs/test_defs_jp.rb +4 -0
- data/test/defs/test_defs_kr.rb +26 -0
- data/test/defs/test_defs_lu.rb +24 -0
- data/test/defs/test_defs_my.rb +20 -0
- data/test/defs/test_defs_north_america.rb +16 -1
- data/test/holidays/core_extensions/test_date_time.rb +7 -7
- data/test/holidays/definition/context/test_function_processor.rb +175 -0
- data/test/holidays/definition/context/test_generator.rb +18 -11
- data/test/holidays/definition/parser/test_custom_method.rb +2 -2
- data/test/holidays/definition/repository/test_proc_result_cache.rb +1 -1
- data/test/holidays/{test_date_calculator_factory.rb → factory/test_date_calculator.rb} +3 -3
- data/test/holidays/factory/test_definition.rb +53 -0
- data/test/holidays/factory/test_finder.rb +25 -0
- data/test/holidays/finder/context/test_between.rb +172 -0
- data/test/holidays/{use_case → finder}/context/test_dates_driver_builder.rb +2 -2
- data/test/holidays/finder/context/test_next_holiday.rb +156 -0
- data/test/holidays/{option → finder}/context/test_parse_options.rb +9 -9
- data/test/holidays/finder/context/test_search.rb +203 -0
- data/test/holidays/finder/context/test_year_holiday.rb +202 -0
- data/test/holidays/finder/rules/test_in_region.rb +38 -0
- data/test/holidays/finder/rules/test_year_range.rb +170 -0
- data/test/integration/README.md +9 -0
- data/test/{test_all_regions.rb → integration/test_all_regions.rb} +16 -2
- data/test/{test_custom_holidays.rb → integration/test_custom_holidays.rb} +2 -2
- data/test/{test_custom_year_range_holidays.rb → integration/test_custom_year_range_holidays.rb} +1 -1
- data/test/{test_holidays.rb → integration/test_holidays.rb} +43 -32
- data/test/{test_holidays_between.rb → integration/test_holidays_between.rb} +8 -16
- data/test/{test_multiple_regions.rb → integration/test_multiple_regions.rb} +1 -1
- data/test/test_helper.rb +3 -4
- metadata +67 -39
- data/benchmark.rb +0 -8
- data/lib/holidays/date_calculator_factory.rb +0 -35
- data/lib/holidays/definition_factory.rb +0 -86
- data/lib/holidays/option_factory.rb +0 -15
- data/lib/holidays/use_case/context/between.rb +0 -45
- data/lib/holidays/use_case/context/context_common.rb +0 -123
- data/lib/holidays/use_case/context/next_holiday.rb +0 -54
- data/lib/holidays/use_case/context/year_holiday.rb +0 -51
- data/lib/holidays/use_case_factory.rb +0 -41
- data/test/holidays/test_definition_factory.rb +0 -49
- data/test/holidays/test_option_factory.rb +0 -9
- data/test/holidays/test_use_case_factory.rb +0 -13
- data/test/holidays/use_case/context/test_between.rb +0 -77
data/definitions/lu.yaml
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# Luxembourg holiday definitions for the Ruby Holiday gem.
|
2
|
+
#
|
3
|
+
# Updated: 2019-07-19.
|
4
|
+
# Sources:
|
5
|
+
# - https://en.wikipedia.org/wiki/Public_holidays_in_Luxembourg
|
6
|
+
---
|
7
|
+
months:
|
8
|
+
0:
|
9
|
+
- name: Ouschterméindeg
|
10
|
+
regions: [lu]
|
11
|
+
function: easter(year)
|
12
|
+
function_modifier: 1
|
13
|
+
- name: Christi Himmelfaart
|
14
|
+
regions: [lu]
|
15
|
+
function: easter(year)
|
16
|
+
function_modifier: 39
|
17
|
+
- name: Péngschtméindeg
|
18
|
+
regions: [lu]
|
19
|
+
function: easter(year)
|
20
|
+
function_modifier: 49
|
21
|
+
1:
|
22
|
+
- name: Neijoerschdag
|
23
|
+
regions: [lu]
|
24
|
+
mday: 1
|
25
|
+
6:
|
26
|
+
- name: Nationalfeierdag
|
27
|
+
regions: [lu]
|
28
|
+
mday: 23
|
29
|
+
8:
|
30
|
+
- name: Léiffrawëschdag
|
31
|
+
regions: [lu]
|
32
|
+
mday: 15
|
33
|
+
11:
|
34
|
+
- name: Allerhellgen
|
35
|
+
regions: [lu]
|
36
|
+
mday: 1
|
37
|
+
12:
|
38
|
+
- name: Chrëschtdag
|
39
|
+
regions: [lu]
|
40
|
+
mday: 25
|
41
|
+
- name: Stiefesdag
|
42
|
+
regions: [lu]
|
43
|
+
mday: 26
|
44
|
+
tests: |
|
45
|
+
{Date.civil(2008,1,1) => 'Neijoerschdag',
|
46
|
+
Date.civil(2008,3,24) => 'Ouschterméindeg',
|
47
|
+
Date.civil(2008,5,1) => 'Christi Himmelfaart', # Ascension, Easter+39
|
48
|
+
Date.civil(2008,6,23) => 'Nationalfeierdag',
|
49
|
+
Date.civil(2008,8,15) => 'Léiffrawëschdag',
|
50
|
+
Date.civil(2008,11,1) => 'Allerhellgen',
|
51
|
+
Date.civil(2008,12,25) => 'Chrëschtdag',
|
52
|
+
Date.civil(2008,12,26) => 'Stiefesdag',
|
53
|
+
Date.civil(2008,5,11) => 'Péngschtméindeg'
|
54
|
+
}.each do |date, name|
|
55
|
+
assert_equal name, (Holidays.on(date, :lu, :informal)[0] || {})[:name]
|
56
|
+
end
|
data/definitions/my.yaml
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Malaysia holiday definitions for the Holidays gem!
|
2
|
+
|
3
|
+
# Days not included in the definitions (yet):
|
4
|
+
# Vesak Day (falls on the first full moon in May)
|
5
|
+
# Lunar New Year (falls on the first day of the Lunar Calendar)
|
6
|
+
# Hari Raya Puasa and Hari Raya Haji (based on moon sightings, Islamic Calendar)
|
7
|
+
# Deepavali (15th Day of September or October, based on the Hindu Calendar)
|
8
|
+
|
9
|
+
# Source:
|
10
|
+
# http://publicholidays.com.my/
|
11
|
+
|
12
|
+
months:
|
13
|
+
1:
|
14
|
+
- name: New Year's Day
|
15
|
+
regions: [my]
|
16
|
+
mday: 1
|
17
|
+
observed: to_weekday_if_weekend(date)
|
18
|
+
5:
|
19
|
+
- name: Labour Day
|
20
|
+
regions: [my]
|
21
|
+
mday: 1
|
22
|
+
6:
|
23
|
+
- name: Agong's Birthday
|
24
|
+
regions: [my]
|
25
|
+
mday: 4
|
26
|
+
observed: to_weekday_if_weekend(date)
|
27
|
+
8:
|
28
|
+
- name: Independence Day
|
29
|
+
regions: [my]
|
30
|
+
mday: 31
|
31
|
+
observed: to_weekday_if_weekend(date)
|
32
|
+
9:
|
33
|
+
- name: Malaysia Day
|
34
|
+
regions: [my]
|
35
|
+
mday: 16
|
36
|
+
observed: to_weekday_if_weekend(date)
|
37
|
+
12:
|
38
|
+
- name: Christmas Day
|
39
|
+
regions: [my]
|
40
|
+
mday: 25
|
41
|
+
observed: to_weekday_if_weekend(date)
|
42
|
+
|
43
|
+
tests: |
|
44
|
+
{Date.civil(2016,1,1) => "New Year's Day",
|
45
|
+
Date.civil(2016,5,1) => 'Labour Day',
|
46
|
+
Date.civil(2016,6,4) => "Agong's Birthday",
|
47
|
+
Date.civil(2016,8,31) => 'Independence Day',
|
48
|
+
Date.civil(2016,9,16) => 'Malaysia Day',
|
49
|
+
Date.civil(2016,12,25) => 'Christmas Day'}.each do |date, name|
|
50
|
+
assert_equal name, (Holidays.on(date, :my, :informal)[0] || {})[:name]
|
51
|
+
end
|
data/definitions/ups.yaml
CHANGED
@@ -46,7 +46,7 @@ methods:
|
|
46
46
|
day_after_thanksgiving:
|
47
47
|
arguments: year
|
48
48
|
source: |
|
49
|
-
Holidays::
|
49
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1
|
50
50
|
tests: |
|
51
51
|
{Date.civil(2008,1,1) => 'New Year\'s Day',
|
52
52
|
Date.civil(2008,5,26) => 'Memorial Day',
|
data/definitions/us.yaml
CHANGED
@@ -81,7 +81,7 @@ methods:
|
|
81
81
|
day_after_thanksgiving:
|
82
82
|
arguments: year
|
83
83
|
source: |
|
84
|
-
Holidays::
|
84
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1
|
85
85
|
tests: |
|
86
86
|
{Date.civil(2008,1,1) => 'New Year\'s Day',
|
87
87
|
Date.civil(2008,1,21) => 'Martin Luther King, Jr. Day',
|
@@ -32,10 +32,13 @@ The following definition files are included in this installation:
|
|
32
32
|
* generated_definitions/is
|
33
33
|
* generated_definitions/it
|
34
34
|
* generated_definitions/jp
|
35
|
+
* generated_definitions/kr
|
35
36
|
* generated_definitions/li
|
36
37
|
* generated_definitions/lt
|
38
|
+
* generated_definitions/lu
|
37
39
|
* generated_definitions/ma
|
38
40
|
* generated_definitions/mx
|
41
|
+
* generated_definitions/my
|
39
42
|
* generated_definitions/nerc
|
40
43
|
* generated_definitions/nl
|
41
44
|
* generated_definitions/no
|
@@ -1,4 +1,4 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Holidays
|
3
|
-
REGIONS = [:ar, :at, :au, :au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_tas_south, :au_wa, :au_tas, :au_qld_cairns, :au_qld_brisbane, :au_tas_north, :au_vic_melbourne, :be_fr, :be_nl, :br, :bg_en, :bg_bg, :ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_mb, :ca_ns, :ca_pe, :ca_nf, :ca_nt, :ca_nu, :ca_nb, :ca_yk, :us, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cl, :cr, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux, :de_sn, :de_st, :de_by_aux, :de_bb, :de_mv, :de_th, :ecb_target, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :federal_reserve, :fedex, :fi, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :gb_sct, :gb_con, :je, :gb_jsy, :gg, :gb_gsy, :im, :gb_iom, :hr, :hu, :ie, :is, :it, :li, :lt, :ma, :mx, :mx_pue, :us, :ca, :nerc, :nl, :no, :nyse, :nz, :nz_sl, :nz_we, :nz_ak, :nz_nl, :nz_ne, :nz_ot, :nz_ta, :nz_sc, :nz_hb, :nz_mb, :nz_ca, :nz_ch, :nz_wl, :pe, :ph, :pl, :pt, :ro, :se, :us, :us_dc, :us_ca, :ca, :united_nations, :ups, :za, :ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_mb, :ca_ns, :ca_pe, :ca_nf, :ca_nt, :ca_nu, :ca_nb, :ca_yk, :mx, :mx_pue, :us, :us_dc, :us_ca, :dk, :is, :no, :se, :fi, :at, :be_fr, :be_nl, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux, :de_sn, :de_st, :de_by_aux, :de_bb, :de_mv, :de_th, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :gb_sct, :gb_con, :je, :gb_jsy, :gg, :gb_gsy, :im, :gb_iom, :hr, :hu, :ie, :is, :it, :li, :lt, :nl, :no, :pl, :pt, :ro, :sk, :si, :bg_en, :bg_bg, :jp, :ve, :vi, :sk, :si, :sg]
|
3
|
+
REGIONS = [:ar, :at, :au, :au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_tas_south, :au_wa, :au_tas, :au_qld_cairns, :au_qld_brisbane, :au_tas_north, :au_vic_melbourne, :be_fr, :be_nl, :br, :bg_en, :bg_bg, :ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_mb, :ca_ns, :ca_pe, :ca_nf, :ca_nt, :ca_nu, :ca_nb, :ca_yk, :us, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cl, :cr, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux, :de_sn, :de_st, :de_by_aux, :de_bb, :de_mv, :de_th, :ecb_target, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :federal_reserve, :fedex, :fi, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :gb_sct, :gb_con, :je, :gb_jsy, :gg, :gb_gsy, :im, :gb_iom, :hr, :hu, :ie, :is, :it, :kr, :li, :lt, :ma, :mx, :mx_pue, :us, :ca, :nerc, :nl, :lu, :no, :nyse, :nz, :nz_sl, :nz_we, :nz_ak, :nz_nl, :nz_ne, :nz_ot, :nz_ta, :nz_sc, :nz_hb, :nz_mb, :nz_ca, :nz_ch, :nz_wl, :pe, :ph, :pl, :pt, :ro, :se, :us, :us_dc, :us_ca, :ca, :united_nations, :ups, :za, :ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_mb, :ca_ns, :ca_pe, :ca_nf, :ca_nt, :ca_nu, :ca_nb, :ca_yk, :mx, :mx_pue, :us, :us_dc, :us_ca, :dk, :is, :no, :se, :fi, :at, :be_fr, :be_nl, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_aux, :de_th_aux, :de_sn, :de_st, :de_by_aux, :de_bb, :de_mv, :de_th, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :gb_sct, :gb_con, :je, :gb_jsy, :gg, :gb_gsy, :im, :gb_iom, :hr, :hu, :ie, :is, :it, :li, :lt, :nl, :no, :pl, :pt, :ro, :sk, :si, :bg_en, :bg_bg, :jp, :ve, :vi, :sk, :si, :sg, :my]
|
4
4
|
end
|
@@ -63,14 +63,17 @@ module Holidays
|
|
63
63
|
def self.custom_methods
|
64
64
|
{
|
65
65
|
"afl_grand_final(year)" => Proc.new { |year|
|
66
|
-
|
66
|
+
case year
|
67
|
+
when 2015
|
67
68
|
Date.civil(2015, 10, 2)
|
69
|
+
when 2016
|
70
|
+
Date.civil(2017, 9, 30)
|
68
71
|
end
|
69
72
|
},
|
70
73
|
|
71
74
|
"qld_queens_bday_october(year)" => Proc.new { |year|
|
72
75
|
if year >= 2016
|
73
|
-
|
76
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
74
77
|
elsif year == 2012
|
75
78
|
1
|
76
79
|
else
|
@@ -80,19 +83,19 @@ end
|
|
80
83
|
|
81
84
|
"qld_queens_birthday_june(year)" => Proc.new { |year|
|
82
85
|
if year <= 2015
|
83
|
-
|
86
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 6, 2, 1)
|
84
87
|
end
|
85
88
|
},
|
86
89
|
|
87
90
|
"qld_labour_day_may(year)" => Proc.new { |year|
|
88
91
|
if year < 2013 || year >= 2016
|
89
|
-
|
92
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, 1, 1)
|
90
93
|
end
|
91
94
|
},
|
92
95
|
|
93
96
|
"qld_labour_day_october(year)" => Proc.new { |year|
|
94
97
|
if year >= 2013 && year < 2016
|
95
|
-
|
98
|
+
Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1)
|
96
99
|
end
|
97
100
|
},
|
98
101
|
|
@@ -101,7 +104,7 @@ year == 2014 ? 14 : nil
|
|
101
104
|
},
|
102
105
|
|
103
106
|
"hobart_show_day(year)" => Proc.new { |year|
|
104
|
-
fourth_sat_in_oct = Date.civil(year, 10, Holidays::
|
107
|
+
fourth_sat_in_oct = Date.civil(year, 10, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 4, :saturday))
|
105
108
|
fourth_sat_in_oct - 2 # the thursday before
|
106
109
|
},
|
107
110
|
|
@@ -109,7 +112,7 @@ fourth_sat_in_oct - 2 # the thursday before
|
|
109
112
|
if year < 2006
|
110
113
|
nil
|
111
114
|
else
|
112
|
-
Date.civil(year, 3, Holidays::
|
115
|
+
Date.civil(year, 3, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 3, :second, :monday))
|
113
116
|
end
|
114
117
|
},
|
115
118
|
|
@@ -117,7 +120,7 @@ end
|
|
117
120
|
if year >= 2006
|
118
121
|
nil
|
119
122
|
else
|
120
|
-
Date.civil(year, 5, Holidays::
|
123
|
+
Date.civil(year, 5, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, :third, :monday))
|
121
124
|
end
|
122
125
|
},
|
123
126
|
|
@@ -55,7 +55,7 @@ module Holidays
|
|
55
55
|
9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:ca]}],
|
56
56
|
10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca]},
|
57
57
|
{:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}],
|
58
|
-
11 => [{:mday => 11, :name => "Remembrance Day", :regions => [:
|
58
|
+
11 => [{:mday => 11, :name => "Remembrance Day", :regions => [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nf, :ca_nt, :ca_nu, :ca_nb, :ca_yk]}],
|
59
59
|
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:ca]},
|
60
60
|
{:mday => 26, :name => "Boxing Day", :regions => [:ca]}],
|
61
61
|
4 => [{:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]},
|
@@ -76,7 +76,7 @@ until date.wday.eql? 4 do
|
|
76
76
|
date += 1
|
77
77
|
end
|
78
78
|
|
79
|
-
if date.eql?(Holidays::
|
79
|
+
if date.eql?(Holidays::Factory::DateCalculator::Easter::Gregorian.easter_calculator.calculate_easter_for(year)-3)
|
80
80
|
date += 7
|
81
81
|
end
|
82
82
|
date
|
@@ -507,7 +507,7 @@ until date.wday.eql? 4 do
|
|
507
507
|
date += 1
|
508
508
|
end
|
509
509
|
|
510
|
-
if date.eql?(Holidays::
|
510
|
+
if date.eql?(Holidays::Factory::DateCalculator::Easter::Gregorian.easter_calculator.calculate_easter_for(year)-3)
|
511
511
|
date += 7
|
512
512
|
end
|
513
513
|
date
|
@@ -535,7 +535,7 @@ end
|
|
535
535
|
date = Date.civil(year,4,18)
|
536
536
|
if date.wday < 4
|
537
537
|
date += (4 - date.wday)
|
538
|
-
else
|
538
|
+
else
|
539
539
|
date += (11 - date.wday)
|
540
540
|
end
|
541
541
|
date
|
@@ -40,7 +40,7 @@ module Holidays
|
|
40
40
|
{:function => "jp_mountain_holiday_substitute(year)", :function_arguments => [:year], :year_ranges => [{:after => 2016}],:name => "振替休日", :regions => [:jp]}],
|
41
41
|
9 => [{:wday => 1, :week => 3, :name => "敬老の日", :regions => [:jp]},
|
42
42
|
{:function => "jp_respect_for_aged_holiday_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]},
|
43
|
-
{:function => "jp_citizens_holiday(year)", :function_arguments => [:year], :name => "国民の休日", :regions => [:jp]},
|
43
|
+
{:function => "jp_citizens_holiday(year)", :function_arguments => [:year], :year_ranges => [{:after => 2003}],:name => "国民の休日", :regions => [:jp]},
|
44
44
|
{:function => "jp_national_culture_day(year)", :function_arguments => [:year], :name => "秋分の日", :regions => [:jp]},
|
45
45
|
{:function => "jp_national_culture_day_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]}],
|
46
46
|
10 => [{:wday => 1, :week => 2, :name => "体育の日", :regions => [:jp]},
|
@@ -57,7 +57,7 @@ module Holidays
|
|
57
57
|
def self.custom_methods
|
58
58
|
{
|
59
59
|
"jp_health_sports_day_substitute(year)" => Proc.new { |year|
|
60
|
-
Holidays::
|
60
|
+
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, 10, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 2, 1))
|
61
61
|
},
|
62
62
|
|
63
63
|
"jp_vernal_equinox_day(year)" => Proc.new { |year|
|
@@ -80,12 +80,12 @@ Date.civil(year, 3, day)
|
|
80
80
|
},
|
81
81
|
|
82
82
|
"jp_vernal_equinox_day_substitute(year)" => Proc.new { |year|
|
83
|
-
date = Holidays::
|
84
|
-
Holidays::
|
83
|
+
date = Holidays::Factory::Definition.custom_methods_repository.find("jp_vernal_equinox_day(year)").call(year)
|
84
|
+
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
|
85
85
|
},
|
86
86
|
|
87
87
|
"jp_marine_day_substitute(year)" => Proc.new { |year|
|
88
|
-
Holidays::
|
88
|
+
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, 7, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 7, 3, 1))
|
89
89
|
},
|
90
90
|
|
91
91
|
"jp_national_culture_day(year)" => Proc.new { |year|
|
@@ -108,13 +108,12 @@ Date.civil(year, 9, day)
|
|
108
108
|
},
|
109
109
|
|
110
110
|
"jp_national_culture_day_substitute(year)" => Proc.new { |year|
|
111
|
-
date = Holidays::
|
112
|
-
Holidays::
|
111
|
+
date = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year)
|
112
|
+
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
|
113
113
|
},
|
114
114
|
|
115
115
|
"jp_citizens_holiday(year)" => Proc.new { |year|
|
116
|
-
|
117
|
-
ncd = Holidays::DefinitionFactory.custom_methods_repository.find("jp_national_culture_day(year)").call(year)
|
116
|
+
ncd = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year)
|
118
117
|
if ncd.wday == 3
|
119
118
|
ncd - 1
|
120
119
|
else
|
@@ -123,29 +122,28 @@ end
|
|
123
122
|
},
|
124
123
|
|
125
124
|
"jp_mountain_holiday(year)" => Proc.new { |year|
|
126
|
-
return nil if year < 2016
|
127
125
|
Date.civil(year, 8, 11)
|
128
126
|
},
|
129
127
|
|
130
128
|
"jp_mountain_holiday_substitute(year)" => Proc.new { |year|
|
131
|
-
date = Holidays::
|
132
|
-
Holidays::
|
129
|
+
date = Holidays::Factory::Definition.custom_methods_repository.find("jp_mountain_holiday(year)").call(year)
|
130
|
+
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
|
133
131
|
},
|
134
132
|
|
135
133
|
"jp_respect_for_aged_holiday_substitute(year)" => Proc.new { |year|
|
136
|
-
Holidays::
|
134
|
+
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, 9, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 9, 3, 1))
|
137
135
|
},
|
138
136
|
|
139
137
|
"jp_substitute_holiday(year, month, day)" => Proc.new { |year, month, day|
|
140
138
|
date = Date.civil(year, month, day)
|
141
|
-
date.wday == 0 ? (Holidays::
|
139
|
+
date.wday == 0 ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : nil
|
142
140
|
},
|
143
141
|
|
144
142
|
"jp_next_weekday(date)" => Proc.new { |date|
|
145
143
|
is_holiday = Holidays::JP.holidays_by_month[date.month].any? do |holiday|
|
146
144
|
holiday[:mday] == date.day
|
147
145
|
end
|
148
|
-
date.wday == 0 || is_holiday ? (Holidays::
|
146
|
+
date.wday == 0 || is_holiday ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : date
|
149
147
|
},
|
150
148
|
|
151
149
|
|
@@ -0,0 +1,248 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Holidays
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
4
|
+
#
|
5
|
+
# Definitions loaded: definitions/kr.yaml
|
6
|
+
#
|
7
|
+
# To use the definitions in this file, load it right after you load the
|
8
|
+
# Holiday gem:
|
9
|
+
#
|
10
|
+
# require 'holidays'
|
11
|
+
# require 'generated_definitions/kr'
|
12
|
+
#
|
13
|
+
# All the definitions are available at https://github.com/holidays/holidays
|
14
|
+
module KR # :nodoc:
|
15
|
+
def self.defined_regions
|
16
|
+
[:kr]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.holidays_by_month
|
20
|
+
{
|
21
|
+
0 => [{:function => "kr_new_years(year)", :function_arguments => [:year], :name => "Korean New Year", :regions => [:kr]},
|
22
|
+
{:function => "kr_buddahs_birthday(year)", :function_arguments => [:year], :name => "Buddah's Birthday", :regions => [:kr]},
|
23
|
+
{:function => "kr_thanksgiving(year)", :function_arguments => [:year], :name => "Korean Thanksgiving", :regions => [:kr]}],
|
24
|
+
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:kr]}],
|
25
|
+
3 => [{:mday => 1, :name => "Independence Movement Day", :regions => [:kr]}],
|
26
|
+
5 => [{:mday => 5, :name => "Children's Day", :regions => [:kr]}],
|
27
|
+
6 => [{:mday => 6, :name => "Memorial Day", :regions => [:kr]}],
|
28
|
+
7 => [{:mday => 17, :type => :informal, :name => "Constitution Day", :regions => [:kr]}],
|
29
|
+
8 => [{:mday => 15, :name => "Liberation Day", :regions => [:kr]}],
|
30
|
+
10 => [{:mday => 3, :name => "National Foundation Day", :regions => [:kr]},
|
31
|
+
{:mday => 9, :name => "Hangul Day", :regions => [:kr]}],
|
32
|
+
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:kr]}]
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.custom_methods
|
37
|
+
{
|
38
|
+
"kr_new_years(year)" => Proc.new { |year|
|
39
|
+
month_day = case year
|
40
|
+
when 1941
|
41
|
+
[1, 17]
|
42
|
+
when 1966
|
43
|
+
[1, 21]
|
44
|
+
when 1909, 1947, 2004, 2023, 2042
|
45
|
+
[1, 22]
|
46
|
+
when 1917, 1928, 1974, 1993, 2012, 2031, 2015
|
47
|
+
[1, 23]
|
48
|
+
when 1925, 1936, 1955, 2001, 2039
|
49
|
+
[1, 24]
|
50
|
+
when 1906, 1944, 1963, 1982, 2020
|
51
|
+
[1, 25]
|
52
|
+
when 1914, 1933, 2009, 2028, 2047
|
53
|
+
[1, 26]
|
54
|
+
when 1952, 1971, 1990
|
55
|
+
[1, 27]
|
56
|
+
when 1922, 1960, 1979, 1998, 2017, 2036
|
57
|
+
[1, 28]
|
58
|
+
when 1903, 1949, 1987, 2006, 2025
|
59
|
+
[1, 29]
|
60
|
+
when 1911, 1930, 1968, 2044
|
61
|
+
[1, 30]
|
62
|
+
when 1938, 1957, 1976, 1995, 2014, 2033
|
63
|
+
[1, 31]
|
64
|
+
when 1919, 1948, 2003, 2022, 2041
|
65
|
+
[2, 1]
|
66
|
+
when 1908, 1927, 1946, 1965, 1984, 2049
|
67
|
+
[2, 2]
|
68
|
+
when 1916, 1954, 1973, 2011, 2030
|
69
|
+
[2, 3]
|
70
|
+
when 1905, 1935, 1992, 2038
|
71
|
+
[2, 4]
|
72
|
+
when 1924, 1943, 1962, 1981, 1989, 2000, 2019
|
73
|
+
[2, 5]
|
74
|
+
when 1913, 1932, 1951, 1970, 2027, 2046
|
75
|
+
[2, 6]
|
76
|
+
when 1978, 1997, 2008
|
77
|
+
[2, 7]
|
78
|
+
when 1902, 1921, 1940, 1959, 2016, 2035
|
79
|
+
[2, 8]
|
80
|
+
when 1967, 1986, 2005
|
81
|
+
[2, 9]
|
82
|
+
when 1910, 1929, 1994, 2013, 2024, 2043
|
83
|
+
[2, 10]
|
84
|
+
when 1918, 1937, 1975, 2032
|
85
|
+
[2, 11]
|
86
|
+
when 1956, 2002, 2021, 2040
|
87
|
+
[2, 12]
|
88
|
+
when 1907, 1926, 1945, 1964, 1983, 2029
|
89
|
+
[2, 13]
|
90
|
+
when 1915, 1934, 1953, 2010, 2048
|
91
|
+
[2, 14]
|
92
|
+
when 1942, 1961, 1972, 1991, 2037
|
93
|
+
[2, 15]
|
94
|
+
when 1904, 1923, 1980, 1999, 2018
|
95
|
+
[2, 16]
|
96
|
+
when 1931, 1950, 1969, 1988, 2026, 2045
|
97
|
+
[2, 17]
|
98
|
+
when 1912, 1958, 1977, 2007
|
99
|
+
[2, 18]
|
100
|
+
when 1901, 1939, 1996, 2015, 2034
|
101
|
+
[2, 19]
|
102
|
+
when 1920, 1985
|
103
|
+
[2, 20]
|
104
|
+
end
|
105
|
+
Date.civil(year, month_day[0], month_day[1])
|
106
|
+
},
|
107
|
+
|
108
|
+
"kr_buddahs_birthday(year)" => Proc.new { |year|
|
109
|
+
month_day = case year
|
110
|
+
when 2039
|
111
|
+
[4, 30]
|
112
|
+
when 1952, 1963, 1982
|
113
|
+
[5, 1]
|
114
|
+
when 1914, 1933, 1971, 1990, 2009, 2028, 2047
|
115
|
+
[5, 2]
|
116
|
+
when 1941, 1960, 1979, 1998, 2017, 2036
|
117
|
+
[5, 3]
|
118
|
+
when 1901, 1903, 1922, 1968
|
119
|
+
[5, 4]
|
120
|
+
when 1949, 1987, 2006, 2012, 2025, 2044
|
121
|
+
[5, 5]
|
122
|
+
when 1911, 1930, 1976, 2014, 2033
|
123
|
+
[5, 6]
|
124
|
+
when 1908, 1919, 1957, 1995, 2041
|
125
|
+
[5, 7]
|
126
|
+
when 1927, 1946, 1965, 1984, 2003, 2022
|
127
|
+
[5, 8]
|
128
|
+
when 1916, 2030, 2049
|
129
|
+
[5, 9]
|
130
|
+
when 1935, 1954, 1973, 1992, 2011
|
131
|
+
[5, 10]
|
132
|
+
when 1905, 1924, 1943, 1962, 1981, 2000, 2038
|
133
|
+
[5, 11]
|
134
|
+
when 1970, 1989, 2008, 2019
|
135
|
+
[5, 12]
|
136
|
+
when 1913, 1932, 1951, 2027
|
137
|
+
[5, 13]
|
138
|
+
when 1938, 1940, 1978, 1997, 2016
|
139
|
+
[5, 14]
|
140
|
+
when 1902, 1921, 1959, 2005, 2024, 2035
|
141
|
+
[5, 15]
|
142
|
+
when 1910, 1929, 1948, 1967, 1986, 2032, 2043
|
143
|
+
[5, 16]
|
144
|
+
when 1918, 1937, 1956, 2013
|
145
|
+
[5, 17]
|
146
|
+
when 1975, 1994, 2040
|
147
|
+
[5, 18]
|
148
|
+
when 1907, 1926, 1945, 1964, 2002, 2021
|
149
|
+
[5, 19]
|
150
|
+
when 1934, 1953, 1972, 1983, 2029, 2046, 2048
|
151
|
+
[5, 20]
|
152
|
+
when 1915, 1980, 1991, 2010
|
153
|
+
[5, 21]
|
154
|
+
when 1904, 1942, 1961, 1999, 2018, 2037
|
155
|
+
[5, 22]
|
156
|
+
when 1923, 1969, 1988
|
157
|
+
[5, 23]
|
158
|
+
when 1912, 1931, 1950, 1996, 2007, 2026, 2045
|
159
|
+
[5, 24]
|
160
|
+
when 1920, 1977, 2015, 2034
|
161
|
+
[5, 25]
|
162
|
+
when 1909, 1928, 1939, 1947, 1958, 2004, 2023, 2042
|
163
|
+
[5, 26]
|
164
|
+
when 1966, 1985
|
165
|
+
[5, 27]
|
166
|
+
when 1917, 1936, 1993, 2031, 2050
|
167
|
+
[5, 28]
|
168
|
+
when 1925, 1944, 1955, 1974
|
169
|
+
[5, 29]
|
170
|
+
when 1906, 2001, 2020
|
171
|
+
[5, 30]
|
172
|
+
end
|
173
|
+
Date.civil(year, month_day[0], month_day[1])
|
174
|
+
},
|
175
|
+
|
176
|
+
"kr_thanksgiving(year)" => Proc.new { |year|
|
177
|
+
month_day = case year
|
178
|
+
when 1905, 1924, 1973
|
179
|
+
[9, 8]
|
180
|
+
when 1913, 1970, 1989, 2000, 2008, 2019, 2038
|
181
|
+
[9, 10]
|
182
|
+
when 1902, 1932, 1938, 1981, 2027
|
183
|
+
[9, 11]
|
184
|
+
when 1929, 1940, 1951, 1978, 2016, 2035
|
185
|
+
[9, 12]
|
186
|
+
when 1921, 1948, 1959, 1997, 2024
|
187
|
+
[9, 13]
|
188
|
+
when 1910, 1975, 2005
|
189
|
+
[9, 14]
|
190
|
+
when 1918, 1937, 1945, 1967, 1986, 2032, 2043
|
191
|
+
[9, 15]
|
192
|
+
when 1907, 1964, 1994, 2013, 2040
|
193
|
+
[9, 16]
|
194
|
+
when 1926, 1956, 1962, 1972, 2046, 2048
|
195
|
+
[9, 17]
|
196
|
+
when 1934, 1953, 2002, 2021
|
197
|
+
[9, 18]
|
198
|
+
when 1904, 1915, 1980, 2010, 2029
|
199
|
+
[9, 19]
|
200
|
+
when 1923, 1969, 1983, 1991, 1999
|
201
|
+
[9, 20]
|
202
|
+
when 1942, 1961, 1988, 2037
|
203
|
+
[9, 21]
|
204
|
+
when 1912, 1977 ,1996, 2007, 2015, 2018, 2026
|
205
|
+
[9, 22]
|
206
|
+
when 1931, 1939, 1950
|
207
|
+
[9, 23]
|
208
|
+
when 1909, 1920, 1947, 1958, 2034, 2045
|
209
|
+
[9, 24]
|
210
|
+
when 1917, 1928, 1936, 1966, 1985, 2050
|
211
|
+
[9, 25]
|
212
|
+
when 2001, 2004, 2023, 2042
|
213
|
+
[9, 26]
|
214
|
+
when 1906, 1925, 1944, 1955, 1974, 1993, 2031
|
215
|
+
[9, 27]
|
216
|
+
when 1914, 1963, 1971, 2009
|
217
|
+
[9, 28]
|
218
|
+
when 1933, 1952, 1982, 2020
|
219
|
+
[9, 29]
|
220
|
+
when 1941, 1979, 1990, 2017, 2028, 2036, 2047
|
221
|
+
[9, 30]
|
222
|
+
when 1901, 1960, 1968, 1987, 2006
|
223
|
+
[10, 1]
|
224
|
+
when 1903, 1922, 1949, 1998
|
225
|
+
[10, 2]
|
226
|
+
when 1911, 1976, 2014, 2033, 2044
|
227
|
+
[10, 3]
|
228
|
+
when 1927, 1930, 2012, 2025, 2041
|
229
|
+
[10, 4]
|
230
|
+
when 1908, 1919, 1935, 1946, 1957, 1995, 2039
|
231
|
+
[10, 5]
|
232
|
+
when 1916, 1965, 2003, 2022, 2030, 2049
|
233
|
+
[10, 6]
|
234
|
+
when 1984
|
235
|
+
[10, 7]
|
236
|
+
when 1943, 1954, 1992
|
237
|
+
[10, 8]
|
238
|
+
when 2011
|
239
|
+
[10, 9]
|
240
|
+
end
|
241
|
+
Date.civil(year, month_day[0], month_day[1])
|
242
|
+
},
|
243
|
+
|
244
|
+
|
245
|
+
}
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|