revised_holidays 9.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.
Files changed (382) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ruby.yml +25 -0
  3. data/CHANGELOG.md +446 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE +21 -0
  7. data/Makefile +45 -0
  8. data/README.md +337 -0
  9. data/Rakefile +109 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +6 -0
  12. data/definitions/.github/workflows/ruby.yml +25 -0
  13. data/definitions/.gitignore +5 -0
  14. data/definitions/CHANGELOG.md +352 -0
  15. data/definitions/Gemfile +6 -0
  16. data/definitions/LICENSE +21 -0
  17. data/definitions/METHODS.yml +26 -0
  18. data/definitions/Makefile +9 -0
  19. data/definitions/README.md +22 -0
  20. data/definitions/ar.yaml +268 -0
  21. data/definitions/at.yaml +116 -0
  22. data/definitions/au.yaml +907 -0
  23. data/definitions/be_fr.yaml +153 -0
  24. data/definitions/be_nl.yaml +153 -0
  25. data/definitions/bg.yaml +186 -0
  26. data/definitions/br.yaml +178 -0
  27. data/definitions/ca.yaml +969 -0
  28. data/definitions/ch.yaml +277 -0
  29. data/definitions/cl.yaml +294 -0
  30. data/definitions/co.yaml +437 -0
  31. data/definitions/cr.yaml +100 -0
  32. data/definitions/cz.yaml +137 -0
  33. data/definitions/de.yaml +401 -0
  34. data/definitions/dk.yaml +220 -0
  35. data/definitions/doc/CONTRIBUTING.md +44 -0
  36. data/definitions/doc/MAINTAINERS.md +39 -0
  37. data/definitions/doc/SYNTAX.md +435 -0
  38. data/definitions/doc/architecture/README.md +15 -0
  39. data/definitions/doc/architecture/adr-001.md +86 -0
  40. data/definitions/doc/architecture/adr-002.md +64 -0
  41. data/definitions/ecbtarget.yaml +74 -0
  42. data/definitions/ee.yaml +123 -0
  43. data/definitions/es.yaml +495 -0
  44. data/definitions/federalreserve.yaml +389 -0
  45. data/definitions/federalreservebanks.yaml +821 -0
  46. data/definitions/fedex.yaml +102 -0
  47. data/definitions/fi.yaml +234 -0
  48. data/definitions/fr.yaml +157 -0
  49. data/definitions/gb.yaml +565 -0
  50. data/definitions/ge.yaml +158 -0
  51. data/definitions/gr.yaml +158 -0
  52. data/definitions/hk.yaml +287 -0
  53. data/definitions/hr.yaml +171 -0
  54. data/definitions/hu.yaml +156 -0
  55. data/definitions/ie.yaml +172 -0
  56. data/definitions/index.yaml +80 -0
  57. data/definitions/is.yaml +247 -0
  58. data/definitions/it.yaml +246 -0
  59. data/definitions/jp.yaml +761 -0
  60. data/definitions/ke.yaml +107 -0
  61. data/definitions/kr.yaml +166 -0
  62. data/definitions/kz.yaml +128 -0
  63. data/definitions/li.yaml +154 -0
  64. data/definitions/lib/validation/custom_method_validator.rb +38 -0
  65. data/definitions/lib/validation/definition_validator.rb +35 -0
  66. data/definitions/lib/validation/error.rb +11 -0
  67. data/definitions/lib/validation/month_validator.rb +58 -0
  68. data/definitions/lib/validation/run.rb +66 -0
  69. data/definitions/lib/validation/test_validator.rb +83 -0
  70. data/definitions/lt.yaml +198 -0
  71. data/definitions/lu.yaml +123 -0
  72. data/definitions/lv.yaml +229 -0
  73. data/definitions/ma.yaml +96 -0
  74. data/definitions/mt_en.yaml +131 -0
  75. data/definitions/mt_mt.yaml +131 -0
  76. data/definitions/mx.yaml +160 -0
  77. data/definitions/my.yaml +79 -0
  78. data/definitions/nerc.yaml +94 -0
  79. data/definitions/ng.yaml +97 -0
  80. data/definitions/nl.yaml +127 -0
  81. data/definitions/no.yaml +169 -0
  82. data/definitions/northamericainformal.yaml +105 -0
  83. data/definitions/nyse.yaml +137 -0
  84. data/definitions/nz.yaml +346 -0
  85. data/definitions/pe.yaml +208 -0
  86. data/definitions/ph.yaml +130 -0
  87. data/definitions/pl.yaml +796 -0
  88. data/definitions/pt.yaml +187 -0
  89. data/definitions/ro.yaml +240 -0
  90. data/definitions/rs_cyrl.yaml +129 -0
  91. data/definitions/rs_la.yaml +129 -0
  92. data/definitions/ru.yaml +108 -0
  93. data/definitions/se.yaml +238 -0
  94. data/definitions/sg.yaml +89 -0
  95. data/definitions/si.yaml +162 -0
  96. data/definitions/sk.yaml +154 -0
  97. data/definitions/spec/coverage_report.rb +7 -0
  98. data/definitions/spec/data/invalid/months/malformed/bad.yaml +15 -0
  99. data/definitions/spec/data/invalid/months/missing/no_months.yaml +9 -0
  100. data/definitions/spec/data/valid/simple.yaml +15 -0
  101. data/definitions/spec/spec_helper.rb +7 -0
  102. data/definitions/spec/validation/custom_method_validator_spec.rb +60 -0
  103. data/definitions/spec/validation/definition_validator_spec.rb +43 -0
  104. data/definitions/spec/validation/month_validator_spec.rb +175 -0
  105. data/definitions/spec/validation/test_validator_spec.rb +169 -0
  106. data/definitions/th.yaml +111 -0
  107. data/definitions/tn.yaml +83 -0
  108. data/definitions/tr.yaml +174 -0
  109. data/definitions/ua.yaml +161 -0
  110. data/definitions/unitednations.yaml +189 -0
  111. data/definitions/ups.yaml +102 -0
  112. data/definitions/us.yaml +965 -0
  113. data/definitions/ve.yaml +118 -0
  114. data/definitions/vi.yaml +54 -0
  115. data/definitions/za.yaml +139 -0
  116. data/doc/CONTRIBUTING.md +72 -0
  117. data/doc/MAINTAINERS.md +81 -0
  118. data/doc/REFERENCES +19 -0
  119. data/lib/generated_definitions/MANIFEST +83 -0
  120. data/lib/generated_definitions/REGIONS.rb +6 -0
  121. data/lib/generated_definitions/ar.rb +60 -0
  122. data/lib/generated_definitions/at.rb +37 -0
  123. data/lib/generated_definitions/au.rb +177 -0
  124. data/lib/generated_definitions/be.rb +42 -0
  125. data/lib/generated_definitions/be_fr.rb +36 -0
  126. data/lib/generated_definitions/be_nl.rb +36 -0
  127. data/lib/generated_definitions/bg.rb +53 -0
  128. data/lib/generated_definitions/br.rb +37 -0
  129. data/lib/generated_definitions/ca.rb +88 -0
  130. data/lib/generated_definitions/ch.rb +95 -0
  131. data/lib/generated_definitions/cl.rb +71 -0
  132. data/lib/generated_definitions/co.rb +121 -0
  133. data/lib/generated_definitions/cr.rb +35 -0
  134. data/lib/generated_definitions/cz.rb +37 -0
  135. data/lib/generated_definitions/de.rb +65 -0
  136. data/lib/generated_definitions/dk.rb +48 -0
  137. data/lib/generated_definitions/ecbtarget.rb +30 -0
  138. data/lib/generated_definitions/ee.rb +36 -0
  139. data/lib/generated_definitions/el.rb +38 -0
  140. data/lib/generated_definitions/es.rb +56 -0
  141. data/lib/generated_definitions/europe.rb +638 -0
  142. data/lib/generated_definitions/federalreserve.rb +35 -0
  143. data/lib/generated_definitions/federalreservebanks.rb +35 -0
  144. data/lib/generated_definitions/fedex.rb +36 -0
  145. data/lib/generated_definitions/fi.rb +61 -0
  146. data/lib/generated_definitions/fr.rb +39 -0
  147. data/lib/generated_definitions/gb.rb +51 -0
  148. data/lib/generated_definitions/ge.rb +41 -0
  149. data/lib/generated_definitions/gr.rb +38 -0
  150. data/lib/generated_definitions/hk.rb +106 -0
  151. data/lib/generated_definitions/hr.rb +40 -0
  152. data/lib/generated_definitions/hu.rb +35 -0
  153. data/lib/generated_definitions/ie.rb +33 -0
  154. data/lib/generated_definitions/is.rb +60 -0
  155. data/lib/generated_definitions/it.rb +45 -0
  156. data/lib/generated_definitions/jp.rb +166 -0
  157. data/lib/generated_definitions/ke.rb +34 -0
  158. data/lib/generated_definitions/kr.rb +40 -0
  159. data/lib/generated_definitions/kz.rb +38 -0
  160. data/lib/generated_definitions/li.rb +44 -0
  161. data/lib/generated_definitions/lt.rb +38 -0
  162. data/lib/generated_definitions/lu.rb +35 -0
  163. data/lib/generated_definitions/lv.rb +56 -0
  164. data/lib/generated_definitions/ma.rb +33 -0
  165. data/lib/generated_definitions/mt_en.rb +38 -0
  166. data/lib/generated_definitions/mt_mt.rb +38 -0
  167. data/lib/generated_definitions/mx.rb +54 -0
  168. data/lib/generated_definitions/my.rb +30 -0
  169. data/lib/generated_definitions/nerc.rb +30 -0
  170. data/lib/generated_definitions/ng.rb +33 -0
  171. data/lib/generated_definitions/nl.rb +37 -0
  172. data/lib/generated_definitions/no.rb +40 -0
  173. data/lib/generated_definitions/northamerica.rb +229 -0
  174. data/lib/generated_definitions/nyse.rb +34 -0
  175. data/lib/generated_definitions/nz.rb +105 -0
  176. data/lib/generated_definitions/pe.rb +43 -0
  177. data/lib/generated_definitions/ph.rb +50 -0
  178. data/lib/generated_definitions/pl.rb +73 -0
  179. data/lib/generated_definitions/pt.rb +40 -0
  180. data/lib/generated_definitions/ro.rb +39 -0
  181. data/lib/generated_definitions/rs_cyrl.rb +39 -0
  182. data/lib/generated_definitions/rs_la.rb +39 -0
  183. data/lib/generated_definitions/ru.rb +37 -0
  184. data/lib/generated_definitions/scandinavia.rb +166 -0
  185. data/lib/generated_definitions/se.rb +53 -0
  186. data/lib/generated_definitions/sg.rb +31 -0
  187. data/lib/generated_definitions/si.rb +39 -0
  188. data/lib/generated_definitions/sk.rb +39 -0
  189. data/lib/generated_definitions/southamerica.rb +248 -0
  190. data/lib/generated_definitions/th.rb +36 -0
  191. data/lib/generated_definitions/tn.rb +32 -0
  192. data/lib/generated_definitions/tr.rb +64 -0
  193. data/lib/generated_definitions/ua.rb +37 -0
  194. data/lib/generated_definitions/unitednations.rb +81 -0
  195. data/lib/generated_definitions/ups.rb +36 -0
  196. data/lib/generated_definitions/us.rb +153 -0
  197. data/lib/generated_definitions/ve.rb +36 -0
  198. data/lib/generated_definitions/vi.rb +29 -0
  199. data/lib/generated_definitions/za.rb +36 -0
  200. data/lib/holidays/core_extensions/date.rb +57 -0
  201. data/lib/holidays/core_extensions/time.rb +23 -0
  202. data/lib/holidays/date_calculator/day_of_month.rb +68 -0
  203. data/lib/holidays/date_calculator/easter.rb +91 -0
  204. data/lib/holidays/date_calculator/lunar_date.rb +371 -0
  205. data/lib/holidays/date_calculator/weekend_modifier.rb +80 -0
  206. data/lib/holidays/definition/context/function_processor.rb +91 -0
  207. data/lib/holidays/definition/context/generator.rb +209 -0
  208. data/lib/holidays/definition/context/load.rb +29 -0
  209. data/lib/holidays/definition/context/merger.rb +22 -0
  210. data/lib/holidays/definition/decorator/custom_method_proc.rb +28 -0
  211. data/lib/holidays/definition/decorator/custom_method_source.rb +30 -0
  212. data/lib/holidays/definition/decorator/test.rb +37 -0
  213. data/lib/holidays/definition/entity/custom_method.rb +11 -0
  214. data/lib/holidays/definition/entity/test.rb +11 -0
  215. data/lib/holidays/definition/generator/module.rb +54 -0
  216. data/lib/holidays/definition/generator/regions.rb +55 -0
  217. data/lib/holidays/definition/generator/test.rb +51 -0
  218. data/lib/holidays/definition/parser/custom_method.rb +67 -0
  219. data/lib/holidays/definition/parser/test.rb +86 -0
  220. data/lib/holidays/definition/repository/cache.rb +47 -0
  221. data/lib/holidays/definition/repository/custom_methods.rb +27 -0
  222. data/lib/holidays/definition/repository/holidays_by_month.rb +57 -0
  223. data/lib/holidays/definition/repository/proc_result_cache.rb +51 -0
  224. data/lib/holidays/definition/repository/regions.rb +46 -0
  225. data/lib/holidays/definition/validator/custom_method.rb +31 -0
  226. data/lib/holidays/definition/validator/region.rb +36 -0
  227. data/lib/holidays/definition/validator/test.rb +71 -0
  228. data/lib/holidays/errors.rb +11 -0
  229. data/lib/holidays/factory/date_calculator.rb +42 -0
  230. data/lib/holidays/factory/definition.rb +143 -0
  231. data/lib/holidays/factory/finder.rb +70 -0
  232. data/lib/holidays/finder/context/between.rb +45 -0
  233. data/lib/holidays/finder/context/dates_driver_builder.rb +64 -0
  234. data/lib/holidays/finder/context/next_holiday.rb +57 -0
  235. data/lib/holidays/finder/context/parse_options.rb +104 -0
  236. data/lib/holidays/finder/context/search.rb +111 -0
  237. data/lib/holidays/finder/context/year_holiday.rb +57 -0
  238. data/lib/holidays/finder/rules/in_region.rb +31 -0
  239. data/lib/holidays/finder/rules/year_range.rb +58 -0
  240. data/lib/holidays/load_all_definitions.rb +56 -0
  241. data/lib/holidays/version.rb +3 -0
  242. data/lib/holidays.rb +130 -0
  243. data/lib/revised_holidays.rb +1 -0
  244. data/revised_holidays.gemspec +31 -0
  245. data/test/coverage_report.rb +26 -0
  246. data/test/data/test_custom_govt_holiday_defs.yaml +5 -0
  247. data/test/data/test_custom_informal_holidays_defs.yaml +11 -0
  248. data/test/data/test_custom_year_range_holiday_defs.yaml +31 -0
  249. data/test/data/test_invalid_region.rb +15 -0
  250. data/test/data/test_multiple_custom_holiday_defs.yaml +12 -0
  251. data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
  252. data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
  253. data/test/data/test_region.rb +15 -0
  254. data/test/data/test_single_custom_holiday_defs.yaml +12 -0
  255. data/test/data/test_single_custom_holiday_with_custom_procs.yaml +28 -0
  256. data/test/defs/test_defs_ar.rb +69 -0
  257. data/test/defs/test_defs_at.rb +31 -0
  258. data/test/defs/test_defs_au.rb +233 -0
  259. data/test/defs/test_defs_be_fr.rb +45 -0
  260. data/test/defs/test_defs_be_nl.rb +45 -0
  261. data/test/defs/test_defs_bg.rb +41 -0
  262. data/test/defs/test_defs_br.rb +49 -0
  263. data/test/defs/test_defs_ca.rb +289 -0
  264. data/test/defs/test_defs_ch.rb +51 -0
  265. data/test/defs/test_defs_cl.rb +69 -0
  266. data/test/defs/test_defs_co.rb +113 -0
  267. data/test/defs/test_defs_cr.rb +29 -0
  268. data/test/defs/test_defs_cz.rb +37 -0
  269. data/test/defs/test_defs_de.rb +89 -0
  270. data/test/defs/test_defs_dk.rb +47 -0
  271. data/test/defs/test_defs_ecbtarget.rb +27 -0
  272. data/test/defs/test_defs_ee.rb +41 -0
  273. data/test/defs/test_defs_es.rb +137 -0
  274. data/test/defs/test_defs_europe.rb +1522 -0
  275. data/test/defs/test_defs_fed_ex.rb +24 -0
  276. data/test/defs/test_defs_federalreserve.rb +119 -0
  277. data/test/defs/test_defs_federalreservebanks.rb +251 -0
  278. data/test/defs/test_defs_fedex.rb +31 -0
  279. data/test/defs/test_defs_fi.rb +59 -0
  280. data/test/defs/test_defs_fr.rb +43 -0
  281. data/test/defs/test_defs_gb.rb +159 -0
  282. data/test/defs/test_defs_ge.rb +53 -0
  283. data/test/defs/test_defs_gr.rb +41 -0
  284. data/test/defs/test_defs_hk.rb +59 -0
  285. data/test/defs/test_defs_hr.rb +45 -0
  286. data/test/defs/test_defs_hu.rb +47 -0
  287. data/test/defs/test_defs_ie.rb +53 -0
  288. data/test/defs/test_defs_is.rb +51 -0
  289. data/test/defs/test_defs_it.rb +55 -0
  290. data/test/defs/test_defs_jp.rb +159 -0
  291. data/test/defs/test_defs_ke.rb +31 -0
  292. data/test/defs/test_defs_kr.rb +37 -0
  293. data/test/defs/test_defs_kz.rb +39 -0
  294. data/test/defs/test_defs_li.rb +35 -0
  295. data/test/defs/test_defs_lt.rb +65 -0
  296. data/test/defs/test_defs_lu.rb +35 -0
  297. data/test/defs/test_defs_lv.rb +98 -0
  298. data/test/defs/test_defs_ma.rb +29 -0
  299. data/test/defs/test_defs_mt_en.rb +41 -0
  300. data/test/defs/test_defs_mt_mt.rb +41 -0
  301. data/test/defs/test_defs_mx.rb +49 -0
  302. data/test/defs/test_defs_my.rb +23 -0
  303. data/test/defs/test_defs_nerc.rb +29 -0
  304. data/test/defs/test_defs_ng.rb +29 -0
  305. data/test/defs/test_defs_nl.rb +33 -0
  306. data/test/defs/test_defs_no.rb +43 -0
  307. data/test/defs/test_defs_northamerica.rb +667 -0
  308. data/test/defs/test_defs_nyse.rb +46 -0
  309. data/test/defs/test_defs_nz.rb +67 -0
  310. data/test/defs/test_defs_pe.rb +47 -0
  311. data/test/defs/test_defs_ph.rb +29 -0
  312. data/test/defs/test_defs_pl.rb +229 -0
  313. data/test/defs/test_defs_pt.rb +47 -0
  314. data/test/defs/test_defs_ro.rb +65 -0
  315. data/test/defs/test_defs_rs_cyrl.rb +46 -0
  316. data/test/defs/test_defs_rs_la.rb +46 -0
  317. data/test/defs/test_defs_ru.rb +34 -0
  318. data/test/defs/test_defs_scandinavia.rb +215 -0
  319. data/test/defs/test_defs_se.rb +59 -0
  320. data/test/defs/test_defs_sg.rb +25 -0
  321. data/test/defs/test_defs_si.rb +105 -0
  322. data/test/defs/test_defs_sk.rb +41 -0
  323. data/test/defs/test_defs_southamerica.rb +327 -0
  324. data/test/defs/test_defs_th.rb +33 -0
  325. data/test/defs/test_defs_tn.rb +27 -0
  326. data/test/defs/test_defs_tr.rb +60 -0
  327. data/test/defs/test_defs_ua.rb +41 -0
  328. data/test/defs/test_defs_unitednations.rb +11 -0
  329. data/test/defs/test_defs_ups.rb +31 -0
  330. data/test/defs/test_defs_us.rb +387 -0
  331. data/test/defs/test_defs_ve.rb +35 -0
  332. data/test/defs/test_defs_vi.rb +22 -0
  333. data/test/defs/test_defs_za.rb +35 -0
  334. data/test/holidays/core_extensions/test_date.rb +122 -0
  335. data/test/holidays/core_extensions/test_date_time.rb +60 -0
  336. data/test/holidays/date_calculator/test_day_of_month.rb +27 -0
  337. data/test/holidays/date_calculator/test_easter_gregorian.rb +30 -0
  338. data/test/holidays/date_calculator/test_easter_julian.rb +36 -0
  339. data/test/holidays/date_calculator/test_lunar_date.rb +89 -0
  340. data/test/holidays/date_calculator/test_weekend_modifier.rb +54 -0
  341. data/test/holidays/definition/context/test_function_processor.rb +199 -0
  342. data/test/holidays/definition/context/test_generator.rb +226 -0
  343. data/test/holidays/definition/context/test_load.rb +37 -0
  344. data/test/holidays/definition/context/test_merger.rb +25 -0
  345. data/test/holidays/definition/decorator/test_custom_method_proc.rb +113 -0
  346. data/test/holidays/definition/decorator/test_custom_method_source.rb +96 -0
  347. data/test/holidays/definition/decorator/test_test.rb +123 -0
  348. data/test/holidays/definition/generator/test_module.rb +268 -0
  349. data/test/holidays/definition/generator/test_regions.rb +97 -0
  350. data/test/holidays/definition/generator/test_test.rb +113 -0
  351. data/test/holidays/definition/parser/test_custom_method.rb +79 -0
  352. data/test/holidays/definition/parser/test_test.rb +142 -0
  353. data/test/holidays/definition/repository/test_cache.rb +123 -0
  354. data/test/holidays/definition/repository/test_custom_methods.rb +43 -0
  355. data/test/holidays/definition/repository/test_holidays_by_month.rb +275 -0
  356. data/test/holidays/definition/repository/test_proc_result_cache.rb +91 -0
  357. data/test/holidays/definition/repository/test_regions.rb +104 -0
  358. data/test/holidays/definition/validator/test_custom_method.rb +94 -0
  359. data/test/holidays/definition/validator/test_region.rb +54 -0
  360. data/test/holidays/definition/validator/test_test.rb +60 -0
  361. data/test/holidays/finder/context/test_between.rb +172 -0
  362. data/test/holidays/finder/context/test_dates_driver_builder.rb +91 -0
  363. data/test/holidays/finder/context/test_next_holiday.rb +156 -0
  364. data/test/holidays/finder/context/test_parse_options.rb +141 -0
  365. data/test/holidays/finder/context/test_search.rb +232 -0
  366. data/test/holidays/finder/context/test_year_holiday.rb +202 -0
  367. data/test/holidays/finder/rules/test_in_region.rb +42 -0
  368. data/test/holidays/finder/rules/test_year_range.rb +166 -0
  369. data/test/integration/README.md +9 -0
  370. data/test/integration/test_all_regions.rb +49 -0
  371. data/test/integration/test_any_holidays_during_work_week.rb +90 -0
  372. data/test/integration/test_available_regions.rb +23 -0
  373. data/test/integration/test_custom_holidays.rb +41 -0
  374. data/test/integration/test_custom_informal_holidays.rb +15 -0
  375. data/test/integration/test_custom_year_range_holidays.rb +35 -0
  376. data/test/integration/test_holidays.rb +243 -0
  377. data/test/integration/test_holidays_between.rb +87 -0
  378. data/test/integration/test_multiple_regions.rb +71 -0
  379. data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
  380. data/test/integration/test_nonstandard_regions.rb +25 -0
  381. data/test/test_helper.rb +37 -0
  382. metadata +649 -0
