holidays 4.7.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/CHANGELOG.md +9 -0
  4. data/CONTRIBUTING.md +21 -11
  5. data/Makefile +9 -6
  6. data/holidays.gemspec +1 -1
  7. data/lib/generated_definitions/MANIFEST +1 -0
  8. data/lib/generated_definitions/REGIONS.rb +1 -1
  9. data/lib/generated_definitions/hk.rb +112 -0
  10. data/lib/generated_definitions/kr.rb +4 -4
  11. data/lib/holidays/errors.rb +1 -0
  12. data/lib/holidays/finder/context/parse_options.rb +8 -3
  13. data/lib/holidays/load_all_definitions.rb +0 -11
  14. data/lib/holidays/version.rb +1 -1
  15. data/test/defs/test_defs_hk.rb +38 -0
  16. data/test/defs/test_defs_jp.rb +1 -0
  17. data/test/defs/test_defs_kr.rb +1 -1
  18. data/test/holidays/definition/validator/test_region.rb +4 -0
  19. data/test/holidays/finder/context/test_parse_options.rb +9 -1
  20. data/test/integration/test_all_regions.rb +4 -4
  21. data/test/integration/test_custom_holidays.rb +4 -4
  22. data/test/integration/test_holidays.rb +6 -6
  23. metadata +6 -60
  24. data/definitions/README.md +0 -353
  25. data/definitions/ar.yaml +0 -93
  26. data/definitions/at.yaml +0 -72
  27. data/definitions/au.yaml +0 -378
  28. data/definitions/be_fr.yaml +0 -69
  29. data/definitions/be_nl.yaml +0 -69
  30. data/definitions/bg.yaml +0 -127
  31. data/definitions/br.yaml +0 -77
  32. data/definitions/ca.yaml +0 -317
  33. data/definitions/ch.yaml +0 -193
  34. data/definitions/cl.yaml +0 -94
  35. data/definitions/cr.yaml +0 -65
  36. data/definitions/cz.yaml +0 -73
  37. data/definitions/de.yaml +0 -209
  38. data/definitions/dk.yaml +0 -130
  39. data/definitions/ecb_target.yaml +0 -44
  40. data/definitions/el.yaml +0 -84
  41. data/definitions/es.yaml +0 -203
  42. data/definitions/federal_reserve.yaml +0 -114
  43. data/definitions/fedex.yaml +0 -62
  44. data/definitions/fi.yaml +0 -115
  45. data/definitions/fr.yaml +0 -79
  46. data/definitions/gb.yaml +0 -151
  47. data/definitions/hr.yaml +0 -79
  48. data/definitions/hu.yaml +0 -63
  49. data/definitions/ie.yaml +0 -89
  50. data/definitions/index.yaml +0 -61
  51. data/definitions/is.yaml +0 -146
  52. data/definitions/it.yaml +0 -67
  53. data/definitions/jp.yaml +0 -321
  54. data/definitions/kr.yaml +0 -282
  55. data/definitions/li.yaml +0 -107
  56. data/definitions/lt.yaml +0 -89
  57. data/definitions/lu.yaml +0 -56
  58. data/definitions/ma.yaml +0 -52
  59. data/definitions/mx.yaml +0 -106
  60. data/definitions/my.yaml +0 -51
  61. data/definitions/nerc.yaml +0 -51
  62. data/definitions/nl.yaml +0 -73
  63. data/definitions/no.yaml +0 -90
  64. data/definitions/north_america_informal.yaml +0 -61
  65. data/definitions/nyse.yaml +0 -64
  66. data/definitions/nz.yaml +0 -163
  67. data/definitions/pe.yaml +0 -119
  68. data/definitions/ph.yaml +0 -94
  69. data/definitions/pl.yaml +0 -320
  70. data/definitions/pt.yaml +0 -89
  71. data/definitions/ro.yaml +0 -78
  72. data/definitions/se.yaml +0 -120
  73. data/definitions/sg.yaml +0 -56
  74. data/definitions/si.yaml +0 -86
  75. data/definitions/sk.yaml +0 -80
  76. data/definitions/united_nations.yaml +0 -189
  77. data/definitions/ups.yaml +0 -62
  78. data/definitions/us.yaml +0 -103
  79. data/definitions/ve.yaml +0 -74
  80. data/definitions/vi.yaml +0 -29
  81. data/definitions/za.yaml +0 -80
