holidays 11.3.0 → 11.5.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 +12 -0
- data/lib/generated_definitions/MANIFEST +2 -0
- data/lib/generated_definitions/REGIONS.rb +3 -3
- data/lib/generated_definitions/ar.rb +1 -18
- data/lib/generated_definitions/at.rb +1 -3
- data/lib/generated_definitions/au.rb +1 -86
- data/lib/generated_definitions/be_fr.rb +1 -3
- data/lib/generated_definitions/be_nl.rb +1 -3
- data/lib/generated_definitions/bg.rb +1 -3
- data/lib/generated_definitions/br.rb +1 -3
- data/lib/generated_definitions/by.rb +39 -0
- data/lib/generated_definitions/ca.rb +4 -14
- data/lib/generated_definitions/ch.rb +1 -48
- data/lib/generated_definitions/cl.rb +1 -33
- data/lib/generated_definitions/cn.rb +39 -0
- data/lib/generated_definitions/co.rb +10 -90
- data/lib/generated_definitions/cr.rb +1 -3
- data/lib/generated_definitions/cy.rb +1 -3
- data/lib/generated_definitions/cz.rb +1 -3
- data/lib/generated_definitions/de.rb +2 -14
- data/lib/generated_definitions/dk.rb +1 -3
- data/lib/generated_definitions/ecbtarget.rb +1 -3
- data/lib/generated_definitions/ee.rb +1 -3
- data/lib/generated_definitions/es.rb +2 -4
- data/lib/generated_definitions/europe.rb +5 -95
- data/lib/generated_definitions/federalreserve.rb +1 -3
- data/lib/generated_definitions/federalreservebanks.rb +1 -3
- data/lib/generated_definitions/fedex.rb +1 -7
- data/lib/generated_definitions/fi.rb +1 -25
- data/lib/generated_definitions/fr.rb +1 -3
- data/lib/generated_definitions/gb.rb +1 -3
- data/lib/generated_definitions/ge.rb +1 -3
- data/lib/generated_definitions/gr.rb +1 -3
- data/lib/generated_definitions/hk.rb +1 -3
- data/lib/generated_definitions/hr.rb +1 -3
- data/lib/generated_definitions/hu.rb +1 -3
- data/lib/generated_definitions/ie.rb +1 -12
- data/lib/generated_definitions/il.rb +1 -3
- data/lib/generated_definitions/in.rb +1 -3
- data/lib/generated_definitions/is.rb +1 -13
- data/lib/generated_definitions/it.rb +1 -3
- data/lib/generated_definitions/jp.rb +1 -95
- data/lib/generated_definitions/ke.rb +1 -3
- data/lib/generated_definitions/kr.rb +4 -6
- data/lib/generated_definitions/kz.rb +1 -3
- data/lib/generated_definitions/li.rb +1 -3
- data/lib/generated_definitions/lt.rb +1 -3
- data/lib/generated_definitions/lu.rb +1 -3
- data/lib/generated_definitions/lv.rb +1 -17
- data/lib/generated_definitions/ma.rb +1 -3
- data/lib/generated_definitions/mc.rb +1 -3
- data/lib/generated_definitions/mt_en.rb +1 -3
- data/lib/generated_definitions/mt_mt.rb +1 -3
- data/lib/generated_definitions/mx.rb +4 -4
- data/lib/generated_definitions/my.rb +1 -3
- data/lib/generated_definitions/nerc.rb +1 -3
- data/lib/generated_definitions/ng.rb +1 -3
- data/lib/generated_definitions/nl.rb +1 -3
- data/lib/generated_definitions/no.rb +1 -3
- data/lib/generated_definitions/northamerica.rb +4 -97
- data/lib/generated_definitions/nyse.rb +1 -3
- data/lib/generated_definitions/nz.rb +4 -70
- data/lib/generated_definitions/pe.rb +12 -10
- data/lib/generated_definitions/ph.rb +1 -9
- data/lib/generated_definitions/pl.rb +1 -3
- data/lib/generated_definitions/pt.rb +1 -3
- data/lib/generated_definitions/ro.rb +3 -5
- data/lib/generated_definitions/rs_cyrl.rb +1 -3
- data/lib/generated_definitions/rs_la.rb +1 -3
- data/lib/generated_definitions/ru.rb +1 -3
- data/lib/generated_definitions/scandinavia.rb +1 -47
- data/lib/generated_definitions/se.rb +1 -15
- data/lib/generated_definitions/sg.rb +1 -3
- data/lib/generated_definitions/si.rb +1 -3
- data/lib/generated_definitions/sk.rb +1 -3
- data/lib/generated_definitions/southamerica.rb +18 -139
- data/lib/generated_definitions/th.rb +1 -3
- data/lib/generated_definitions/tn.rb +1 -3
- data/lib/generated_definitions/tr.rb +1 -29
- data/lib/generated_definitions/tsx.rb +1 -13
- data/lib/generated_definitions/ua.rb +1 -3
- data/lib/generated_definitions/unitednations.rb +1 -3
- data/lib/generated_definitions/ups.rb +1 -7
- data/lib/generated_definitions/us.rb +4 -87
- data/lib/generated_definitions/ve.rb +1 -3
- data/lib/generated_definitions/vn.rb +1 -3
- data/lib/generated_definitions/za.rb +1 -3
- data/lib/holidays/{load_all_definitions.rb → bootstrap.rb} +15 -8
- data/lib/holidays/date_calculator/lunar_date.rb +1 -0
- data/lib/holidays/definition/context/generator.rb +4 -0
- data/lib/holidays/definition/custom_methods/ar.rb +28 -0
- data/lib/holidays/definition/custom_methods/au.rb +96 -0
- data/lib/holidays/definition/custom_methods/ca.rb +23 -0
- data/lib/holidays/definition/custom_methods/ch.rb +58 -0
- data/lib/holidays/definition/custom_methods/cl.rb +43 -0
- data/lib/holidays/definition/custom_methods/cn.rb +31 -0
- data/lib/holidays/definition/custom_methods/co.rb +22 -0
- data/lib/holidays/definition/custom_methods/de.rb +23 -0
- data/lib/holidays/definition/custom_methods/fedex.rb +17 -0
- data/lib/holidays/definition/custom_methods/fi.rb +35 -0
- data/lib/holidays/definition/custom_methods/ie.rb +22 -0
- data/lib/holidays/definition/custom_methods/is.rb +23 -0
- data/lib/holidays/definition/custom_methods/jp.rb +107 -0
- data/lib/holidays/definition/custom_methods/kr.rb +17 -0
- data/lib/holidays/definition/custom_methods/lv.rb +27 -0
- data/lib/holidays/definition/custom_methods/nz.rb +77 -0
- data/lib/holidays/definition/custom_methods/ph.rb +19 -0
- data/lib/holidays/definition/custom_methods/registry.rb +103 -0
- data/lib/holidays/definition/custom_methods/se.rb +25 -0
- data/lib/holidays/definition/custom_methods/tr.rb +59 -0
- data/lib/holidays/definition/custom_methods/us.rb +92 -0
- data/lib/holidays/definition/generator/module.rb +7 -4
- data/lib/holidays/version.rb +1 -1
- data/lib/holidays.rb +4 -2
- metadata +25 -2
|
@@ -28,7 +28,7 @@ module Holidays
|
|
|
28
28
|
3 => [{:mday => 8, :year_ranges => { :from => 2019 },:name => "Internationaler Frauentag", :regions => [:de_be]},
|
|
29
29
|
{:mday => 8, :year_ranges => { :from => 2023 },:name => "Internationaler Frauentag", :regions => [:de_mv]}],
|
|
30
30
|
5 => [{:mday => 1, :year_ranges => { :from => 1933 },:name => "Tag der Arbeit", :regions => [:de]},
|
|
31
|
-
{:mday => 8, :year_ranges => { :limited => [2020] },:name => "Tag der Befreiung", :regions => [:de_be]}],
|
|
31
|
+
{:mday => 8, :year_ranges => { :limited => [2020, 2025] },:name => "Tag der Befreiung", :regions => [:de_be]}],
|
|
32
32
|
6 => [{:mday => 17, :year_ranges => { :between => 1954..1990 },:name => "Tag der Deutschen Einheit", :regions => [:de]},
|
|
33
33
|
{:mday => 17, :year_ranges => { :limited => [2028] },:name => "Jahrestag des Volksaufstands in der DDR", :regions => [:de_be]}],
|
|
34
34
|
8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by_cath, :de_by_augsburg, :de_sl]},
|
|
@@ -51,19 +51,7 @@ module Holidays
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
def self.custom_methods
|
|
54
|
-
{
|
|
55
|
-
"de_buss_und_bettag(year)" => Proc.new { |year|
|
|
56
|
-
date = Date.civil(year,11,23)
|
|
57
|
-
if date.wday > 3
|
|
58
|
-
date -= (date.wday - 3)
|
|
59
|
-
else
|
|
60
|
-
date -= (date.wday + 4)
|
|
61
|
-
end
|
|
62
|
-
date
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
54
|
+
{}
|
|
67
55
|
end
|
|
68
56
|
end
|
|
69
57
|
end
|
|
@@ -30,7 +30,7 @@ module Holidays
|
|
|
30
30
|
6 => [{:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Región de Murcia", :regions => [:es_mu]},
|
|
31
31
|
{:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de La Rioja", :regions => [:es_lo]},
|
|
32
32
|
{:mday => 24, :name => "San Juan", :regions => [:es_ct, :es_vc]}],
|
|
33
|
-
7 => [{:mday =>
|
|
33
|
+
7 => [{:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Santiago Apostol", :regions => [:es_ga]}],
|
|
34
34
|
8 => [{:mday => 15, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Asunción", :regions => [:es]}],
|
|
35
35
|
9 => [{:mday => 2, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Ceuta", :regions => [:es_ce]},
|
|
36
36
|
{:mday => 8, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Asturias", :regions => [:es_o]},
|
|
@@ -48,9 +48,7 @@ module Holidays
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def self.custom_methods
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
}
|
|
51
|
+
{}
|
|
54
52
|
end
|
|
55
53
|
end
|
|
56
54
|
end
|
|
@@ -201,8 +201,8 @@ module Holidays
|
|
|
201
201
|
{:mday => 1, :name => "Ano Novo", :regions => [:pt]},
|
|
202
202
|
{:mday => 1, :name => "Anul nou", :regions => [:ro]},
|
|
203
203
|
{:mday => 2, :name => "Anul nou", :regions => [:ro]},
|
|
204
|
-
{:mday => 6, :name => "Botezul Domnului - Boboteaza", :regions => [:ro]},
|
|
205
|
-
{:mday => 7, :name => "Soborul Sfântului Proroc Ioan Botezătorul", :regions => [:ro]},
|
|
204
|
+
{:mday => 6, :year_ranges => { :from => 2024 },:name => "Botezul Domnului - Boboteaza", :regions => [:ro]},
|
|
205
|
+
{:mday => 7, :year_ranges => { :from => 2024 },:name => "Soborul Sfântului Proroc Ioan Botezătorul", :regions => [:ro]},
|
|
206
206
|
{:mday => 24, :year_ranges => { :from => 2017 },:name => "Unirea Principatelor Române", :regions => [:ro]},
|
|
207
207
|
{:mday => 1, :name => "Nový rok", :regions => [:sk]},
|
|
208
208
|
{:mday => 6, :name => "Zjavenie Pána (Traja králi)", :regions => [:sk]},
|
|
@@ -221,7 +221,7 @@ module Holidays
|
|
|
221
221
|
{:mday => 1, :type => :informal, :name => "Arbejdernes kampdag", :regions => [:dk]},
|
|
222
222
|
{:mday => 5, :type => :informal, :name => "Danmarks befrielse", :regions => [:dk]},
|
|
223
223
|
{:mday => 1, :year_ranges => { :from => 1933 },:name => "Tag der Arbeit", :regions => [:de]},
|
|
224
|
-
{:mday => 8, :year_ranges => { :limited => [2020] },:name => "Tag der Befreiung", :regions => [:de_be]},
|
|
224
|
+
{:mday => 8, :year_ranges => { :limited => [2020, 2025] },:name => "Tag der Befreiung", :regions => [:de_be]},
|
|
225
225
|
{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día del Trabajador", :regions => [:es]},
|
|
226
226
|
{:mday => 2, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Fiesta de la Comunidad", :regions => [:es_m]},
|
|
227
227
|
{:mday => 30, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de las Canarias", :regions => [:es_cn]},
|
|
@@ -450,7 +450,7 @@ module Holidays
|
|
|
450
450
|
{:mday => 21, :name => "Nationale Feestdag", :regions => [:be_nl]},
|
|
451
451
|
{:mday => 5, :name => "Den slovanských věrozvěstů Cyrila a Metoděje", :regions => [:cz]},
|
|
452
452
|
{:mday => 6, :name => "Den upálení mistra Jana Husa", :regions => [:cz]},
|
|
453
|
-
{:mday =>
|
|
453
|
+
{:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Santiago Apostol", :regions => [:es_ga]},
|
|
454
454
|
{:mday => 14, :name => "Fête nationale", :regions => [:fr]},
|
|
455
455
|
{:mday => 5, :name => "Tynwald Day", :regions => [:im, :gb_iom]},
|
|
456
456
|
{:mday => 12, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Battle of the Boyne", :regions => [:gb_nir]},
|
|
@@ -555,97 +555,7 @@ module Holidays
|
|
|
555
555
|
end
|
|
556
556
|
|
|
557
557
|
def self.custom_methods
|
|
558
|
-
{
|
|
559
|
-
"ch_vd_lundi_du_jeune_federal(year)" => Proc.new { |year|
|
|
560
|
-
date = Date.civil(year,9,1)
|
|
561
|
-
# Find the first Sunday of September
|
|
562
|
-
until date.wday.eql? 0 do
|
|
563
|
-
date += 1
|
|
564
|
-
end
|
|
565
|
-
# There are 15 days between the first Sunday
|
|
566
|
-
# and the Monday after the third Sunday
|
|
567
|
-
date + 15
|
|
568
|
-
},
|
|
569
|
-
|
|
570
|
-
"ch_ge_jeune_genevois(year)" => Proc.new { |year|
|
|
571
|
-
date = Date.civil(year,9,1)
|
|
572
|
-
# Find the first Sunday of September
|
|
573
|
-
until date.wday.eql? 0 do
|
|
574
|
-
date += 1
|
|
575
|
-
end
|
|
576
|
-
# Thursday is four days after Sunday
|
|
577
|
-
date + 4
|
|
578
|
-
},
|
|
579
|
-
|
|
580
|
-
"ch_gl_naefelser_fahrt(year)" => Proc.new { |year|
|
|
581
|
-
date = Date.civil(year,4,1)
|
|
582
|
-
# Find the first Thursday of April
|
|
583
|
-
until date.wday.eql? 4 do
|
|
584
|
-
date += 1
|
|
585
|
-
end
|
|
586
|
-
|
|
587
|
-
if date.eql?(Holidays::Factory::DateCalculator::Easter::Gregorian.easter_calculator.calculate_easter_for(year)-3)
|
|
588
|
-
date += 7
|
|
589
|
-
end
|
|
590
|
-
date
|
|
591
|
-
},
|
|
592
|
-
|
|
593
|
-
"ch_be_zibelemaerit(year)" => Proc.new { |year|
|
|
594
|
-
date = Date.civil(year,11,1)
|
|
595
|
-
# Find the first Monday of November
|
|
596
|
-
until date.wday.eql? 1 do
|
|
597
|
-
date += 1
|
|
598
|
-
end
|
|
599
|
-
# There are 21 days between the first monday
|
|
600
|
-
# and the 4rth Monday after
|
|
601
|
-
date + 21
|
|
602
|
-
},
|
|
603
|
-
|
|
604
|
-
"de_buss_und_bettag(year)" => Proc.new { |year|
|
|
605
|
-
date = Date.civil(year,11,23)
|
|
606
|
-
if date.wday > 3
|
|
607
|
-
date -= (date.wday - 3)
|
|
608
|
-
else
|
|
609
|
-
date -= (date.wday + 4)
|
|
610
|
-
end
|
|
611
|
-
date
|
|
612
|
-
},
|
|
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
|
-
|
|
623
|
-
"is_sumardagurinn_fyrsti(year)" => Proc.new { |year|
|
|
624
|
-
date = Date.civil(year,4,18)
|
|
625
|
-
if date.wday < 4
|
|
626
|
-
date += (4 - date.wday)
|
|
627
|
-
else
|
|
628
|
-
date += (11 - date.wday)
|
|
629
|
-
end
|
|
630
|
-
date
|
|
631
|
-
},
|
|
632
|
-
|
|
633
|
-
"lv_song_and_dance_festival_end_date(year)" => Proc.new { |year|
|
|
634
|
-
case year
|
|
635
|
-
when 2018
|
|
636
|
-
# https://likumi.lv/ta/id/281541 (Ministru kabineta rīkojums Nr. 252 "Par XXVI Vispārējo latviešu dziesmu un XVI Deju svētku norises laiku")
|
|
637
|
-
Date.new(2018, 7, 8)
|
|
638
|
-
when 2023
|
|
639
|
-
# https://likumi.lv/ta/id/330067 (Ministru kabineta rīkojums Nr. 92 "Par XXVII Vispārējo latviešu dziesmu un XVII Deju svētku norises laiku")
|
|
640
|
-
Date.new(2023, 7, 9)
|
|
641
|
-
when 2028
|
|
642
|
-
# Event's period/next year is known, but precise dates aren't.
|
|
643
|
-
# Previously, dates were announced 2 years ahead, so on ~2026-05 this method would need to be revisited.
|
|
644
|
-
end
|
|
645
|
-
},
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
}
|
|
558
|
+
{}
|
|
649
559
|
end
|
|
650
560
|
end
|
|
651
561
|
end
|
|
@@ -31,31 +31,7 @@ module Holidays
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def self.custom_methods
|
|
34
|
-
{
|
|
35
|
-
"fi_juhannusaatto(year)" => Proc.new { |year|
|
|
36
|
-
date = Date.civil(year,6,19)
|
|
37
|
-
if date.wday > 5 #if 19.6 is saturday
|
|
38
|
-
date += 6
|
|
39
|
-
else
|
|
40
|
-
date += (5 - date.wday)
|
|
41
|
-
end
|
|
42
|
-
date
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
"fi_juhannuspaiva(year)" => Proc.new { |year|
|
|
46
|
-
date = Date.civil(year,6,20)
|
|
47
|
-
date += (6 - date.wday)
|
|
48
|
-
date
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
"fi_pyhainpaiva(year)" => Proc.new { |year|
|
|
52
|
-
date = Date.civil(year,10,31)
|
|
53
|
-
date += (6 - date.wday)
|
|
54
|
-
date
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
34
|
+
{}
|
|
59
35
|
end
|
|
60
36
|
end
|
|
61
37
|
end
|
|
@@ -26,18 +26,7 @@ module Holidays
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def self.custom_methods
|
|
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
|
-
|
|
40
|
-
}
|
|
29
|
+
{}
|
|
41
30
|
end
|
|
42
31
|
end
|
|
43
32
|
end
|
|
@@ -42,19 +42,7 @@ module Holidays
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def self.custom_methods
|
|
45
|
-
{
|
|
46
|
-
"is_sumardagurinn_fyrsti(year)" => Proc.new { |year|
|
|
47
|
-
date = Date.civil(year,4,18)
|
|
48
|
-
if date.wday < 4
|
|
49
|
-
date += (4 - date.wday)
|
|
50
|
-
else
|
|
51
|
-
date += (11 - date.wday)
|
|
52
|
-
end
|
|
53
|
-
date
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
45
|
+
{}
|
|
58
46
|
end
|
|
59
47
|
end
|
|
60
48
|
end
|
|
@@ -66,101 +66,7 @@ module Holidays
|
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def self.custom_methods
|
|
69
|
-
{
|
|
70
|
-
"jp_health_sports_day_substitute(year)" => Proc.new { |year|
|
|
71
|
-
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))
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
"jp_vernal_equinox_day(year)" => Proc.new { |year|
|
|
75
|
-
day =
|
|
76
|
-
case year
|
|
77
|
-
when 1851..1899
|
|
78
|
-
19.8277
|
|
79
|
-
when 1900..1979
|
|
80
|
-
20.8357
|
|
81
|
-
when 1980..2099
|
|
82
|
-
20.8431
|
|
83
|
-
when 2100..2150
|
|
84
|
-
21.8510
|
|
85
|
-
else
|
|
86
|
-
raise IndexError.new("Out of range")
|
|
87
|
-
end
|
|
88
|
-
day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor
|
|
89
|
-
day = day.floor
|
|
90
|
-
Date.civil(year, 3, day)
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
"jp_vernal_equinox_day_substitute(year)" => Proc.new { |year|
|
|
94
|
-
date = Holidays::Factory::Definition.custom_methods_repository.find("jp_vernal_equinox_day(year)").call(year)
|
|
95
|
-
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
|
|
96
|
-
},
|
|
97
|
-
|
|
98
|
-
"jp_marine_day_substitute(year)" => Proc.new { |year|
|
|
99
|
-
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))
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
"jp_national_culture_day(year)" => Proc.new { |year|
|
|
103
|
-
day =
|
|
104
|
-
case year
|
|
105
|
-
when 1851..1899
|
|
106
|
-
22.2588
|
|
107
|
-
when 1900..1979
|
|
108
|
-
23.2588
|
|
109
|
-
when 1980..2099
|
|
110
|
-
23.2488
|
|
111
|
-
when 2100..2150
|
|
112
|
-
24.2488
|
|
113
|
-
else
|
|
114
|
-
raise IndexError.new("Out of range")
|
|
115
|
-
end
|
|
116
|
-
day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor
|
|
117
|
-
day = day.floor
|
|
118
|
-
Date.civil(year, 9, day)
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
"jp_national_culture_day_substitute(year)" => Proc.new { |year|
|
|
122
|
-
date = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year)
|
|
123
|
-
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
|
|
124
|
-
},
|
|
125
|
-
|
|
126
|
-
"jp_citizens_holiday(year)" => Proc.new { |year|
|
|
127
|
-
ncd = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year)
|
|
128
|
-
if ncd.wday == 3
|
|
129
|
-
ncd - 1
|
|
130
|
-
else
|
|
131
|
-
nil
|
|
132
|
-
end
|
|
133
|
-
},
|
|
134
|
-
|
|
135
|
-
"jp_mountain_holiday(year)" => Proc.new { |year|
|
|
136
|
-
Date.civil(year, 8, 11)
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
"jp_mountain_holiday_substitute(year)" => Proc.new { |year|
|
|
140
|
-
date = Holidays::Factory::Definition.custom_methods_repository.find("jp_mountain_holiday(year)").call(year)
|
|
141
|
-
Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
|
|
142
|
-
},
|
|
143
|
-
|
|
144
|
-
"jp_respect_for_aged_holiday_substitute(year)" => Proc.new { |year|
|
|
145
|
-
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))
|
|
146
|
-
},
|
|
147
|
-
|
|
148
|
-
"jp_substitute_holiday(year, month, day)" => Proc.new { |year, month, day|
|
|
149
|
-
date = Date.civil(year, month, day)
|
|
150
|
-
date.wday == 0 ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : nil
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
"jp_next_weekday(date)" => Proc.new { |date|
|
|
154
|
-
# This suuuucks. I have no idea how to make this not reach into our interal ruby API to do this.
|
|
155
|
-
# I'm punting, I'll come back to this.
|
|
156
|
-
is_holiday = Holidays::JP.holidays_by_month[date.month].any? do |holiday|
|
|
157
|
-
holiday[:mday] == date.day
|
|
158
|
-
end
|
|
159
|
-
date.wday == 0 || is_holiday ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : date
|
|
160
|
-
},
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
69
|
+
{}
|
|
164
70
|
end
|
|
165
71
|
end
|
|
166
72
|
end
|
|
@@ -12,7 +12,8 @@ module Holidays
|
|
|
12
12
|
|
|
13
13
|
def self.holidays_by_month
|
|
14
14
|
{
|
|
15
|
-
1 => [{:
|
|
15
|
+
1 => [{:function => "kr_seollal_eve(year, region)", :function_arguments => [:year, :region], :name => "설날 연휴", :regions => [:kr]},
|
|
16
|
+
{:mday => 1, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "설날", :regions => [:kr]},
|
|
16
17
|
{:mday => 2, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "설날 연휴", :regions => [:kr]},
|
|
17
18
|
{:mday => 1, :name => "신정", :regions => [:kr]}],
|
|
18
19
|
3 => [{:mday => 1, :name => "3·1절", :regions => [:kr]}],
|
|
@@ -26,15 +27,12 @@ module Holidays
|
|
|
26
27
|
{:mday => 15, :name => "광복절", :regions => [:kr]}],
|
|
27
28
|
10 => [{:mday => 3, :name => "개천절", :regions => [:kr]},
|
|
28
29
|
{:mday => 9, :name => "한글날", :regions => [:kr]}],
|
|
29
|
-
12 => [{:mday => 25, :name => "크리스마스", :regions => [:kr]}
|
|
30
|
-
{:mday => 30, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "설날 연휴", :regions => [:kr]}]
|
|
30
|
+
12 => [{:mday => 25, :name => "크리스마스", :regions => [:kr]}]
|
|
31
31
|
}
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def self.custom_methods
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
}
|
|
35
|
+
{}
|
|
38
36
|
end
|
|
39
37
|
end
|
|
40
38
|
end
|
|
@@ -34,23 +34,7 @@ module Holidays
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def self.custom_methods
|
|
37
|
-
{
|
|
38
|
-
"lv_song_and_dance_festival_end_date(year)" => Proc.new { |year|
|
|
39
|
-
case year
|
|
40
|
-
when 2018
|
|
41
|
-
# https://likumi.lv/ta/id/281541 (Ministru kabineta rīkojums Nr. 252 "Par XXVI Vispārējo latviešu dziesmu un XVI Deju svētku norises laiku")
|
|
42
|
-
Date.new(2018, 7, 8)
|
|
43
|
-
when 2023
|
|
44
|
-
# https://likumi.lv/ta/id/330067 (Ministru kabineta rīkojums Nr. 92 "Par XXVII Vispārējo latviešu dziesmu un XVII Deju svētku norises laiku")
|
|
45
|
-
Date.new(2023, 7, 9)
|
|
46
|
-
when 2028
|
|
47
|
-
# Event's period/next year is known, but precise dates aren't.
|
|
48
|
-
# Previously, dates were announced 2 years ahead, so on ~2026-05 this method would need to be revisited.
|
|
49
|
-
end
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
37
|
+
{}
|
|
54
38
|
end
|
|
55
39
|
end
|
|
56
40
|
end
|