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,277 @@
1
+ # Swiss holiday definitions for the Ruby Holiday gem.
2
+ #
3
+ # Updated: 2018-10-10.
4
+ # Sources:
5
+ # http://www.bj.admin.ch/content/dam/data/staat_buerger/zivilprozessrecht/kant-feiertage.pdf
6
+ #
7
+ # Word of warning:
8
+ # ================
9
+ # As the holidays are defined on a state level and sometimes even on a district / village level,
10
+ # this holiday definition is an approximation of the reality. It should be accurate for most of the cases but
11
+ # no guarantee is given that it is correct for all the special cases :-).
12
+ # Considers both official holidays and holidays that are handled as if they were official holidays.
13
+ #
14
+ # Holiday names are in German in case they are celebrated in the German speaking area and in French / Italian otherwise.
15
+ #
16
+ # Known Issues:
17
+ # * ch_ur: 26th of December is not celebrated in case the 25th is a Monday or a Friday.
18
+ # * ch_fr: Fronleichnam, Maria Himmelfahrt, Allerheiligen, Maria Empfaengnis is celebrated in all villages except
19
+ # some villages of the district of See.
20
+ # * ch_so: - There are a lot of village holidays not included here.
21
+ # - 1st of May is holiday only starting at noon; not included here.
22
+ # - 19th of March is celebrated only in a couple of villages
23
+ # * ch_ar: 26th of December is not celebrated in case the 25th is a Monday or a Friday.
24
+ # * ch_ai: - 22nd of September is celebrated only in part of the state.
25
+ # - 26th of December is not celebrated in case the 25th is a Monday or a Friday.
26
+ # * ch_ne: 26th of December and 2nd of January are only celebrated in case 25th of December and 1st of January are Sundays
27
+ ---
28
+ months:
29
+ 0:
30
+ - name: Karfreitag
31
+ regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vd, ch_ne, ch_ge, ch_ju]
32
+ function: easter(year)
33
+ function_modifier: -2
34
+ - name: Ostermontag
35
+ regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vd, ch_vs, ch_ge, ch_ju]
36
+ function: easter(year)
37
+ function_modifier: 1
38
+ # State holiday but observed in all the states
39
+ - name: Auffahrt
40
+ regions: [ch]
41
+ function: easter(year)
42
+ function_modifier: 39
43
+ - name: Pfingstmontag
44
+ regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vd, ch_vs, ch_ge, ch_ju]
45
+ function: easter(year)
46
+ function_modifier: 50
47
+ - name: Fronleichnam
48
+ regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_zg, ch_fr, ch_so, ch_ai, ch_ag, ch_ti, ch_vs, ch_ne, ch_ju]
49
+ function: easter(year)
50
+ function_modifier: 60
51
+ - name: Lundi du Jeûne fédéral
52
+ regions: [ch_vd]
53
+ function: ch_vd_lundi_du_jeune_federal(year)
54
+ - name: Jeûne genevois
55
+ regions: [ch_ge]
56
+ function: ch_ge_jeune_genevois(year)
57
+ 1:
58
+ - name: Neujahrstag
59
+ regions: [ch]
60
+ mday: 1
61
+ - name: Berchtoldstag
62
+ regions: [ch_zh, ch_be, ch_lu, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_sh, ch_sg, ch_ag, ch_tg, ch_vd, ch_vs, ch_ne, ch_ju]
63
+ mday: 2
64
+ - name: Dreikönigstag
65
+ regions: [ch_ur, ch_sz, ch_ti]
66
+ mday: 6
67
+ 3:
68
+ - name: Instauration de la République
69
+ regions: [ch_ne]
70
+ mday: 1
71
+ - name: Josephstag
72
+ regions: [ch_ur, ch_sz, ch_nw, ch_ti, ch_vs]
73
+ mday: 19
74
+ 4:
75
+ - name: Näfelser Fahrt
76
+ regions: [ch_gl]
77
+ function: ch_gl_naefelser_fahrt(year)
78
+ 5:
79
+ - name: Tag der Arbeit
80
+ regions: [ch_zh, ch_bs, ch_bl, ch_sh, ch_ag, ch_tg, ch_ti, ch_ne, ch_ju]
81
+ mday: 1
82
+ 6:
83
+ - name: Commémoration du plébiscite jurassien
84
+ regions: [ch_ju]
85
+ mday: 23
86
+ - name: San Pietro e Paolo
87
+ regions: [ch_ti]
88
+ mday: 29
89
+ 8:
90
+ # Federal holiday
91
+ - name: Bundesfeiertag
92
+ regions: [ch]
93
+ mday: 1
94
+ - name: Mariä Himmelfahrt
95
+ regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_zg, ch_fr, ch_so, ch_ai, ch_ag, ch_ti, ch_vs, ch_ju]
96
+ mday: 15
97
+ 9:
98
+ - name: Mauritiustag
99
+ regions: [ch_ai]
100
+ mday: 22
101
+ - name: Bruderklausenfest
102
+ regions: [ch_ow]
103
+ mday: 25
104
+ 11:
105
+ - name: Zibelemärit
106
+ regions: [ch_be]
107
+ function: ch_be_zibelemaerit(year)
108
+ - name: Allerheiligen
109
+ regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_ai, ch_sg, ch_ag, ch_ti, ch_vs, ch_ju]
110
+ mday: 1
111
+ 12:
112
+ - name: Maria Empfängnis
113
+ regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_zg, ch_fr, ch_ai, ch_ag, ch_ti, ch_vs]
114
+ mday: 8
115
+ # State holiday but observed in all the states
116
+ - name: Weihnachten
117
+ regions: [ch]
118
+ mday: 25
119
+ - name: Stefanstag
120
+ regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vs, ch_ne]
121
+ mday: 26
122
+ - name: Restauration de la République
123
+ regions: [ch_ge]
124
+ mday: 31
125
+
126
+ methods:
127
+ ch_vd_lundi_du_jeune_federal:
128
+ # Monday after the third Sunday of September
129
+ arguments: year
130
+ ruby: |
131
+ date = Date.civil(year,9,1)
132
+ # Find the first Sunday of September
133
+ until date.wday.eql? 0 do
134
+ date += 1
135
+ end
136
+ # There are 15 days between the first Sunday
137
+ # and the Monday after the third Sunday
138
+ date + 15
139
+ ch_ge_jeune_genevois:
140
+ # Thursday after the first Sunday of September
141
+ arguments: year
142
+ ruby: |
143
+ date = Date.civil(year,9,1)
144
+ # Find the first Sunday of September
145
+ until date.wday.eql? 0 do
146
+ date += 1
147
+ end
148
+ # Thursday is four days after Sunday
149
+ date + 4
150
+ ch_gl_naefelser_fahrt:
151
+ # First Thursday of April. If the first Thursday of April is in the week before easter, then a week later.
152
+ arguments: year
153
+ ruby: |
154
+ date = Date.civil(year,4,1)
155
+ # Find the first Thursday of April
156
+ until date.wday.eql? 4 do
157
+ date += 1
158
+ end
159
+
160
+ if date.eql?(Holidays::Factory::DateCalculator::Easter::Gregorian.easter_calculator.calculate_easter_for(year)-3)
161
+ date += 7
162
+ end
163
+ date
164
+ ch_be_zibelemaerit:
165
+ # fourth Monday in november
166
+ arguments: year
167
+ ruby: |
168
+ date = Date.civil(year,11,1)
169
+ # Find the first Monday of November
170
+ until date.wday.eql? 1 do
171
+ date += 1
172
+ end
173
+ # There are 21 days between the first monday
174
+ # and the 4rth Monday after
175
+ date + 21
176
+
177
+ tests:
178
+ - given:
179
+ date: '2018-01-01'
180
+ regions: ["ch"]
181
+ expect:
182
+ name: "Neujahrstag"
183
+ - given:
184
+ date: '2012-08-01'
185
+ regions: ["ch"]
186
+ expect:
187
+ name: "Bundesfeiertag"
188
+ - given:
189
+ date: '2012-12-25'
190
+ regions: ["ch"]
191
+ expect:
192
+ name: "Weihnachten"
193
+ - given:
194
+ date: '2012-05-17'
195
+ regions: ["ch"]
196
+ expect:
197
+ name: "Auffahrt"
198
+ - given:
199
+ date: '2012-08-01'
200
+ regions: ["ch_zh"]
201
+ expect:
202
+ name: "Bundesfeiertag"
203
+ - given:
204
+ date: '2012-12-25'
205
+ regions: ["ch_zh"]
206
+ expect:
207
+ name: "Weihnachten"
208
+ - given:
209
+ date: '2012-05-17'
210
+ regions: ["ch_zh"]
211
+ expect:
212
+ name: "Auffahrt"
213
+ - given:
214
+ date: '2012-05-01'
215
+ regions: ["ch_zh"]
216
+ expect:
217
+ name: "Tag der Arbeit"
218
+ - given:
219
+ date: '2012-12-26'
220
+ regions: ["ch_zh"]
221
+ expect:
222
+ name: "Stefanstag"
223
+ - given:
224
+ date: '2012-09-17'
225
+ regions: ["ch_vd"]
226
+ expect:
227
+ name: "Lundi du Jeûne fédéral"
228
+ - given:
229
+ date: '2013-09-16'
230
+ regions: ["ch_vd"]
231
+ expect:
232
+ name: "Lundi du Jeûne fédéral"
233
+ - given:
234
+ date: '2014-09-22'
235
+ regions: ["ch_vd"]
236
+ expect:
237
+ name: "Lundi du Jeûne fédéral"
238
+ - given:
239
+ date: '2012-09-06'
240
+ regions: ["ch_ge"]
241
+ expect:
242
+ name: "Jeûne genevois"
243
+ - given:
244
+ date: '2013-09-05'
245
+ regions: ["ch_ge"]
246
+ expect:
247
+ name: "Jeûne genevois"
248
+ - given:
249
+ date: '2014-09-11'
250
+ regions: ["ch_ge"]
251
+ expect:
252
+ name: "Jeûne genevois"
253
+ - given:
254
+ date: '2012-04-12'
255
+ regions: ["ch_gl"]
256
+ expect:
257
+ name: "Näfelser Fahrt"
258
+ - given:
259
+ date: '2013-04-04'
260
+ regions: ["ch_gl"]
261
+ expect:
262
+ name: "Näfelser Fahrt"
263
+ - given:
264
+ date: '2014-04-03'
265
+ regions: ["ch_gl"]
266
+ expect:
267
+ name: "Näfelser Fahrt"
268
+ - given:
269
+ date: '2014-11-24'
270
+ regions: ["ch_be"]
271
+ expect:
272
+ name: "Zibelemärit"
273
+ - given:
274
+ date: '2020-11-23'
275
+ regions: ["ch_be"]
276
+ expect:
277
+ name: "Zibelemärit"
@@ -0,0 +1,294 @@
1
+ # Chilean holiday definitions for the Ruby Holiday gem.
2
+ #
3
+ # Updated: 2019-02-10
4
+ #
5
+ # Sources:
6
+ # - http://www.feriados.cl
7
+ # - http://www.feriadoschilenos.cl
8
+ #
9
+ ---
10
+ months:
11
+ 0:
12
+ - name: Viernes Santo
13
+ regions: [cl]
14
+ function: easter(year)
15
+ function_modifier: -2
16
+ - name: Sábado Santo
17
+ regions: [cl]
18
+ function: easter(year)
19
+ function_modifier: -1
20
+ - name: San Pedro y San Pablo
21
+ regions: [cl]
22
+ function: st_peter_st_paul_cl(year)
23
+ year_ranges:
24
+ from: 2000
25
+ - name: Día de las Iglesias Evangélicas y Protestantes
26
+ regions: [cl]
27
+ function: other_churches_day_cl(year)
28
+ year_ranges:
29
+ from: 2008
30
+ 1:
31
+ - name: Año Nuevo
32
+ regions: [cl]
33
+ mday: 1
34
+ 5:
35
+ - name: Día del Trabajo
36
+ regions: [cl]
37
+ mday: 1
38
+ - name: Día de las Glorias Navales
39
+ regions: [cl]
40
+ mday: 21
41
+ 6:
42
+ - name: San Pedro y San Pablo
43
+ regions: [cl]
44
+ mday: 29
45
+ year_ranges:
46
+ until: 1999
47
+ 7:
48
+ - name: Día de la Virgen del Carmen
49
+ regions: [cl]
50
+ mday: 16
51
+ 8:
52
+ - name: Asunción de la Virgen
53
+ regions: [cl]
54
+ mday: 15
55
+ 9:
56
+ - name: Independencia Nacional
57
+ regions: [cl]
58
+ mday: 18
59
+ - name: Día de las Glorias del Ejército
60
+ regions: [cl]
61
+ mday: 19
62
+ 10:
63
+ - name: Encuentro de Dos Mundos
64
+ regions: [cl]
65
+ mday: 12
66
+ year_ranges:
67
+ until: 1999
68
+ - name: Encuentro de Dos Mundos
69
+ regions: [cl]
70
+ year_ranges:
71
+ from: 2000
72
+ function: columbus_day_cl(year)
73
+ 11:
74
+ - name: Día de Todos los Santos
75
+ regions: [cl]
76
+ mday: 1
77
+ 12:
78
+ - name: Inmaculada Concepción de María
79
+ regions: [cl]
80
+ mday: 8
81
+ - name: Navidad
82
+ regions: [cl]
83
+ mday: 25
84
+
85
+ methods:
86
+ st_peter_st_paul_cl:
87
+ arguments: year
88
+ # Nearest monday
89
+ ruby: |
90
+ date = Date.civil(year, 6, 29)
91
+ if [2,3,4].include?(date.wday)
92
+ date -= (date.wday - 1)
93
+ elsif date.wday == 5
94
+ date += 3
95
+ end
96
+ date
97
+ columbus_day_cl:
98
+ arguments: year
99
+ # Nearest monday
100
+ ruby: |
101
+ date = Date.civil(year, 10, 12)
102
+ if [2,3,4].include?(date.wday)
103
+ date -= (date.wday - 1)
104
+ elsif date.wday == 5
105
+ date += 3
106
+ end
107
+ date
108
+ other_churches_day_cl:
109
+ arguments: year
110
+ # If on tuesday, friday before, if on wednesday, next friday
111
+ ruby: |
112
+ date = Date.civil(year, 10, 31)
113
+ if date.wday == 2
114
+ date -= 4
115
+ elsif date.wday == 3
116
+ date += 2
117
+ end
118
+ date
119
+
120
+ tests:
121
+ - given:
122
+ date: '2014-01-01'
123
+ regions: ["cl"]
124
+ options: ["informal"]
125
+ expect:
126
+ name: "Año Nuevo"
127
+ - given:
128
+ date: '2011-04-22'
129
+ regions: ["cl"]
130
+ options: ["informal"]
131
+ expect:
132
+ name: "Viernes Santo"
133
+ - given:
134
+ date: '2011-04-23'
135
+ regions: ["cl"]
136
+ options: ["informal"]
137
+ expect:
138
+ name: "Sábado Santo"
139
+ - given:
140
+ date: '2012-04-06'
141
+ regions: ["cl"]
142
+ options: ["informal"]
143
+ expect:
144
+ name: "Viernes Santo"
145
+ - given:
146
+ date: '2012-04-07'
147
+ regions: ["cl"]
148
+ options: ["informal"]
149
+ expect:
150
+ name: "Sábado Santo"
151
+ - given:
152
+ date: '2013-03-29'
153
+ regions: ["cl"]
154
+ options: ["informal"]
155
+ expect:
156
+ name: "Viernes Santo"
157
+ - given:
158
+ date: '2013-03-30'
159
+ regions: ["cl"]
160
+ options: ["informal"]
161
+ expect:
162
+ name: "Sábado Santo"
163
+ - given:
164
+ date: '2014-04-18'
165
+ regions: ["cl"]
166
+ options: ["informal"]
167
+ expect:
168
+ name: "Viernes Santo"
169
+ - given:
170
+ date: '2014-04-19'
171
+ regions: ["cl"]
172
+ options: ["informal"]
173
+ expect:
174
+ name: "Sábado Santo"
175
+ - given:
176
+ date: '2015-04-03'
177
+ regions: ["cl"]
178
+ options: ["informal"]
179
+ expect:
180
+ name: "Viernes Santo"
181
+ - given:
182
+ date: '2015-04-04'
183
+ regions: ["cl"]
184
+ options: ["informal"]
185
+ expect:
186
+ name: "Sábado Santo"
187
+ - given:
188
+ date: '2016-03-25'
189
+ regions: ["cl"]
190
+ options: ["informal"]
191
+ expect:
192
+ name: "Viernes Santo"
193
+ - given:
194
+ date: '2016-03-26'
195
+ regions: ["cl"]
196
+ options: ["informal"]
197
+ expect:
198
+ name: "Sábado Santo"
199
+ - given:
200
+ date: '2014-05-01'
201
+ regions: ["cl"]
202
+ options: ["informal"]
203
+ expect:
204
+ name: "Día del Trabajo"
205
+ - given:
206
+ date: '2014-05-21'
207
+ regions: ["cl"]
208
+ options: ["informal"]
209
+ expect:
210
+ name: "Día de las Glorias Navales"
211
+ - given:
212
+ date: '1999-06-29'
213
+ regions: ["cl"]
214
+ options: ["informal"]
215
+ expect:
216
+ name: "San Pedro y San Pablo"
217
+ - given:
218
+ date: '2000-06-26'
219
+ regions: ["cl"]
220
+ options: ["informal"]
221
+ expect:
222
+ name: "San Pedro y San Pablo"
223
+ - given:
224
+ date: '2017-06-26'
225
+ regions: ["cl"]
226
+ options: ["informal"]
227
+ expect:
228
+ name: "San Pedro y San Pablo"
229
+ - given:
230
+ date: '2018-07-2'
231
+ regions: ["cl"]
232
+ options: ["informal"]
233
+ expect:
234
+ name: "San Pedro y San Pablo"
235
+ - given:
236
+ date: '2014-07-16'
237
+ regions: ["cl"]
238
+ options: ["informal"]
239
+ expect:
240
+ name: "Día de la Virgen del Carmen"
241
+ - given:
242
+ date: '2014-08-15'
243
+ regions: ["cl"]
244
+ options: ["informal"]
245
+ expect:
246
+ name: "Asunción de la Virgen"
247
+ - given:
248
+ date: '2014-09-18'
249
+ regions: ["cl"]
250
+ options: ["informal"]
251
+ expect:
252
+ name: "Independencia Nacional"
253
+ - given:
254
+ date: '2014-09-19'
255
+ regions: ["cl"]
256
+ options: ["informal"]
257
+ expect:
258
+ name: "Día de las Glorias del Ejército"
259
+ - given:
260
+ date: '1999-10-12'
261
+ regions: ["cl"]
262
+ options: ["informal"]
263
+ expect:
264
+ name: "Encuentro de Dos Mundos"
265
+ - given:
266
+ date: '2017-10-9'
267
+ regions: ["cl"]
268
+ options: ["informal"]
269
+ expect:
270
+ name: "Encuentro de Dos Mundos"
271
+ - given:
272
+ date: '2017-10-27'
273
+ regions: ["cl"]
274
+ options: ["informal"]
275
+ expect:
276
+ name: "Día de las Iglesias Evangélicas y Protestantes"
277
+ - given:
278
+ date: '2014-11-01'
279
+ regions: ["cl"]
280
+ options: ["informal"]
281
+ expect:
282
+ name: "Día de Todos los Santos"
283
+ - given:
284
+ date: '2014-12-08'
285
+ regions: ["cl"]
286
+ options: ["informal"]
287
+ expect:
288
+ name: "Inmaculada Concepción de María"
289
+ - given:
290
+ date: '2014-12-25'
291
+ regions: ["cl"]
292
+ options: ["informal"]
293
+ expect:
294
+ name: "Navidad"