@@ -1,321 +0,0 @@
1
- # Japanese holiday definitions for Ruby Holiday gem.
2
- # Reference:
3
- # - http://www.h3.dion.ne.jp/~sakatsu/holiday_topic.htm
4
- # - http://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
5
- # - https://en.wikipedia.org/wiki/Public_holidays_in_Japan
6
- #
7
- # For Japanese/English translations of each holiday:
8
- # - http://www.japanesecalendar.net/holidays/2016/
9
- #
10
- # This definition can calculate current Japanese holidays,
11
- # don't compat with past changes of Japan Holiday Act.
12
- #
13
- # CHANGES:
14
- # 2010-12-25: Initial version by Tatsuki Sugiura <sugi@nemui.org>
15
- # 2014-11-09: Added substitute holiday by Yoshiyuki Hirano <yoshiyuki.hirano@henteco-labs.com>
16
- # 2015-05-10: Non-Monday substitute holidays by Shuhei Kagawa <shuhei.kagawa@gmail.com>
17
- # 2015-12-15: Added mountain day by Tsuyoshi Sano <ttwo32@gmail.com>
18
- # 2016-03-26: Updated to match new custom method signature. See below for more. Phil Trimble <philtrimble@gmail.com>
19
- #
20
- # NOTE: This is the most complex set of custom date methods in the entire
21
- # project, mainly surrounding the idea of 'substitute' holidays. Since this is
22
- # the only one that is this complex I have settled on a less-than-ideal solution.
23
- # It is overly verbose and not easy to follow. It will be a target for refactoring
24
- # in the near future.
25
- ---
26
- months:
27
- 1:
28
- - name: 元日
29
- regions: [jp]
30
- mday: 1
31
- - name: 成人の日
32
- regions: [jp]
33
- wday: 1
34
- week: 2
35
- - name: 振替休日
36
- regions: [jp]
37
- mday: 1
38
- function: jp_substitute_holiday(year, month, day)
39
- 2:
40
- - name: 建国記念日
41
- regions: [jp]
42
- mday: 11
43
- - name: 振替休日
44
- regions: [jp]
45
- mday: 11
46
- function: jp_substitute_holiday(year, month, day)
47
- 3:
48
- - name: 春分の日
49
- regions: [jp]
50
- function: jp_vernal_equinox_day(year)
51
- - name: 振替休日
52
- regions: [jp]
53
- function: jp_vernal_equinox_day_substitute(year)
54
- 4:
55
- - name: 昭和の日
56
- regions: [jp]
57
- mday: 29
58
- - name: 振替休日
59
- regions: [jp]
60
- mday: 29
61
- function: jp_substitute_holiday(year, month, day)
62
- 5:
63
- - name: 憲法記念日
64
- regions: [jp]
65
- mday: 3
66
- - name: みどりの日
67
- regions: [jp]
68
- mday: 4
69
- - name: こどもの日
70
- regions: [jp]
71
- mday: 5
72
- - name: 振替休日
73
- regions: [jp]
74
- mday: 3
75
- function: jp_substitute_holiday(year, month, day)
76
- - name: 振替休日
77
- regions: [jp]
78
- mday: 4
79
- function: jp_substitute_holiday(year, month, day)
80
- - name: 振替休日
81
- regions: [jp]
82
- mday: 5
83
- function: jp_substitute_holiday(year, month, day)
84
- 7:
85
- - name: 海の日
86
- regions: [jp]
87
- mday: 20
88
- year_ranges:
89
- - between: 1996..2002
90
- - name: 海の日
91
- regions: [jp]
92
- wday: 1
93
- week: 3
94
- year_ranges:
95
- - after: 2003
96
- - name: 振替休日
97
- regions: [jp]
98
- function: jp_marine_day_substitute(year)
99
- year_ranges:
100
- - between: 1996..2002
101
- 8:
102
- - name: 山の日
103
- regions: [jp]
104
- year_ranges:
105
- - after: 2016
106
- function: jp_mountain_holiday(year)
107
- - name: 振替休日
108
- regions: [jp]
109
- year_ranges:
110
- - after: 2016
111
- function: jp_mountain_holiday_substitute(year)
112
- 9:
113
- - name: 敬老の日
114
- regions: [jp]
115
- wday: 1
116
- week: 3
117
- - name: 振替休日
118
- regions: [jp]
119
- function: jp_respect_for_aged_holiday_substitute(year)
120
- - name: 国民の休日
121
- regions: [jp]
122
- year_ranges:
123
- - after: 2003
124
- function: jp_citizens_holiday(year)
125
- - name: 秋分の日
126
- regions: [jp]
127
- function: jp_national_culture_day(year)
128
- - name: 振替休日
129
- regions: [jp]
130
- function: jp_national_culture_day_substitute(year)
131
- 10:
132
- - name: 体育の日
133
- regions: [jp]
134
- wday: 1
135
- week: 2
136
- - name: 振替休日
137
- regions: [jp]
138
- function: jp_health_sports_day_substitute(year)
139
- 11:
140
- - name: 文化の日
141
- regions: [jp]
142
- mday: 3
143
- - name: 振替休日
144
- regions: [jp]
145
- mday: 3
146
- function: jp_substitute_holiday(year, month, day)
147
- - name: 勤労感謝の日
148
- regions: [jp]
149
- mday: 23
150
- - name: 振替休日
151
- regions: [jp]
152
- mday: 23
153
- function: jp_substitute_holiday(year, month, day)
154
- 12:
155
- - name: 天皇誕生日
156
- regions: [jp]
157
- mday: 23
158
- - name: 振替休日
159
- regions: [jp]
160
- mday: 23
161
- function: jp_substitute_holiday(year, month, day)
162
-
163
- methods:
164
- jp_health_sports_day_substitute:
165
- arguments: year
166
- source: |
167
- 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))
168
- jp_vernal_equinox_day:
169
- arguments: year
170
- source: |
171
- day =
172
- case year
173
- when 1851..1899
174
- 19.8277
175
- when 1900..1979
176
- 20.8357
177
- when 1980..2099
178
- 20.8431
179
- when 2100..2150
180
- 21.8510
181
- else
182
- raise IndexError.new("Out of range")
183
- end
184
- day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor
185
- day = day.floor
186
- Date.civil(year, 3, day)
187
- jp_vernal_equinox_day_substitute:
188
- arguments: year
189
- source: |
190
- date = Holidays::Factory::Definition.custom_methods_repository.find("jp_vernal_equinox_day(year)").call(year)
191
- Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
192
- jp_marine_day_substitute:
193
- arguments: year
194
- source: |
195
- 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))
196
- jp_national_culture_day:
197
- arguments: year
198
- source: |
199
- day =
200
- case year
201
- when 1851..1899
202
- 22.2588
203
- when 1900..1979
204
- 23.2588
205
- when 1980..2099
206
- 23.2488
207
- when 2100..2150
208
- 24.2488
209
- else
210
- raise IndexError.new("Out of range")
211
- end
212
- day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor
213
- day = day.floor
214
- Date.civil(year, 9, day)
215
- jp_national_culture_day_substitute:
216
- arguments: year
217
- source: |
218
- date = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year)
219
- Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
220
- jp_citizens_holiday:
221
- arguments: year
222
- source: |
223
- ncd = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year)
224
- if ncd.wday == 3
225
- ncd - 1
226
- else
227
- nil
228
- end
229
- jp_mountain_holiday:
230
- arguments: year
231
- source: |
232
- Date.civil(year, 8, 11)
233
- jp_mountain_holiday_substitute:
234
- arguments: year
235
- source: |
236
- date = Holidays::Factory::Definition.custom_methods_repository.find("jp_mountain_holiday(year)").call(year)
237
- Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday)
238
- jp_respect_for_aged_holiday_substitute:
239
- arguments: year
240
- source: |
241
- 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))
242
- jp_substitute_holiday:
243
- arguments: year, month, day
244
- source: |
245
- date = Date.civil(year, month, day)
246
- date.wday == 0 ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : nil
247
- jp_next_weekday:
248
- arguments: date
249
- source: |
250
- is_holiday = Holidays::JP.holidays_by_month[date.month].any? do |holiday|
251
- holiday[:mday] == date.day
252
- end
253
- date.wday == 0 || is_holiday ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : date
254
-
255
- tests: |
256
- {Date.civil(2008,1,1) => '元日',
257
- Date.civil(2010,1,11) => '成人の日',
258
- Date.civil(2008,2,11) => '建国記念日',
259
- Date.civil(2008,4,29) => '昭和の日',
260
- Date.civil(2008,5,3) => '憲法記念日',
261
- Date.civil(2008,5,5) => 'こどもの日',
262
- Date.civil(2010,7,19) => '海の日',
263
- Date.civil(2010,9,20) => '敬老の日',
264
- Date.civil(2010,10,11) => '体育の日',
265
- Date.civil(2008,11,3) => '文化の日',
266
- Date.civil(2008,11,23) => '勤労感謝の日',
267
- Date.civil(2008,12,23) => '天皇誕生日',
268
- Date.civil(2010,3,22) => '振替休日',
269
- Date.civil(2008,11,24) => '振替休日',
270
- Date.civil(2012,1,2) => '振替休日',
271
- Date.civil(2013,5,6) => '振替休日',
272
- Date.civil(2014,5,6) => '振替休日',
273
- Date.civil(2015,5,6) => '振替休日',
274
- Date.civil(2019,8,12) => '振替休日'
275
- }.each do |date, name|
276
- assert_equal name, (Holidays.on(date, :jp, :informal)[0] || {})[:name]
277
- end
278
-
279
- # vernal equinox day
280
- [Date.civil(2004,3,20), Date.civil(2005,3,20), Date.civil(2006,3,21),
281
- Date.civil(2007,3,21), Date.civil(2008,3,20), Date.civil(2009,3,20),
282
- Date.civil(2010,3,21)].each do |date|
283
- assert_equal '春分の日', Holidays.on(date, :jp)[0][:name]
284
- end
285
-
286
- # national culture day
287
- [Date.civil(2004,9,23), Date.civil(2005,9,23), Date.civil(2006,9,23),
288
- Date.civil(2007,9,23), Date.civil(2008,9,23), Date.civil(2009,9,23),
289
- Date.civil(2010,9,23), Date.civil(2011,9,23), Date.civil(2012,9,22),
290
- Date.civil(2013,9,23)].each do |date|
291
- assert_equal '秋分の日', Holidays.on(date, :jp)[0][:name]
292
- end
293
-
294
- # citizens holiday
295
- [Date.civil(2032,9,21), Date.civil(2049,9,21), Date.civil(2009,9,22),
296
- Date.civil(2015,9,22), Date.civil(2026,9,22)].each do |date|
297
- assert_equal '国民の休日', Holidays.on(date, :jp)[0][:name]
298
- end
299
-
300
- # marine day since 1996
301
- [Date.civil(1996, 7, 20), Date.civil(2002, 7, 20), Date.civil(2003, 7, 21),
302
- Date.civil(2004, 7, 19), Date.civil(2005, 7, 18), Date.civil(2006, 7, 17),
303
- Date.civil(2007, 7, 16), Date.civil(2009, 7, 20), Date.civil(2013, 7, 15),
304
- Date.civil(2014, 7, 21)].each do |date|
305
- assert_equal '海の日', Holidays.on(date, :jp)[0][:name]
306
- end
307
-
308
- # mountain holiday start since 2016
309
- [Date.civil(2016,8,11), Date.civil(2017,8,11),Date.civil(2018,8,11),
310
- Date.civil(2019,8,11), Date.civil(2020,8,11),Date.civil(2021,8,11),
311
- Date.civil(2022,8,11)].each do |date|
312
- assert_equal '山の日', Holidays.on(date, :jp)[0][:name]
313
- end
314
-
315
- # before 2016, there is no mountain holiday.
316
- assert_nil Holidays.on(Date.civil(2015,8,11), :jp)[0]
317
-
318
- # before 2003, there is no citizens holiday.
319
- # [note] citizens holiday requires that jp_national_culture_day is wednesday.
320
- # Before 2003, the closest past year that mathches above condition is 1998.
321
- assert_nil Holidays.on(Date.civil(1998,9,22), :jp)[0]
@@ -1,282 +0,0 @@
1
- # Republic of Korea holiday definitions for the Ruby Holiday gem.
2
- # Provided by Jonathan Pike
3
- #
4
- # Updated: 2016-09-23.
5
- # Sources:
6
- # - https://en.wikipedia.org/wiki/List_of_public_holidays_in_South_Korea
7
- # - http://www.hko.gov.hk/gts/time/conversion.htm (for Lunar Calendar Conversions)
8
-
9
- ---
10
- months:
11
- 0:
12
- - name: Korean New Year
13
- regions: [kr]
14
- function: kr_new_years(year)
15
- - name: Buddah's Birthday
16
- regions: [kr]
17
- function: kr_buddahs_birthday(year)
18
- - name: Korean Thanksgiving
19
- regions: [kr]
20
- function: kr_thanksgiving(year)
21
- 1:
22
- - name: New Year's Day
23
- regions: [kr]
24
- mday: 1
25
- 3:
26
- - name: Independence Movement Day
27
- regions: [kr]
28
- mday: 1
29
- 5:
30
- - name: Children's Day
31
- regions: [kr]
32
- mday: 5
33
- 6:
34
- - name: Memorial Day
35
- regions: [kr]
36
- mday: 6
37
- 7:
38
- - name: Constitution Day
39
- regions: [kr]
40
- mday: 17
41
- type: informal
42
- 8:
43
- - name: Liberation Day
44
- regions: [kr]
45
- mday: 15
46
- 10:
47
- - name: National Foundation Day
48
- regions: [kr]
49
- mday: 3
50
- - name: Hangul Day
51
- regions: [kr]
52
- mday: 9
53
- 12:
54
- - name: Christmas Day
55
- regions: [kr]
56
- mday: 25
57
-
58
- methods:
59
- kr_new_years:
60
- arguments: year
61
- source: |
62
- month_day = case year
63
- when 1941
64
- [1, 17]
65
- when 1966
66
- [1, 21]
67
- when 1909, 1947, 2004, 2023, 2042
68
- [1, 22]
69
- when 1917, 1928, 1974, 1993, 2012, 2031, 2015
70
- [1, 23]
71
- when 1925, 1936, 1955, 2001, 2039
72
- [1, 24]
73
- when 1906, 1944, 1963, 1982, 2020
74
- [1, 25]
75
- when 1914, 1933, 2009, 2028, 2047
76
- [1, 26]
77
- when 1952, 1971, 1990
78
- [1, 27]
79
- when 1922, 1960, 1979, 1998, 2017, 2036
80
- [1, 28]
81
- when 1903, 1949, 1987, 2006, 2025
82
- [1, 29]
83
- when 1911, 1930, 1968, 2044
84
- [1, 30]
85
- when 1938, 1957, 1976, 1995, 2014, 2033
86
- [1, 31]
87
- when 1919, 1948, 2003, 2022, 2041
88
- [2, 1]
89
- when 1908, 1927, 1946, 1965, 1984, 2049
90
- [2, 2]
91
- when 1916, 1954, 1973, 2011, 2030
92
- [2, 3]
93
- when 1905, 1935, 1992, 2038
94
- [2, 4]
95
- when 1924, 1943, 1962, 1981, 1989, 2000, 2019
96
- [2, 5]
97
- when 1913, 1932, 1951, 1970, 2027, 2046
98
- [2, 6]
99
- when 1978, 1997, 2008
100
- [2, 7]
101
- when 1902, 1921, 1940, 1959, 2016, 2035
102
- [2, 8]
103
- when 1967, 1986, 2005
104
- [2, 9]
105
- when 1910, 1929, 1994, 2013, 2024, 2043
106
- [2, 10]
107
- when 1918, 1937, 1975, 2032
108
- [2, 11]
109
- when 1956, 2002, 2021, 2040
110
- [2, 12]
111
- when 1907, 1926, 1945, 1964, 1983, 2029
112
- [2, 13]
113
- when 1915, 1934, 1953, 2010, 2048
114
- [2, 14]
115
- when 1942, 1961, 1972, 1991, 2037
116
- [2, 15]
117
- when 1904, 1923, 1980, 1999, 2018
118
- [2, 16]
119
- when 1931, 1950, 1969, 1988, 2026, 2045
120
- [2, 17]
121
- when 1912, 1958, 1977, 2007
122
- [2, 18]
123
- when 1901, 1939, 1996, 2015, 2034
124
- [2, 19]
125
- when 1920, 1985
126
- [2, 20]
127
- end
128
- Date.civil(year, month_day[0], month_day[1])
129
-
130
- kr_buddahs_birthday:
131
- arguments: year
132
- source: |
133
- month_day = case year
134
- when 2039
135
- [4, 30]
136
- when 1952, 1963, 1982
137
- [5, 1]
138
- when 1914, 1933, 1971, 1990, 2009, 2028, 2047
139
- [5, 2]
140
- when 1941, 1960, 1979, 1998, 2017, 2036
141
- [5, 3]
142
- when 1901, 1903, 1922, 1968
143
- [5, 4]
144
- when 1949, 1987, 2006, 2012, 2025, 2044
145
- [5, 5]
146
- when 1911, 1930, 1976, 2014, 2033
147
- [5, 6]
148
- when 1908, 1919, 1957, 1995, 2041
149
- [5, 7]
150
- when 1927, 1946, 1965, 1984, 2003, 2022
151
- [5, 8]
152
- when 1916, 2030, 2049
153
- [5, 9]
154
- when 1935, 1954, 1973, 1992, 2011
155
- [5, 10]
156
- when 1905, 1924, 1943, 1962, 1981, 2000, 2038
157
- [5, 11]
158
- when 1970, 1989, 2008, 2019
159
- [5, 12]
160
- when 1913, 1932, 1951, 2027
161
- [5, 13]
162
- when 1938, 1940, 1978, 1997, 2016
163
- [5, 14]
164
- when 1902, 1921, 1959, 2005, 2024, 2035
165
- [5, 15]
166
- when 1910, 1929, 1948, 1967, 1986, 2032, 2043
167
- [5, 16]
168
- when 1918, 1937, 1956, 2013
169
- [5, 17]
170
- when 1975, 1994, 2040
171
- [5, 18]
172
- when 1907, 1926, 1945, 1964, 2002, 2021
173
- [5, 19]
174
- when 1934, 1953, 1972, 1983, 2029, 2046, 2048
175
- [5, 20]
176
- when 1915, 1980, 1991, 2010
177
- [5, 21]
178
- when 1904, 1942, 1961, 1999, 2018, 2037
179
- [5, 22]
180
- when 1923, 1969, 1988
181
- [5, 23]
182
- when 1912, 1931, 1950, 1996, 2007, 2026, 2045
183
- [5, 24]
184
- when 1920, 1977, 2015, 2034
185
- [5, 25]
186
- when 1909, 1928, 1939, 1947, 1958, 2004, 2023, 2042
187
- [5, 26]
188
- when 1966, 1985
189
- [5, 27]
190
- when 1917, 1936, 1993, 2031, 2050
191
- [5, 28]
192
- when 1925, 1944, 1955, 1974
193
- [5, 29]
194
- when 1906, 2001, 2020
195
- [5, 30]
196
- end
197
- Date.civil(year, month_day[0], month_day[1])
198
-
199
- kr_thanksgiving:
200
- arguments: year
201
- source: |
202
- month_day = case year
203
- when 1905, 1924, 1973
204
- [9, 8]
205
- when 1913, 1970, 1989, 2000, 2008, 2019, 2038
206
- [9, 10]
207
- when 1902, 1932, 1938, 1981, 2027
208
- [9, 11]
209
- when 1929, 1940, 1951, 1978, 2016, 2035
210
- [9, 12]
211
- when 1921, 1948, 1959, 1997, 2024
212
- [9, 13]
213
- when 1910, 1975, 2005
214
- [9, 14]
215
- when 1918, 1937, 1945, 1967, 1986, 2032, 2043
216
- [9, 15]
217
- when 1907, 1964, 1994, 2013, 2040
218
- [9, 16]
219
- when 1926, 1956, 1962, 1972, 2046, 2048
220
- [9, 17]
221
- when 1934, 1953, 2002, 2021
222
- [9, 18]
223
- when 1904, 1915, 1980, 2010, 2029
224
- [9, 19]
225
- when 1923, 1969, 1983, 1991, 1999
226
- [9, 20]
227
- when 1942, 1961, 1988, 2037
228
- [9, 21]
229
- when 1912, 1977 ,1996, 2007, 2015, 2018, 2026
230
- [9, 22]
231
- when 1931, 1939, 1950
232
- [9, 23]
233
- when 1909, 1920, 1947, 1958, 2034, 2045
234
- [9, 24]
235
- when 1917, 1928, 1936, 1966, 1985, 2050
236
- [9, 25]
237
- when 2001, 2004, 2023, 2042
238
- [9, 26]
239
- when 1906, 1925, 1944, 1955, 1974, 1993, 2031
240
- [9, 27]
241
- when 1914, 1963, 1971, 2009
242
- [9, 28]
243
- when 1933, 1952, 1982, 2020
244
- [9, 29]
245
- when 1941, 1979, 1990, 2017, 2028, 2036, 2047
246
- [9, 30]
247
- when 1901, 1960, 1968, 1987, 2006
248
- [10, 1]
249
- when 1903, 1922, 1949, 1998
250
- [10, 2]
251
- when 1911, 1976, 2014, 2033, 2044
252
- [10, 3]
253
- when 1927, 1930, 2012, 2025, 2041
254
- [10, 4]
255
- when 1908, 1919, 1935, 1946, 1957, 1995, 2039
256
- [10, 5]
257
- when 1916, 1965, 2003, 2022, 2030, 2049
258
- [10, 6]
259
- when 1984
260
- [10, 7]
261
- when 1943, 1954, 1992
262
- [10, 8]
263
- when 2011
264
- [10, 9]
265
- end
266
- Date.civil(year, month_day[0], month_day[1])
267
-
268
- tests: |
269
- {Date.civil(2016,2,8) => "Korean New Year",
270
- Date.civil(2016,5,14) => "Buddah\'s Birthday",
271
- Date.civil(2016,9,12) => "Korean Thanksgiving",
272
- Date.civil(2016,1,1) => "New Year\'s Day",
273
- Date.civil(2016,3,1) => "Independence Movement Day",
274
- Date.civil(2016,5,5) => "Children\'s Day",
275
- Date.civil(2016,6,6) => "Memorial Day",
276
- Date.civil(2016,7,17) => "Constitution Day",
277
- Date.civil(2016,8,15) => "Liberation Day",
278
- Date.civil(2016,10,3) => "National Foundation Day",
279
- Date.civil(2016,10,9) => "Hangul Day",
280
- Date.civil(2016,12,25) => "Christmas Day"}.each do |date, name|
281
- assert_equal name, (Holidays.on(date, :kr, :informal)[0] || {})[:name]
282
- end