@@ -0,0 +1,965 @@
1
+ # United States holiday definitions for the Ruby Holiday gem.
2
+ #
3
+ # Updated: 2008-11-24.
4
+ #
5
+ # Changed: 2017-06-15 to 2017-06-20
6
+ # - Add missing holiday information for a whole bunch of US states
7
+ # - Correct some existing holiday information
8
+ # - Add custom functions for Georgia’s State Holiday, Lee-Jackson Day and Election Day
9
+ # - Add custom functions for Rosh Hashanah and Yom Kippur with pre-defined dates from 2014 to 2020
10
+ # - Add missing tests and correct existing tests
11
+ # - Add helpful comments
12
+ # - Add a lot of used sources
13
+ #
14
+ # Common Sources:
15
+ # - http://en.wikipedia.org/wiki/Public_holidays_of_the_United_States
16
+ # - https://www.timeanddate.com/holidays/us/
17
+ # - https://publicholidays.us
18
+ # - https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations
19
+ # Sources about special state holidays:
20
+ # - https://en.wikipedia.org/wiki/Black_Friday_(shopping)#United_States
21
+ # - http://www.officeholidays.com/countries/usa/black_friday.php
22
+ # - https://publicholidays.us/christmas/
23
+ # - https://publicholidays.us/kansas/
24
+ # - https://publicholidays.us/Wisconsin/
25
+ # - https://publicholidays.us/Arkansas/
26
+ # - https://publicholidays.us/Georgia/
27
+ # - https://publicholidays.us/Maryland/
28
+ # - https://publicholidays.us/Nevada/
29
+ # - https://publicholidays.us/Ohio/
30
+ # - http://www.sos.ms.gov/education-publications/pages/state-holidays.aspx
31
+ # - http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&Search_String=&URL=0100-0199/0110/Sections/0110.117.html
32
+ # - https://en.wikipedia.org/wiki/Lee–Jackson_Day
33
+ # - http://www.statutes.legis.state.tx.us/Docs/GV/htm/GV.662.htm
34
+ # - https://en.wikipedia.org/wiki/Lincoln%27s_Birthday
35
+ # - https://en.wikipedia.org/wiki/Washington%27s_Birthday
36
+ # - https://en.wikipedia.org/wiki/Shrove_Tuesday
37
+ # - https://en.wikipedia.org/wiki/Town_meeting#Vermont
38
+ # - https://en.wikipedia.org/wiki/Seward%27s_Day
39
+ # - https://en.wikipedia.org/wiki/Emancipation_Day
40
+ # - https://en.wikipedia.org/wiki/Patriots%27_Day
41
+ # - https://georgia.gov/popular-topic/observing-state-holidays
42
+ # - https://en.wikipedia.org/wiki/Confederate_Memorial_Day
43
+ # - http://www.admin.sc.gov/humanresources/employee-information/benefits-and-leave/holiday-leave
44
+ # - http://louisiana.gov/Government/For_State_Employees/
45
+ # - http://www.leg.state.fl.us/statutes/index.cfm?App_mode=Display_Statute&Search_String=&URL=0600-0699/0683/Sections/0683.01.html
46
+ # - http://dhrd.hawaii.gov/state-observed-holidays/
47
+ # - https://www.timeanddate.com/holidays/us/kamehameha-day
48
+ # - http://www.mass.gov/anf/employment-equal-access-disability/hr-policies/legal-holiday-calendar.html
49
+ # - http://www.edd.ca.gov/payroll_taxes/Legal_Holidays.htm
50
+ # - https://en.wikipedia.org/wiki/Emancipation_Day#United_States
51
+ # - http://www.visuperiorcourt.org/about/holidays.aspx
52
+ # - http://www.personnel.wv.gov/employees/benefits/Pages/Holidays.aspx
53
+ # - https://www.timeanddate.com/holidays/us/pioneer-day
54
+ # - http://sos.ri.gov/divisions/Civics-And-Education/ri-state-holidays
55
+ # - http://humanresources.vermont.gov/benefits-wellness/holiday-schedule
56
+ # - http://doa.alaska.gov/dop/fileadmin/socc/pdf/bkgrnd_socc10.pdf
57
+ # - https://en.wikipedia.org/wiki/Election_Day_(United_States)
58
+ # - https://www.timeanddate.com/holidays/us/yom-kippur
59
+ # - https://www.timeanddate.com/holidays/us/rosh-hashana
60
+ # - http://www.when-is.com/rosh-hashanah-2014.asp
61
+ # - https://de.wikipedia.org/wiki/Jom_Kippur#Jom_Kippur-Termine
62
+ # - https://de.wikipedia.org/wiki/Rosch_ha-Schana#Zeitpunkt_und_Einbettung_in_den_j.C3.BCdischen_Kalender
63
+ # - https://als.wikipedia.org/wiki/Rosch_ha-Schana
64
+ # - http://www.kleiner-kalender.de/event/rosch-ha-schana/0651c.html
65
+ # - http://www.kaldix.com/united-states/calendar/virginia/holidays/independence-day/year-2017/
66
+ # - https://publicholidays.us/independence-day/
67
+
68
+ ---
69
+
70
+ months:
71
+ 0:
72
+ - name: Shrove Tuesday
73
+ regions: [us_fl]
74
+ function: easter(year)
75
+ function_modifier: -47
76
+ - name: Mardi Gras Day
77
+ regions: [us_la]
78
+ function: easter(year)
79
+ function_modifier: -47
80
+ - name: Good Friday # informal in general
81
+ regions: [us]
82
+ function: easter(year)
83
+ function_modifier: -2
84
+ type: informal
85
+ - name: Good Friday # public holiday in the following states
86
+ regions: [us_ct, us_de, us_gu, us_hi, us_in, us_ky, us_la, us_nj, us_nc, us_nd, us_pr, us_tn]
87
+ function: easter(year)
88
+ function_modifier: -2
89
+ - name: Easter Sunday
90
+ regions: [us]
91
+ function: easter(year)
92
+ type: informal
93
+ 1:
94
+ - name: New Year's Day
95
+ regions: [us]
96
+ mday: 1
97
+ observed: to_weekday_if_weekend(date)
98
+ - name: Martin Luther King's and Robert E. Lee's Birthdays # renamed Martin Luther King, Jr. Day
99
+ regions: [us_ms]
100
+ week: 3
101
+ wday: 1
102
+ - name: Idaho Human Rights Day # renamed Martin Luther King, Jr. Day
103
+ regions: [us_id]
104
+ week: 3
105
+ wday: 1
106
+ - name: Civil Rights Day # renamed Martin Luther King, Jr. Day
107
+ regions: [us_ar]
108
+ week: 3
109
+ wday: 1
110
+ - name: Martin Luther King, Jr. Day # Third Monday in January
111
+ regions: [us]
112
+ week: 3
113
+ wday: 1
114
+ - name: Inauguration Day
115
+ function: us_inauguration_day(year)
116
+ regions: [us_tx, us_dc, us_la, us_md, us_va]
117
+ - name: Lee-Jackson Day
118
+ regions: [us_va]
119
+ function: lee_jackson_day(year, month)
120
+ - name: Confederate Heroes Day # fixed
121
+ regions: [us_tx]
122
+ mday: 19
123
+ 2:
124
+ - name: Presidents' Day # Note: Several states are using another name for this holiday, there are 12 notations for it
125
+ week: 3
126
+ regions: [us]
127
+ wday: 1
128
+ 3:
129
+ - name: Town Meeting Day # First Tuesday in March
130
+ regions: [us_vt]
131
+ week: 1
132
+ wday: 2
133
+ - name: Texas Independence Day # fixed
134
+ regions: [us_tx]
135
+ mday: 2
136
+ - name: Prince Jonah Kuhio Kalanianaole Day
137
+ regions: [us_hi]
138
+ observed: to_weekday_if_weekend(date)
139
+ mday: 26
140
+ - name: Seward's Day # Last Monday in March
141
+ regions: [us_ak]
142
+ week: -1
143
+ wday: 1
144
+ - name: César Chávez Day # fixed
145
+ regions: [us_ca]
146
+ mday: 31
147
+ 4:
148
+ - name: Emancipation Day
149
+ regions: [us_dc]
150
+ observed: to_weekday_if_weekend(date)
151
+ mday: 16
152
+ - name: Patriots' Day # Third Monday in April
153
+ regions: [us_me, us_ma]
154
+ week: 3
155
+ wday: 1
156
+ - name: San Jacinto Day # fixed
157
+ regions: [us_tx]
158
+ mday: 21
159
+ - name: Confederate Memorial Day # Last Monday in April
160
+ regions: [us_al, us_ms]
161
+ week: -1
162
+ wday: 1
163
+ - name: Confederate Memorial Day
164
+ regions: [us_fl]
165
+ mday: 26
166
+ observed: to_monday_if_sunday(date)
167
+ - name: State Holiday # April 20 or April 26
168
+ regions: [us_ga]
169
+ function: georgia_state_holiday(year, month)
170
+ - name: Arbor Day # fixed
171
+ regions: [us_ne]
172
+ mday: 28
173
+ 5:
174
+ - name: Truman Day # fixed
175
+ regions: [us_mo]
176
+ mday: 8
177
+ - name: Confederate Memorial Day # fixed
178
+ regions: [us_sc]
179
+ mday: 10
180
+ - name: Memorial Day # Note: full name in Mississippi is National Memorial Day/Jefferson Davis' Birthday
181
+ regions: [us]
182
+ week: -1
183
+ wday: 1
184
+ 6:
185
+ - name: Jefferson Davis' Birthday # First Monday in June
186
+ regions: [us_al]
187
+ week: 1
188
+ wday: 1
189
+ - name: Birthday of Jefferson Davis # fixed
190
+ regions: [us_fl]
191
+ mday: 3
192
+ - name: King Kamehameha I Day
193
+ regions: [us_hi]
194
+ observed: to_weekday_if_weekend(date)
195
+ mday: 11
196
+ - name: Juneteenth National Independence Day
197
+ regions: [us]
198
+ mday: 19
199
+ observed: to_weekday_if_weekend(date)
200
+ year_ranges:
201
+ from: 2021
202
+ - name: Emancipation Day in Texas # fixed
203
+ regions: [us_tx]
204
+ mday: 19
205
+ - name: West Virginia Day
206
+ regions: [us_wv]
207
+ mday: 20
208
+ observed: to_weekday_if_weekend(date)
209
+ 7:
210
+ - name: Emancipation Day # fixed
211
+ regions: [us_vi]
212
+ mday: 3
213
+ - name: Independence Day # fixed
214
+ regions: [us]
215
+ mday: 4
216
+ - name: Independence Day (Holiday)
217
+ regions: [us_va]
218
+ mday: 4
219
+ function: to_weekday_if_weekend(date) # Note: Always if Independence Day don't match
220
+ - name: Pioneer Day # fixed
221
+ regions: [us_ut]
222
+ mday: 24
223
+ 8:
224
+ - name: Victory Day # Second Monday in August
225
+ regions: [us_ri]
226
+ week: 2
227
+ wday: 1
228
+ - name: Bennington Battle Day
229
+ regions: [us_vt]
230
+ mday: 16
231
+ observed: to_weekday_if_weekend(date)
232
+ - name: Statehood Day # Third Friday in August
233
+ regions: [us_hi]
234
+ week: 3
235
+ wday: 5
236
+ - name: Lyndon Baines Johnson Day # fixed
237
+ regions: [us_tx]
238
+ mday: 27
239
+ 9:
240
+ - name: Labor Day
241
+ week: 1
242
+ regions: [us]
243
+ wday: 1
244
+ - name: Rosh Hashanah
245
+ regions: [us_tx]
246
+ function: rosh_hashanah(year)
247
+ - name: Yom Kippur
248
+ regions: [us_tx]
249
+ function: yom_kippur(year)
250
+ 10:
251
+ - name: Columbus Day
252
+ week: 2
253
+ regions: [us_al, us_az, us_co, us_ct, us_dc, us_ga, us_id, us_il, us_in, us_ma, us_md, us_me, us_mo, us_mt, us_ne, us_nj, us_nm, us_ny, us_oh, us_pa, us_ri, us_ut, us_va, us_wv]
254
+ wday: 1
255
+ - name: Columbus Day
256
+ week: 2
257
+ regions: [us_ak, us_ar, us_ca, us_de, us_fl, us_hi, us_mi, us_mn, us_nd, us_nv, us_or, us_sd, us_tx, us_vt, us_wa, us_wi, us_wy]
258
+ type: informal
259
+ wday: 1
260
+ - name: Alaska Day # fixed
261
+ regions: [us_ak]
262
+ mday: 18
263
+ - name: Nevada Day # Last Friday in October
264
+ regions: [us_nv]
265
+ week: -1
266
+ wday: 5
267
+ 11:
268
+ - name: Election Day
269
+ regions: [us_de, us_hi, us_in, us_mt, us_nj, us_ny, us_pa, us_ri]
270
+ function: election_day(year)
271
+ - name: Veterans Day
272
+ regions: [us]
273
+ mday: 11
274
+ observed: to_weekday_if_weekend(date)
275
+ - name: Thanksgiving
276
+ regions: [us]
277
+ week: 4
278
+ wday: 4
279
+ - name: Family Day
280
+ function: day_after_thanksgiving(year)
281
+ regions: [us_nv]
282
+ - name: State Holiday
283
+ function: day_after_thanksgiving(year)
284
+ regions: [us_ga]
285
+ - name: Presidents' Day
286
+ function: day_after_thanksgiving(year)
287
+ regions: [us_nm]
288
+ - name: Lincoln's Birthday
289
+ function: day_after_thanksgiving(year)
290
+ regions: [us_in]
291
+ - name: American Indian Heritage Day
292
+ function: day_after_thanksgiving(year)
293
+ regions: [us_md]
294
+ - name: Day after Thanksgiving (Black Friday)
295
+ function: day_after_thanksgiving(year)
296
+ regions: [us_ca, us_de, us_fl, us_ia, us_il, us_ks, us_ky, us_me, us_mi, us_mn, us_ms, us_ne, us_nh, us_nc, us_pa, us_sc, us_ok, us_tn, us_tx, us_va, us_wa, us_wv]
297
+ 12:
298
+ - name: Christmas Eve
299
+ regions: [us_ar, us_mi, us_nc, us_sc, us_tx, us_wi]
300
+ mday: 24
301
+ - name: Christmas Eve (Holiday) # Note: Always if Christmas Eve don't match
302
+ regions: [us_mi, us_sc, us_va]
303
+ mday: 24
304
+ function: christmas_eve_holiday(date)
305
+ - name: Christmas Day
306
+ regions: [us]
307
+ mday: 25
308
+ observed: to_weekday_if_weekend(date)
309
+ - name: Day after Christmas
310
+ regions: [us_ar, us_nc, us_ok, us_sc, us_tn, us_tx]
311
+ mday: 26
312
+ - name: New Year's Eve
313
+ regions: [us_mi, us_wi]
314
+ mday: 31
315
+
316
+ methods:
317
+ christmas_eve_holiday:
318
+ arguments: date
319
+ ruby: |
320
+ beginning_of_month = Date.civil(date.year, date.month, 1)
321
+ (date.saturday? || date.sunday?) ? date.downto(beginning_of_month).find {|d| d if d.wday == 5} : date
322
+ rosh_hashanah:
323
+ arguments: year
324
+ ruby: |
325
+ rosh_hashanah_dates = {
326
+ '2014' => Date.civil(2014, 9, 25),
327
+ '2015' => Date.civil(2015, 9, 14),
328
+ '2016' => Date.civil(2016, 10, 3),
329
+ '2017' => Date.civil(2017, 9, 21),
330
+ '2018' => Date.civil(2018, 9, 10),
331
+ '2019' => Date.civil(2019, 9, 30),
332
+ '2020' => Date.civil(2020, 9, 19)
333
+ }
334
+ rosh_hashanah_dates[year.to_s]
335
+ yom_kippur:
336
+ arguments: year
337
+ ruby: |
338
+ yom_kippur_dates = {
339
+ '2014' => Date.civil(2014, 10, 4),
340
+ '2015' => Date.civil(2015, 9, 23),
341
+ '2016' => Date.civil(2016, 10, 12),
342
+ '2017' => Date.civil(2017, 9, 30),
343
+ '2018' => Date.civil(2018, 9, 19),
344
+ '2019' => Date.civil(2019, 10, 9),
345
+ '2020' => Date.civil(2020, 9, 28)
346
+ }
347
+ yom_kippur_dates[year.to_s]
348
+ georgia_state_holiday:
349
+ # Monday before that holiday
350
+ arguments: year, month
351
+ ruby: |
352
+ beginning_of_month = Date.civil(year, month, 1)
353
+ state_holiday = Date.civil(year, month, 26)
354
+ state_holiday.downto(beginning_of_month).find {|date| date if date.wday == 1 }
355
+ lee_jackson_day:
356
+ # Friday before Martin Luther King, Jr. Day
357
+ arguments: year, month
358
+ ruby: |
359
+ day_of_holiday = Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, month, 3, 1)
360
+ beginning_of_month = Date.civil(year, month, 1)
361
+ king_day = Date.civil(year, month, day_of_holiday)
362
+ king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 }
363
+ election_day:
364
+ # Tuesday after the first Monday of November
365
+ arguments: year
366
+ ruby: |
367
+ Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1
368
+ us_inauguration_day:
369
+ # January 20, every fourth year, following Presidential election
370
+ arguments: year
371
+ ruby: |
372
+ year % 4 == 1 ? 20 : nil
373
+ day_after_thanksgiving:
374
+ arguments: year
375
+ ruby: |
376
+ Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1
377
+
378
+ tests:
379
+ - given:
380
+ date: ['2017-2-28', '2018-2-13', '2019-3-5']
381
+ regions: ["us_fl"]
382
+ expect:
383
+ name: 'Shrove Tuesday'
384
+ - given:
385
+ date: ['2017-2-28', '2018-2-13', '2019-3-5']
386
+ regions: ["us_la"]
387
+ expect:
388
+ name: 'Mardi Gras Day'
389
+ - given:
390
+ date: ['2017-2-28', '2018-2-13', '2019-3-5']
391
+ regions: ["us"]
392
+ expect:
393
+ holiday: false
394
+
395
+ - given:
396
+ date: ['2017-4-14', '2018-3-30', '2019-4-19']
397
+ regions: ["us_ct","us_de","us_gu","us_hi","us_in","us_ky","us_la","us_nj","us_nc","us_nd","us_pr","us_tn"]
398
+ expect:
399
+ name: 'Good Friday'
400
+ - given:
401
+ date: ['2017-4-14', '2018-3-30', '2019-4-19']
402
+ regions: ["us"]
403
+ options: ["informal"]
404
+ expect:
405
+ name: 'Good Friday'
406
+ - given:
407
+ date: ['2017-2-28', '2018-2-13', '2019-3-5']
408
+ regions: ["us"]
409
+ expect:
410
+ holiday: false
411
+
412
+ - given:
413
+ date: ['2017-4-16', '2018-4-1', '2019-4-21']
414
+ regions: ["us"]
415
+ expect:
416
+ holiday: false
417
+ - given:
418
+ date: ['2017-4-16', '2018-4-1', '2019-4-21']
419
+ regions: ["us"]
420
+ options: ["informal"]
421
+ expect:
422
+ name: "Easter Sunday"
423
+
424
+ - given:
425
+ date: '2017-1-1'
426
+ regions: ["us"]
427
+ expect:
428
+ name: "New Year's Day"
429
+ - given:
430
+ date: '2017-1-2'
431
+ regions: ["us"]
432
+ options: ["observed"]
433
+ expect:
434
+ name: "New Year's Day"
435
+
436
+ - given:
437
+ date: ['2017-1-16', '2018-1-15', '2019-1-21']
438
+ regions: ["us"]
439
+ expect:
440
+ name: "Martin Luther King, Jr. Day"
441
+
442
+ - given:
443
+ date: ['2016-1-18', '2017-1-16', '2018-1-15']
444
+ regions: ["us"]
445
+ expect:
446
+ name: "Martin Luther King, Jr. Day"
447
+ - given:
448
+ date: ['2016-1-18', '2017-1-16', '2018-1-15']
449
+ regions: ["us_ms"]
450
+ expect:
451
+ name: "Martin Luther King's and Robert E. Lee's Birthdays"
452
+ - given:
453
+ date: ['2016-1-18', '2017-1-16', '2018-1-15']
454
+ regions: ["us_id"]
455
+ expect:
456
+ name: "Idaho Human Rights Day"
457
+ - given:
458
+ date: ['2016-1-18', '2017-1-16', '2018-1-15']
459
+ regions: ["us_ar"]
460
+ expect:
461
+ name: "Civil Rights Day"
462
+
463
+ - given:
464
+ date: ['2017-1-20', '2021-1-20']
465
+ regions: ["us"]
466
+ expect:
467
+ holiday: false
468
+ - given:
469
+ date: ['2017-1-20', '2021-1-20']
470
+ regions: ["us_tx", "us_dc", "us_la", "us_md", "us_va"]
471
+ expect:
472
+ name: "Inauguration Day"
473
+
474
+ - given:
475
+ date: ['2017-1-13', '2018-1-12', '2019-1-18']
476
+ regions: ["us"]
477
+ expect:
478
+ holiday: false
479
+ - given:
480
+ date: ['2017-1-13', '2018-1-12', '2019-1-18']
481
+ regions: ["us_va"]
482
+ expect:
483
+ name: "Lee-Jackson Day"
484
+
485
+ - given:
486
+ date: ['2017-1-19']
487
+ regions: ["us_tx"]
488
+ expect:
489
+ name: "Confederate Heroes Day"
490
+
491
+ - given:
492
+ date: ['2008-2-18', '2017-2-20', '2018-2-19']
493
+ regions: ["us"]
494
+ expect:
495
+ name: "Presidents' Day"
496
+
497
+ - given:
498
+ date: ['2017-3-6', '2018-3-5', '2019-3-4']
499
+ regions: ["us"]
500
+ expect:
501
+ holiday: false
502
+
503
+ - given:
504
+ date: ['2017-3-7', '2018-3-6', '2019-3-5']
505
+ regions: ["us"]
506
+ expect:
507
+ holiday: false
508
+ - given:
509
+ date: ['2017-3-7', '2018-3-6', '2019-3-5']
510
+ regions: ["us_vt"]
511
+ expect:
512
+ name: "Town Meeting Day"
513
+
514
+ - given:
515
+ date: ['2017-3-2']
516
+ regions: ["us_tx"]
517
+ expect:
518
+ name: "Texas Independence Day"
519
+
520
+ - given:
521
+ date: ['2017-3-27', '2018-3-26', '2022-3-25']
522
+ regions: ["us"]
523
+ options: ["observed"]
524
+ expect:
525
+ holiday: false
526
+ - given:
527
+ date: ['2017-3-27', '2018-3-26', '2022-3-25']
528
+ regions: ["us_hi"]
529
+ options: ["observed"]
530
+ expect:
531
+ name: "Prince Jonah Kuhio Kalanianaole Day"
532
+ - given:
533
+ date: ['2017-3-26']
534
+ regions: ["us"]
535
+ expect:
536
+ holiday: false
537
+ - given:
538
+ date: ['2017-3-26']
539
+ regions: ["us_hi"]
540
+ expect:
541
+ name: "Prince Jonah Kuhio Kalanianaole Day"
542
+
543
+ - given:
544
+ date: ['2017-3-27', '2018-3-26', '2019-3-25']
545
+ regions: ["us"]
546
+ expect:
547
+ holiday: false
548
+ - given:
549
+ date: ['2017-3-27', '2018-3-26', '2019-3-25']
550
+ regions: ["us_ak"]
551
+ expect:
552
+ name: "Seward's Day"
553
+
554
+ - given:
555
+ date: ['2017-3-31']
556
+ regions: ["us_ca"]
557
+ expect:
558
+ name: "César Chávez Day"
559
+
560
+ - given:
561
+ date: ['2023-4-17', '2022-4-15', '2028-4-17']
562
+ regions: ["us_dc", "us_ca"]
563
+ options: ["observed"]
564
+ expect:
565
+ name: "Emancipation Day"
566
+ - given:
567
+ date: ['2017-4-16']
568
+ regions: ["us_dc"]
569
+ expect:
570
+ name: "Emancipation Day"
571
+
572
+ - given:
573
+ date: ['2017-4-17', '2018-4-16', '2019-4-15']
574
+ regions: ["us"]
575
+ expect:
576
+ holiday: false
577
+ - given:
578
+ date: ['2017-4-17', '2018-4-16', '2019-4-15']
579
+ regions: ["us_me", "us_ma"]
580
+ expect:
581
+ name: "Patriots' Day"
582
+
583
+ - given:
584
+ date: ['2017-4-21']
585
+ regions: ["us_tx"]
586
+ expect:
587
+ name: "San Jacinto Day"
588
+
589
+ - given:
590
+ date: ['2017-4-24', '2018-4-30', '2019-4-29']
591
+ regions: ["us"]
592
+ expect:
593
+ holiday: false
594
+ - given:
595
+ date: ['2017-4-24', '2018-4-30', '2019-4-29']
596
+ regions: ["us_al", "us_ms"]
597
+ expect:
598
+ name: "Confederate Memorial Day"
599
+
600
+ - given:
601
+ date: ['2015-4-27', '2020-4-27', '2026-4-27']
602
+ regions: ["us"]
603
+ expect:
604
+ holiday: false
605
+ - given:
606
+ date: ['2015-4-27', '2020-4-27', '2026-4-27']
607
+ regions: ["us_fl"]
608
+ options: ["observed"]
609
+ expect:
610
+ name: "Confederate Memorial Day"
611
+
612
+ - given:
613
+ date: ['2017-4-26']
614
+ regions: ["us"]
615
+ expect:
616
+ holiday: false
617
+ - given:
618
+ date: ['2017-4-26']
619
+ regions: ["us_fl"]
620
+ expect:
621
+ name: "Confederate Memorial Day"
622
+
623
+ - given:
624
+ date: ['2015-4-20', '2021-4-26']
625
+ regions: ["us"]
626
+ expect:
627
+ holiday: false
628
+ - given:
629
+ date: ['2015-4-20', '2021-4-26']
630
+ regions: ["us_ga"]
631
+ expect:
632
+ name: "State Holiday"
633
+
634
+ - given:
635
+ date: ['2017-4-28']
636
+ regions: ["us_ne"]
637
+ expect:
638
+ name: "Arbor Day"
639
+ - given:
640
+ date: ['2017-5-8']
641
+ regions: ["us_mo"]
642
+ expect:
643
+ name: "Truman Day"
644
+ - given:
645
+ date: ['2017-5-10']
646
+ regions: ["us_sc"]
647
+ expect:
648
+ name: "Confederate Memorial Day"
649
+ - given:
650
+ date: ['2017-5-29', '2018-5-28', '2019-5-27']
651
+ regions: ["us"]
652
+ expect:
653
+ name: "Memorial Day"
654
+
655
+ - given:
656
+ date: ['2017-6-5', '2018-6-4', '2019-6-3']
657
+ regions: ["us"]
658
+ expect:
659
+ holiday: false
660
+ - given:
661
+ date: ['2017-6-5', '2018-6-4', '2019-6-3']
662
+ regions: ["us_al"]
663
+ expect:
664
+ name: "Jefferson Davis' Birthday"
665
+ - given:
666
+ date: ['2017-6-3']
667
+ regions: ["us_fl"]
668
+ expect:
669
+ name: "Birthday of Jefferson Davis"
670
+
671
+ - given:
672
+ date: ['2017-6-12', '2018-6-11', '2022-6-10']
673
+ regions: ["us"]
674
+ expect:
675
+ holiday: false
676
+ - given:
677
+ date: ['2017-6-12', '2018-6-11', '2022-6-10']
678
+ regions: ["us_hi"]
679
+ options: ["observed"]
680
+ expect:
681
+ name: "King Kamehameha I Day"
682
+
683
+ - given:
684
+ date: ['2017-6-11']
685
+ regions: ["us"]
686
+ expect:
687
+ holiday: false
688
+ - given:
689
+ date: ['2017-6-11']
690
+ regions: ["us_hi"]
691
+ expect:
692
+ name: "King Kamehameha I Day"
693
+ - given:
694
+ date: ['2021-06-19']
695
+ regions: ["us"]
696
+ options: ["observed"]
697
+ expect:
698
+ holiday: false
699
+ - given:
700
+ date: ['2021-06-18']
701
+ regions: ["us"]
702
+ options: ["observed"]
703
+ expect:
704
+ name: "Juneteenth National Independence Day"
705
+ - given:
706
+ date: ['2017-6-19']
707
+ regions: ["us_tx"]
708
+ expect:
709
+ name: "Emancipation Day in Texas"
710
+
711
+ - given:
712
+ date: ['2017-6-20', '2020-6-19', '2021-6-21']
713
+ regions: ["us"]
714
+ expect:
715
+ holiday: false
716
+ - given:
717
+ date: ['2017-6-20', '2020-6-19', '2021-6-21']
718
+ regions: ["us_wv"]
719
+ options: ["observed"]
720
+ expect:
721
+ name: "West Virginia Day"
722
+ - given:
723
+ date: ['2017-6-20']
724
+ regions: ["us_wv"]
725
+ expect:
726
+ name: "West Virginia Day"
727
+
728
+ - given:
729
+ date: ['2017-7-3']
730
+ regions: ["us_vi"]
731
+ expect:
732
+ name: "Emancipation Day"
733
+
734
+ - given:
735
+ date: ['2020-7-4', '2021-7-4', '2026-7-4']
736
+ regions: ["us", "us_va"]
737
+ expect:
738
+ name: "Independence Day"
739
+
740
+ - given:
741
+ date: ['2020-7-3', '2021-7-5', '2026-7-3']
742
+ regions: ["us"]
743
+ expect:
744
+ holiday: false
745
+ - given:
746
+ date: ['2020-7-3', '2021-7-5', '2026-7-3']
747
+ regions: ["us_va"]
748
+ expect:
749
+ name: "Independence Day (Holiday)"
750
+ - given:
751
+ date: ['2020-7-24']
752
+ regions: ["us_ut"]
753
+ expect:
754
+ name: "Pioneer Day"
755
+
756
+ - given:
757
+ date: ['2017-8-14', '2020-8-10', '2021-8-9']
758
+ regions: ["us"]
759
+ expect:
760
+ holiday: false
761
+ - given:
762
+ date: ['2017-8-14', '2020-8-10', '2021-8-9']
763
+ regions: ["us_ri"]
764
+ expect:
765
+ name: "Victory Day"
766
+
767
+ - given:
768
+ date: ['2017-8-16', '2020-8-17', '2025-8-15']
769
+ regions: ["us"]
770
+ expect:
771
+ holiday: false
772
+ - given:
773
+ date: ['2017-8-16', '2020-8-17', '2025-8-15']
774
+ regions: ["us_vt"]
775
+ options: ["observed"]
776
+ expect:
777
+ name: "Bennington Battle Day"
778
+ - given:
779
+ date: ['2017-8-16']
780
+ regions: ["us_vt"]
781
+ expect:
782
+ name: "Bennington Battle Day"
783
+
784
+ - given:
785
+ date: ['2017-8-18', '2020-8-21', '2025-8-15']
786
+ regions: ["us"]
787
+ expect:
788
+ holiday: false
789
+ - given:
790
+ date: ['2017-8-18', '2020-8-21', '2025-8-15']
791
+ regions: ["us_hi"]
792
+ expect:
793
+ name: "Statehood Day"
794
+ - given:
795
+ date: ['2017-8-27']
796
+ regions: ["us_tx"]
797
+ expect:
798
+ name: "Lyndon Baines Johnson Day"
799
+ - given:
800
+ date: ['2017-9-4', '2018-9-3', '2019-9-2']
801
+ regions: ["us"]
802
+ expect:
803
+ name: "Labor Day"
804
+
805
+ - given:
806
+ date: ['2017-9-21', '2018-9-10', '2019-9-30']
807
+ regions: ["us"]
808
+ expect:
809
+ holiday: false
810
+ - given:
811
+ date: ['2017-9-21', '2018-9-10', '2019-9-30']
812
+ regions: ["us_tx"]
813
+ expect:
814
+ name: "Rosh Hashanah"
815
+
816
+ - given:
817
+ date: ['2017-9-30', '2018-9-19', '2019-10-9']
818
+ regions: ["us"]
819
+ expect:
820
+ holiday: false
821
+ - given:
822
+ date: ['2017-9-30', '2018-9-19', '2019-10-9']
823
+ regions: ["us_tx"]
824
+ expect:
825
+ name: "Yom Kippur"
826
+
827
+ - given:
828
+ date: ['2017-10-9', '2018-10-8', '2019-10-14']
829
+ regions: ["us"]
830
+ expect:
831
+ holiday: false
832
+ - given:
833
+ date: ['2017-10-9', '2018-10-8', '2019-10-14']
834
+ regions: ["us_al", "us_az", "us_co", "us_ct", "us_dc", "us_ga", "us_id", "us_il", "us_in", "us_ma", "us_md", "us_me", "us_mo", "us_mt", "us_ne", "us_nj", "us_nm", "us_ny", "us_oh", "us_pa", "us_ri", "us_ut", "us_va", "us_wv"]
835
+ expect:
836
+ name: "Columbus Day"
837
+ - given:
838
+ date: ['2017-10-9', '2018-10-8', '2019-10-14']
839
+ regions: ["us_ak", "us_ar", "us_ca", "us_de", "us_fl", "us_hi", "us_mi", "us_mn", "us_nd", "us_nv", "us_or", "us_sd", "us_tx", "us_vt", "us_wa", "us_wi", "us_wy"]
840
+ options: ["informal"]
841
+ expect:
842
+ name: "Columbus Day"
843
+ - given:
844
+ date: ['2017-10-9', '2018-10-8', '2019-10-14']
845
+ regions: ["us_ak", "us_ar", "us_ca", "us_de", "us_fl", "us_hi", "us_mi", "us_mn", "us_nd", "us_nv", "us_or", "us_sd", "us_tx", "us_vt", "us_wa", "us_wi", "us_wy"]
846
+ expect:
847
+ holiday: false
848
+
849
+ - given:
850
+ date: ['2017-10-18']
851
+ regions: ["us_ak"]
852
+ expect:
853
+ name: "Alaska Day"
854
+
855
+ - given:
856
+ date: ['2017-10-27', '2018-10-26', '2019-10-25']
857
+ regions: ["us"]
858
+ expect:
859
+ holiday: false
860
+ - given:
861
+ date: ['2017-10-27', '2018-10-26', '2019-10-25']
862
+ regions: ["us_nv"]
863
+ expect:
864
+ name: "Nevada Day"
865
+
866
+ - given:
867
+ date: ['2017-11-7', '2018-11-6', '2021-11-2']
868
+ regions: ["us"]
869
+ expect:
870
+ holiday: false
871
+ - given:
872
+ date: ['2017-11-7', '2018-11-6', '2021-11-2']
873
+ regions: ["us_de", "us_hi", "us_in", "us_mt", "us_nj", "us_ny", "us_pa", "us_ri"]
874
+ expect:
875
+ name: "Election Day"
876
+ - given:
877
+ date: ['2017-11-10', '2018-11-12', '2019-11-11']
878
+ regions: ["us"]
879
+ options: ["observed"]
880
+ expect:
881
+ name: "Veterans Day"
882
+ - given:
883
+ date: ['2017-11-11']
884
+ regions: ["us"]
885
+ expect:
886
+ name: "Veterans Day"
887
+ - given:
888
+ date: ['2017-11-23', '2018-11-22', '2019-11-28']
889
+ regions: ["us"]
890
+ expect:
891
+ name: "Thanksgiving"
892
+
893
+ - given:
894
+ date: ['2017-11-24', '2018-11-23', '2019-11-29']
895
+ regions: ["us"]
896
+ expect:
897
+ holiday: false
898
+ - given:
899
+ date: ['2017-11-24', '2018-11-23', '2019-11-29']
900
+ regions: ["us_nv"]
901
+ expect:
902
+ name: "Family Day"
903
+ - given:
904
+ date: ['2017-11-24', '2018-11-23', '2019-11-29']
905
+ regions: ["us_ga"]
906
+ expect:
907
+ name: "State Holiday"
908
+ - given:
909
+ date: ['2017-11-24', '2018-11-23', '2019-11-29']
910
+ regions: ["us_nm"]
911
+ expect:
912
+ name: "Presidents' Day"
913
+ - given:
914
+ date: ['2017-11-24', '2018-11-23', '2019-11-29']
915
+ regions: ["us_in"]
916
+ expect:
917
+ name: "Lincoln's Birthday"
918
+ - given:
919
+ date: ['2017-11-24', '2018-11-23', '2019-11-29']
920
+ regions: ["us_md"]
921
+ expect:
922
+ name: "American Indian Heritage Day"
923
+ - given:
924
+ date: ['2017-11-24', '2018-11-23', '2019-11-29']
925
+ regions: ["us_ca", "us_de", "us_fl", "us_ia", "us_il", "us_ks", "us_ky", "us_me", "us_mi", "us_mn", "us_ms", "us_ne", "us_nh", "us_nc", "us_pa", "us_sc", "us_ok", "us_tn", "us_tx", "us_va", "us_wa", "us_wv"]
926
+ expect:
927
+ name: "Day after Thanksgiving (Black Friday)"
928
+
929
+ - given:
930
+ date: ['2022-12-23', '2023-12-22', '2028-12-22']
931
+ regions: ["us_mi", "us_sc", "us_va"]
932
+ expect:
933
+ name: "Christmas Eve (Holiday)"
934
+ - given:
935
+ date: ['2017-12-24']
936
+ regions: ["us_ar", "us_mi", "us_nc", "us_va", "us_sc", "us_tx", "us_wi"]
937
+ expect:
938
+ name: "Christmas Eve"
939
+
940
+ - given:
941
+ date: ['2021-12-27', '2022-12-26', '2027-12-27']
942
+ regions: ["us"]
943
+ expect:
944
+ holiday: false
945
+ - given:
946
+ date: ['2021-12-24', '2022-12-26', '2027-12-24']
947
+ regions: ["us"]
948
+ options: ["observed"]
949
+ expect:
950
+ name: "Christmas Day"
951
+ - given:
952
+ date: ['2017-12-25']
953
+ regions: ["us"]
954
+ expect:
955
+ name: "Christmas Day"
956
+ - given:
957
+ date: ['2017-12-26']
958
+ regions: ["us_ar", "us_nc", "us_ok", "us_sc", "us_tn", "us_tx"]
959
+ expect:
960
+ name: "Day after Christmas"
961
+ - given:
962
+ date: ['2017-12-31']
963
+ regions: ["us_mi", "us_wi"]
964
+ expect:
965
+ name: "New Year's Eve"