From 0e3431f111a040e293860fd5f13ac1b8754f7dae Mon Sep 17 00:00:00 2001 From: Alan Guo Xiang Tan Date: Tue, 1 Jun 2021 10:49:48 +0800 Subject: [PATCH] Hard fork holidays/holidays gem into plugin. The original gem does not seem to be maintained anymore so we're pulling this into the plugin so that we can update the definitions easily. --- jobs/scheduled/create_holiday_events.rb | 2 - lib/tasks/javascript.rake | 1 - plugin.rb | 5 +- vendor/holidays/CHANGELOG.md | 416 +++++ vendor/holidays/CODE_OF_CONDUCT.md | 74 + vendor/holidays/Gemfile | 3 + vendor/holidays/Gemfile.lock | 40 + vendor/holidays/LICENSE | 21 + vendor/holidays/Makefile | 45 + vendor/holidays/README.md | 322 ++++ vendor/holidays/Rakefile | 109 ++ vendor/holidays/bin/console | 7 + vendor/holidays/bin/setup | 6 + vendor/holidays/definitions/CHANGELOG.md | 272 +++ vendor/holidays/definitions/Gemfile | 6 + vendor/holidays/definitions/LICENSE | 21 + vendor/holidays/definitions/METHODS.yml | 26 + vendor/holidays/definitions/Makefile | 9 + vendor/holidays/definitions/README.md | 22 + vendor/holidays/definitions/ar.yaml | 202 +++ vendor/holidays/definitions/at.yaml | 116 ++ vendor/holidays/definitions/au.yaml | 751 +++++++++ vendor/holidays/definitions/be_fr.yaml | 153 ++ vendor/holidays/definitions/be_nl.yaml | 153 ++ vendor/holidays/definitions/bg.yaml | 186 +++ vendor/holidays/definitions/br.yaml | 161 ++ vendor/holidays/definitions/ca.yaml | 881 ++++++++++ vendor/holidays/definitions/ch.yaml | 277 ++++ vendor/holidays/definitions/cl.yaml | 294 ++++ vendor/holidays/definitions/co.yaml | 437 +++++ vendor/holidays/definitions/cr.yaml | 100 ++ vendor/holidays/definitions/cz.yaml | 137 ++ vendor/holidays/definitions/de.yaml | 367 ++++ vendor/holidays/definitions/dk.yaml | 208 +++ .../holidays/definitions/doc/CONTRIBUTING.md | 34 + .../holidays/definitions/doc/MAINTAINERS.md | 39 + vendor/holidays/definitions/doc/SYNTAX.md | 435 +++++ .../definitions/doc/architecture/README.md | 15 + .../definitions/doc/architecture/adr-001.md | 86 + .../definitions/doc/architecture/adr-002.md | 64 + vendor/holidays/definitions/ecbtarget.yaml | 74 + vendor/holidays/definitions/ee.yaml | 123 ++ vendor/holidays/definitions/el.yaml | 158 ++ vendor/holidays/definitions/es.yaml | 495 ++++++ .../holidays/definitions/federalreserve.yaml | 364 ++++ .../definitions/federalreservebanks.yaml | 802 +++++++++ vendor/holidays/definitions/fedex.yaml | 102 ++ vendor/holidays/definitions/fi.yaml | 234 +++ vendor/holidays/definitions/fr.yaml | 157 ++ vendor/holidays/definitions/gb.yaml | 458 +++++ vendor/holidays/definitions/ge.yaml | 158 ++ vendor/holidays/definitions/hk.yaml | 287 ++++ vendor/holidays/definitions/hr.yaml | 171 ++ vendor/holidays/definitions/hu.yaml | 156 ++ vendor/holidays/definitions/ie.yaml | 172 ++ vendor/holidays/definitions/index.yaml | 79 + vendor/holidays/definitions/is.yaml | 247 +++ vendor/holidays/definitions/it.yaml | 246 +++ vendor/holidays/definitions/jp.yaml | 761 +++++++++ vendor/holidays/definitions/kr.yaml | 166 ++ vendor/holidays/definitions/kz.yaml | 128 ++ vendor/holidays/definitions/li.yaml | 154 ++ .../lib/validation/custom_method_validator.rb | 38 + .../lib/validation/definition_validator.rb | 35 + .../definitions/lib/validation/error.rb | 11 + .../lib/validation/month_validator.rb | 58 + .../definitions/lib/validation/run.rb | 66 + .../lib/validation/test_validator.rb | 83 + vendor/holidays/definitions/lt.yaml | 190 +++ vendor/holidays/definitions/lu.yaml | 123 ++ vendor/holidays/definitions/lv.yaml | 216 +++ vendor/holidays/definitions/ma.yaml | 96 ++ vendor/holidays/definitions/mt_en.yaml | 131 ++ vendor/holidays/definitions/mt_mt.yaml | 131 ++ vendor/holidays/definitions/mx.yaml | 153 ++ vendor/holidays/definitions/my.yaml | 79 + vendor/holidays/definitions/nerc.yaml | 94 ++ vendor/holidays/definitions/ng.yaml | 97 ++ vendor/holidays/definitions/nl.yaml | 127 ++ vendor/holidays/definitions/no.yaml | 169 ++ .../definitions/northamericainformal.yaml | 105 ++ vendor/holidays/definitions/nyse.yaml | 116 ++ vendor/holidays/definitions/nz.yaml | 273 +++ vendor/holidays/definitions/pe.yaml | 208 +++ vendor/holidays/definitions/ph.yaml | 130 ++ vendor/holidays/definitions/pl.yaml | 784 +++++++++ vendor/holidays/definitions/pt.yaml | 187 +++ vendor/holidays/definitions/ro.yaml | 240 +++ vendor/holidays/definitions/rs_cyrl.yaml | 127 ++ vendor/holidays/definitions/rs_la.yaml | 127 ++ vendor/holidays/definitions/ru.yaml | 108 ++ vendor/holidays/definitions/se.yaml | 238 +++ vendor/holidays/definitions/sg.yaml | 90 + vendor/holidays/definitions/si.yaml | 159 ++ vendor/holidays/definitions/sk.yaml | 154 ++ .../definitions/spec/coverage_report.rb | 9 + .../data/invalid/months/malformed/bad.yaml | 15 + .../invalid/months/missing/no_months.yaml | 9 + .../definitions/spec/data/valid/simple.yaml | 15 + .../holidays/definitions/spec/spec_helper.rb | 7 + .../custom_method_validator_spec.rb | 60 + .../validation/definition_validator_spec.rb | 43 + .../spec/validation/month_validator_spec.rb | 175 ++ .../spec/validation/test_validator_spec.rb | 169 ++ vendor/holidays/definitions/th.yaml | 111 ++ vendor/holidays/definitions/tn.yaml | 83 + vendor/holidays/definitions/tr.yaml | 174 ++ vendor/holidays/definitions/ua.yaml | 161 ++ .../holidays/definitions/unitednations.yaml | 189 +++ vendor/holidays/definitions/ups.yaml | 102 ++ vendor/holidays/definitions/us.yaml | 947 +++++++++++ vendor/holidays/definitions/ve.yaml | 118 ++ vendor/holidays/definitions/vi.yaml | 54 + vendor/holidays/definitions/za.yaml | 139 ++ vendor/holidays/doc/CONTRIBUTING.md | 72 + vendor/holidays/doc/MAINTAINERS.md | 81 + vendor/holidays/doc/REFERENCES | 19 + vendor/holidays/holidays.gemspec | 26 + .../lib/generated_definitions/MANIFEST | 81 + .../lib/generated_definitions/REGIONS.rb | 6 + .../holidays/lib/generated_definitions/ar.rb | 41 + .../holidays/lib/generated_definitions/at.rb | 37 + .../holidays/lib/generated_definitions/au.rb | 135 ++ .../holidays/lib/generated_definitions/be.rb | 42 + .../lib/generated_definitions/be_fr.rb | 36 + .../lib/generated_definitions/be_nl.rb | 36 + .../holidays/lib/generated_definitions/bg.rb | 53 + .../holidays/lib/generated_definitions/br.rb | 36 + .../holidays/lib/generated_definitions/ca.rb | 83 + .../holidays/lib/generated_definitions/ch.rb | 95 ++ .../holidays/lib/generated_definitions/cl.rb | 71 + .../holidays/lib/generated_definitions/co.rb | 121 ++ .../holidays/lib/generated_definitions/cr.rb | 35 + .../holidays/lib/generated_definitions/cz.rb | 37 + .../holidays/lib/generated_definitions/de.rb | 62 + .../holidays/lib/generated_definitions/dk.rb | 48 + .../lib/generated_definitions/ecbtarget.rb | 30 + .../holidays/lib/generated_definitions/ee.rb | 36 + .../holidays/lib/generated_definitions/el.rb | 38 + .../holidays/lib/generated_definitions/es.rb | 56 + .../lib/generated_definitions/europe.rb | 622 +++++++ .../generated_definitions/federalreserve.rb | 34 + .../federalreservebanks.rb | 34 + .../lib/generated_definitions/fedex.rb | 36 + .../holidays/lib/generated_definitions/fi.rb | 61 + .../holidays/lib/generated_definitions/fr.rb | 39 + .../holidays/lib/generated_definitions/gb.rb | 45 + .../holidays/lib/generated_definitions/ge.rb | 41 + .../holidays/lib/generated_definitions/hk.rb | 106 ++ .../holidays/lib/generated_definitions/hr.rb | 40 + .../holidays/lib/generated_definitions/hu.rb | 35 + .../holidays/lib/generated_definitions/ie.rb | 33 + .../holidays/lib/generated_definitions/is.rb | 60 + .../holidays/lib/generated_definitions/it.rb | 45 + .../holidays/lib/generated_definitions/jp.rb | 166 ++ .../holidays/lib/generated_definitions/kr.rb | 40 + .../holidays/lib/generated_definitions/kz.rb | 38 + .../holidays/lib/generated_definitions/li.rb | 44 + .../holidays/lib/generated_definitions/lt.rb | 37 + .../holidays/lib/generated_definitions/lu.rb | 35 + .../holidays/lib/generated_definitions/lv.rb | 52 + .../holidays/lib/generated_definitions/ma.rb | 33 + .../lib/generated_definitions/mt_en.rb | 38 + .../lib/generated_definitions/mt_mt.rb | 38 + .../holidays/lib/generated_definitions/mx.rb | 54 + .../holidays/lib/generated_definitions/my.rb | 30 + .../lib/generated_definitions/nerc.rb | 30 + .../holidays/lib/generated_definitions/ng.rb | 33 + .../holidays/lib/generated_definitions/nl.rb | 37 + .../holidays/lib/generated_definitions/no.rb | 40 + .../lib/generated_definitions/northamerica.rb | 223 +++ .../lib/generated_definitions/nyse.rb | 33 + .../holidays/lib/generated_definitions/nz.rb | 66 + .../holidays/lib/generated_definitions/pe.rb | 43 + .../holidays/lib/generated_definitions/ph.rb | 50 + .../holidays/lib/generated_definitions/pl.rb | 72 + .../holidays/lib/generated_definitions/pt.rb | 40 + .../holidays/lib/generated_definitions/ro.rb | 39 + .../lib/generated_definitions/rs_cyrl.rb | 39 + .../lib/generated_definitions/rs_la.rb | 39 + .../holidays/lib/generated_definitions/ru.rb | 37 + .../lib/generated_definitions/scandinavia.rb | 166 ++ .../holidays/lib/generated_definitions/se.rb | 53 + .../holidays/lib/generated_definitions/sg.rb | 31 + .../holidays/lib/generated_definitions/si.rb | 38 + .../holidays/lib/generated_definitions/sk.rb | 39 + .../lib/generated_definitions/southamerica.rb | 228 +++ .../holidays/lib/generated_definitions/th.rb | 36 + .../holidays/lib/generated_definitions/tn.rb | 32 + .../holidays/lib/generated_definitions/tr.rb | 64 + .../holidays/lib/generated_definitions/ua.rb | 37 + .../generated_definitions/unitednations.rb | 81 + .../holidays/lib/generated_definitions/ups.rb | 36 + .../holidays/lib/generated_definitions/us.rb | 152 ++ .../holidays/lib/generated_definitions/ve.rb | 36 + .../holidays/lib/generated_definitions/vi.rb | 29 + .../holidays/lib/generated_definitions/za.rb | 36 + vendor/holidays/lib/holidays.rb | 130 ++ .../lib/holidays/core_extensions/date.rb | 57 + .../lib/holidays/core_extensions/time.rb | 23 + .../holidays/date_calculator/day_of_month.rb | 68 + .../lib/holidays/date_calculator/easter.rb | 91 + .../holidays/date_calculator/lunar_date.rb | 371 +++++ .../date_calculator/weekend_modifier.rb | 80 + .../definition/context/function_processor.rb | 91 + .../holidays/definition/context/generator.rb | 209 +++ .../lib/holidays/definition/context/load.rb | 29 + .../lib/holidays/definition/context/merger.rb | 22 + .../decorator/custom_method_proc.rb | 28 + .../decorator/custom_method_source.rb | 30 + .../lib/holidays/definition/decorator/test.rb | 37 + .../definition/entity/custom_method.rb | 11 + .../lib/holidays/definition/entity/test.rb | 11 + .../holidays/definition/generator/module.rb | 54 + .../holidays/definition/generator/regions.rb | 55 + .../lib/holidays/definition/generator/test.rb | 51 + .../definition/parser/custom_method.rb | 67 + .../lib/holidays/definition/parser/test.rb | 86 + .../holidays/definition/repository/cache.rb | 47 + .../definition/repository/custom_methods.rb | 27 + .../repository/holidays_by_month.rb | 57 + .../repository/proc_result_cache.rb | 51 + .../holidays/definition/repository/regions.rb | 46 + .../definition/validator/custom_method.rb | 31 + .../holidays/definition/validator/region.rb | 36 + .../lib/holidays/definition/validator/test.rb | 71 + vendor/holidays/lib/holidays/errors.rb | 11 + .../lib/holidays/factory/date_calculator.rb | 42 + .../lib/holidays/factory/definition.rb | 143 ++ .../holidays/lib/holidays/factory/finder.rb | 70 + .../lib/holidays/finder/context/between.rb | 45 + .../finder/context/dates_driver_builder.rb | 64 + .../holidays/finder/context/next_holiday.rb | 57 + .../holidays/finder/context/parse_options.rb | 104 ++ .../lib/holidays/finder/context/search.rb | 110 ++ .../holidays/finder/context/year_holiday.rb | 57 + .../lib/holidays/finder/rules/in_region.rb | 31 + .../lib/holidays/finder/rules/year_range.rb | 58 + .../lib/holidays/load_all_definitions.rb | 56 + vendor/holidays/lib/holidays/version.rb | 3 + vendor/holidays/test/coverage_report.rb | 26 + .../data/test_custom_govt_holiday_defs.yaml | 5 + .../test_custom_informal_holidays_defs.yaml | 11 + .../test_custom_year_range_holiday_defs.yaml | 31 + .../holidays/test/data/test_invalid_region.rb | 15 + .../test_multiple_custom_holiday_defs.yaml | 12 + ...tiple_regions_with_conflicts_region_1.yaml | 38 + ...tiple_regions_with_conflicts_region_2.yaml | 38 + vendor/holidays/test/data/test_region.rb | 15 + .../data/test_single_custom_holiday_defs.yaml | 12 + ...ngle_custom_holiday_with_custom_procs.yaml | 28 + vendor/holidays/test/defs/test_defs_ar.rb | 53 + vendor/holidays/test/defs/test_defs_at.rb | 31 + vendor/holidays/test/defs/test_defs_au.rb | 200 +++ vendor/holidays/test/defs/test_defs_be_fr.rb | 45 + vendor/holidays/test/defs/test_defs_be_nl.rb | 45 + vendor/holidays/test/defs/test_defs_bg.rb | 41 + vendor/holidays/test/defs/test_defs_br.rb | 45 + vendor/holidays/test/defs/test_defs_ca.rb | 272 +++ vendor/holidays/test/defs/test_defs_ch.rb | 51 + vendor/holidays/test/defs/test_defs_cl.rb | 69 + vendor/holidays/test/defs/test_defs_co.rb | 113 ++ vendor/holidays/test/defs/test_defs_cr.rb | 29 + vendor/holidays/test/defs/test_defs_cz.rb | 37 + vendor/holidays/test/defs/test_defs_de.rb | 85 + vendor/holidays/test/defs/test_defs_dk.rb | 43 + .../holidays/test/defs/test_defs_ecbtarget.rb | 27 + vendor/holidays/test/defs/test_defs_ee.rb | 41 + vendor/holidays/test/defs/test_defs_el.rb | 41 + vendor/holidays/test/defs/test_defs_es.rb | 137 ++ vendor/holidays/test/defs/test_defs_europe.rb | 1476 +++++++++++++++++ vendor/holidays/test/defs/test_defs_fed_ex.rb | 24 + .../test/defs/test_defs_federalreserve.rb | 113 ++ .../defs/test_defs_federalreservebanks.rb | 247 +++ vendor/holidays/test/defs/test_defs_fedex.rb | 31 + vendor/holidays/test/defs/test_defs_fi.rb | 59 + vendor/holidays/test/defs/test_defs_fr.rb | 43 + vendor/holidays/test/defs/test_defs_gb.rb | 133 ++ vendor/holidays/test/defs/test_defs_ge.rb | 53 + vendor/holidays/test/defs/test_defs_hk.rb | 59 + vendor/holidays/test/defs/test_defs_hr.rb | 45 + vendor/holidays/test/defs/test_defs_hu.rb | 47 + vendor/holidays/test/defs/test_defs_ie.rb | 53 + vendor/holidays/test/defs/test_defs_is.rb | 51 + vendor/holidays/test/defs/test_defs_it.rb | 55 + vendor/holidays/test/defs/test_defs_jp.rb | 159 ++ vendor/holidays/test/defs/test_defs_kr.rb | 37 + vendor/holidays/test/defs/test_defs_kz.rb | 39 + vendor/holidays/test/defs/test_defs_li.rb | 35 + vendor/holidays/test/defs/test_defs_lt.rb | 63 + vendor/holidays/test/defs/test_defs_lu.rb | 35 + vendor/holidays/test/defs/test_defs_lv.rb | 90 + vendor/holidays/test/defs/test_defs_ma.rb | 29 + vendor/holidays/test/defs/test_defs_mt_en.rb | 41 + vendor/holidays/test/defs/test_defs_mt_mt.rb | 41 + vendor/holidays/test/defs/test_defs_mx.rb | 47 + vendor/holidays/test/defs/test_defs_my.rb | 23 + vendor/holidays/test/defs/test_defs_nerc.rb | 29 + vendor/holidays/test/defs/test_defs_ng.rb | 29 + vendor/holidays/test/defs/test_defs_nl.rb | 33 + vendor/holidays/test/defs/test_defs_no.rb | 43 + .../test/defs/test_defs_northamerica.rb | 644 +++++++ vendor/holidays/test/defs/test_defs_nyse.rb | 39 + vendor/holidays/test/defs/test_defs_nz.rb | 59 + vendor/holidays/test/defs/test_defs_pe.rb | 47 + vendor/holidays/test/defs/test_defs_ph.rb | 29 + vendor/holidays/test/defs/test_defs_pl.rb | 227 +++ vendor/holidays/test/defs/test_defs_pt.rb | 47 + vendor/holidays/test/defs/test_defs_ro.rb | 65 + .../holidays/test/defs/test_defs_rs_cyrl.rb | 46 + vendor/holidays/test/defs/test_defs_rs_la.rb | 46 + vendor/holidays/test/defs/test_defs_ru.rb | 34 + .../test/defs/test_defs_scandinavia.rb | 211 +++ vendor/holidays/test/defs/test_defs_se.rb | 59 + vendor/holidays/test/defs/test_defs_sg.rb | 25 + vendor/holidays/test/defs/test_defs_si.rb | 105 ++ vendor/holidays/test/defs/test_defs_sk.rb | 41 + .../test/defs/test_defs_southamerica.rb | 307 ++++ vendor/holidays/test/defs/test_defs_th.rb | 33 + vendor/holidays/test/defs/test_defs_tn.rb | 27 + vendor/holidays/test/defs/test_defs_tr.rb | 60 + vendor/holidays/test/defs/test_defs_ua.rb | 41 + .../test/defs/test_defs_unitednations.rb | 11 + vendor/holidays/test/defs/test_defs_ups.rb | 31 + vendor/holidays/test/defs/test_defs_us.rb | 383 +++++ vendor/holidays/test/defs/test_defs_ve.rb | 35 + vendor/holidays/test/defs/test_defs_vi.rb | 22 + vendor/holidays/test/defs/test_defs_za.rb | 35 + .../holidays/core_extensions/test_date.rb | 122 ++ .../core_extensions/test_date_time.rb | 60 + .../date_calculator/test_day_of_month.rb | 27 + .../date_calculator/test_easter_gregorian.rb | 30 + .../date_calculator/test_easter_julian.rb | 36 + .../date_calculator/test_lunar_date.rb | 89 + .../date_calculator/test_weekend_modifier.rb | 54 + .../context/test_function_processor.rb | 199 +++ .../definition/context/test_generator.rb | 226 +++ .../holidays/definition/context/test_load.rb | 37 + .../definition/context/test_merger.rb | 25 + .../decorator/test_custom_method_proc.rb | 113 ++ .../decorator/test_custom_method_source.rb | 96 ++ .../definition/decorator/test_test.rb | 123 ++ .../definition/generator/test_module.rb | 268 +++ .../definition/generator/test_regions.rb | 97 ++ .../definition/generator/test_test.rb | 113 ++ .../definition/parser/test_custom_method.rb | 79 + .../holidays/definition/parser/test_test.rb | 142 ++ .../definition/repository/test_cache.rb | 123 ++ .../repository/test_custom_methods.rb | 43 + .../repository/test_holidays_by_month.rb | 275 +++ .../repository/test_proc_result_cache.rb | 91 + .../definition/repository/test_regions.rb | 104 ++ .../validator/test_custom_method.rb | 94 ++ .../definition/validator/test_region.rb | 54 + .../definition/validator/test_test.rb | 60 + .../holidays/finder/context/test_between.rb | 172 ++ .../context/test_dates_driver_builder.rb | 91 + .../finder/context/test_next_holiday.rb | 156 ++ .../finder/context/test_parse_options.rb | 141 ++ .../holidays/finder/context/test_search.rb | 232 +++ .../finder/context/test_year_holiday.rb | 202 +++ .../holidays/finder/rules/test_in_region.rb | 42 + .../holidays/finder/rules/test_year_range.rb | 166 ++ vendor/holidays/test/integration/README.md | 9 + .../test/integration/test_all_regions.rb | 49 + .../test_any_holidays_during_work_week.rb | 90 + .../integration/test_available_regions.rb | 23 + .../test/integration/test_custom_holidays.rb | 41 + .../test_custom_informal_holidays.rb | 15 + .../test_custom_year_range_holidays.rb | 35 + .../test/integration/test_holidays.rb | 249 +++ .../test/integration/test_holidays_between.rb | 87 + .../test/integration/test_multiple_regions.rb | 71 + .../test_multiple_regions_with_conflict.rb | 29 + .../integration/test_nonstandard_regions.rb | 25 + vendor/holidays/test/test_helper.rb | 37 + 376 files changed, 40045 insertions(+), 4 deletions(-) create mode 100644 vendor/holidays/CHANGELOG.md create mode 100644 vendor/holidays/CODE_OF_CONDUCT.md create mode 100644 vendor/holidays/Gemfile create mode 100644 vendor/holidays/Gemfile.lock create mode 100644 vendor/holidays/LICENSE create mode 100644 vendor/holidays/Makefile create mode 100644 vendor/holidays/README.md create mode 100644 vendor/holidays/Rakefile create mode 100755 vendor/holidays/bin/console create mode 100755 vendor/holidays/bin/setup create mode 100644 vendor/holidays/definitions/CHANGELOG.md create mode 100644 vendor/holidays/definitions/Gemfile create mode 100644 vendor/holidays/definitions/LICENSE create mode 100644 vendor/holidays/definitions/METHODS.yml create mode 100644 vendor/holidays/definitions/Makefile create mode 100644 vendor/holidays/definitions/README.md create mode 100644 vendor/holidays/definitions/ar.yaml create mode 100644 vendor/holidays/definitions/at.yaml create mode 100644 vendor/holidays/definitions/au.yaml create mode 100644 vendor/holidays/definitions/be_fr.yaml create mode 100644 vendor/holidays/definitions/be_nl.yaml create mode 100644 vendor/holidays/definitions/bg.yaml create mode 100644 vendor/holidays/definitions/br.yaml create mode 100644 vendor/holidays/definitions/ca.yaml create mode 100644 vendor/holidays/definitions/ch.yaml create mode 100644 vendor/holidays/definitions/cl.yaml create mode 100644 vendor/holidays/definitions/co.yaml create mode 100644 vendor/holidays/definitions/cr.yaml create mode 100644 vendor/holidays/definitions/cz.yaml create mode 100644 vendor/holidays/definitions/de.yaml create mode 100644 vendor/holidays/definitions/dk.yaml create mode 100644 vendor/holidays/definitions/doc/CONTRIBUTING.md create mode 100644 vendor/holidays/definitions/doc/MAINTAINERS.md create mode 100644 vendor/holidays/definitions/doc/SYNTAX.md create mode 100644 vendor/holidays/definitions/doc/architecture/README.md create mode 100644 vendor/holidays/definitions/doc/architecture/adr-001.md create mode 100644 vendor/holidays/definitions/doc/architecture/adr-002.md create mode 100644 vendor/holidays/definitions/ecbtarget.yaml create mode 100644 vendor/holidays/definitions/ee.yaml create mode 100644 vendor/holidays/definitions/el.yaml create mode 100644 vendor/holidays/definitions/es.yaml create mode 100644 vendor/holidays/definitions/federalreserve.yaml create mode 100644 vendor/holidays/definitions/federalreservebanks.yaml create mode 100644 vendor/holidays/definitions/fedex.yaml create mode 100644 vendor/holidays/definitions/fi.yaml create mode 100644 vendor/holidays/definitions/fr.yaml create mode 100644 vendor/holidays/definitions/gb.yaml create mode 100644 vendor/holidays/definitions/ge.yaml create mode 100644 vendor/holidays/definitions/hk.yaml create mode 100644 vendor/holidays/definitions/hr.yaml create mode 100644 vendor/holidays/definitions/hu.yaml create mode 100644 vendor/holidays/definitions/ie.yaml create mode 100644 vendor/holidays/definitions/index.yaml create mode 100644 vendor/holidays/definitions/is.yaml create mode 100644 vendor/holidays/definitions/it.yaml create mode 100644 vendor/holidays/definitions/jp.yaml create mode 100644 vendor/holidays/definitions/kr.yaml create mode 100644 vendor/holidays/definitions/kz.yaml create mode 100644 vendor/holidays/definitions/li.yaml create mode 100644 vendor/holidays/definitions/lib/validation/custom_method_validator.rb create mode 100644 vendor/holidays/definitions/lib/validation/definition_validator.rb create mode 100644 vendor/holidays/definitions/lib/validation/error.rb create mode 100644 vendor/holidays/definitions/lib/validation/month_validator.rb create mode 100644 vendor/holidays/definitions/lib/validation/run.rb create mode 100644 vendor/holidays/definitions/lib/validation/test_validator.rb create mode 100644 vendor/holidays/definitions/lt.yaml create mode 100644 vendor/holidays/definitions/lu.yaml create mode 100644 vendor/holidays/definitions/lv.yaml create mode 100644 vendor/holidays/definitions/ma.yaml create mode 100644 vendor/holidays/definitions/mt_en.yaml create mode 100644 vendor/holidays/definitions/mt_mt.yaml create mode 100644 vendor/holidays/definitions/mx.yaml create mode 100644 vendor/holidays/definitions/my.yaml create mode 100644 vendor/holidays/definitions/nerc.yaml create mode 100644 vendor/holidays/definitions/ng.yaml create mode 100644 vendor/holidays/definitions/nl.yaml create mode 100644 vendor/holidays/definitions/no.yaml create mode 100644 vendor/holidays/definitions/northamericainformal.yaml create mode 100644 vendor/holidays/definitions/nyse.yaml create mode 100644 vendor/holidays/definitions/nz.yaml create mode 100644 vendor/holidays/definitions/pe.yaml create mode 100644 vendor/holidays/definitions/ph.yaml create mode 100644 vendor/holidays/definitions/pl.yaml create mode 100644 vendor/holidays/definitions/pt.yaml create mode 100644 vendor/holidays/definitions/ro.yaml create mode 100644 vendor/holidays/definitions/rs_cyrl.yaml create mode 100644 vendor/holidays/definitions/rs_la.yaml create mode 100644 vendor/holidays/definitions/ru.yaml create mode 100644 vendor/holidays/definitions/se.yaml create mode 100644 vendor/holidays/definitions/sg.yaml create mode 100644 vendor/holidays/definitions/si.yaml create mode 100644 vendor/holidays/definitions/sk.yaml create mode 100644 vendor/holidays/definitions/spec/coverage_report.rb create mode 100644 vendor/holidays/definitions/spec/data/invalid/months/malformed/bad.yaml create mode 100644 vendor/holidays/definitions/spec/data/invalid/months/missing/no_months.yaml create mode 100644 vendor/holidays/definitions/spec/data/valid/simple.yaml create mode 100644 vendor/holidays/definitions/spec/spec_helper.rb create mode 100644 vendor/holidays/definitions/spec/validation/custom_method_validator_spec.rb create mode 100644 vendor/holidays/definitions/spec/validation/definition_validator_spec.rb create mode 100644 vendor/holidays/definitions/spec/validation/month_validator_spec.rb create mode 100644 vendor/holidays/definitions/spec/validation/test_validator_spec.rb create mode 100644 vendor/holidays/definitions/th.yaml create mode 100644 vendor/holidays/definitions/tn.yaml create mode 100644 vendor/holidays/definitions/tr.yaml create mode 100644 vendor/holidays/definitions/ua.yaml create mode 100644 vendor/holidays/definitions/unitednations.yaml create mode 100644 vendor/holidays/definitions/ups.yaml create mode 100644 vendor/holidays/definitions/us.yaml create mode 100644 vendor/holidays/definitions/ve.yaml create mode 100644 vendor/holidays/definitions/vi.yaml create mode 100644 vendor/holidays/definitions/za.yaml create mode 100644 vendor/holidays/doc/CONTRIBUTING.md create mode 100644 vendor/holidays/doc/MAINTAINERS.md create mode 100644 vendor/holidays/doc/REFERENCES create mode 100644 vendor/holidays/holidays.gemspec create mode 100644 vendor/holidays/lib/generated_definitions/MANIFEST create mode 100644 vendor/holidays/lib/generated_definitions/REGIONS.rb create mode 100644 vendor/holidays/lib/generated_definitions/ar.rb create mode 100644 vendor/holidays/lib/generated_definitions/at.rb create mode 100644 vendor/holidays/lib/generated_definitions/au.rb create mode 100644 vendor/holidays/lib/generated_definitions/be.rb create mode 100644 vendor/holidays/lib/generated_definitions/be_fr.rb create mode 100644 vendor/holidays/lib/generated_definitions/be_nl.rb create mode 100644 vendor/holidays/lib/generated_definitions/bg.rb create mode 100644 vendor/holidays/lib/generated_definitions/br.rb create mode 100644 vendor/holidays/lib/generated_definitions/ca.rb create mode 100644 vendor/holidays/lib/generated_definitions/ch.rb create mode 100644 vendor/holidays/lib/generated_definitions/cl.rb create mode 100644 vendor/holidays/lib/generated_definitions/co.rb create mode 100644 vendor/holidays/lib/generated_definitions/cr.rb create mode 100644 vendor/holidays/lib/generated_definitions/cz.rb create mode 100644 vendor/holidays/lib/generated_definitions/de.rb create mode 100644 vendor/holidays/lib/generated_definitions/dk.rb create mode 100644 vendor/holidays/lib/generated_definitions/ecbtarget.rb create mode 100644 vendor/holidays/lib/generated_definitions/ee.rb create mode 100644 vendor/holidays/lib/generated_definitions/el.rb create mode 100644 vendor/holidays/lib/generated_definitions/es.rb create mode 100644 vendor/holidays/lib/generated_definitions/europe.rb create mode 100644 vendor/holidays/lib/generated_definitions/federalreserve.rb create mode 100644 vendor/holidays/lib/generated_definitions/federalreservebanks.rb create mode 100644 vendor/holidays/lib/generated_definitions/fedex.rb create mode 100644 vendor/holidays/lib/generated_definitions/fi.rb create mode 100644 vendor/holidays/lib/generated_definitions/fr.rb create mode 100644 vendor/holidays/lib/generated_definitions/gb.rb create mode 100644 vendor/holidays/lib/generated_definitions/ge.rb create mode 100644 vendor/holidays/lib/generated_definitions/hk.rb create mode 100644 vendor/holidays/lib/generated_definitions/hr.rb create mode 100644 vendor/holidays/lib/generated_definitions/hu.rb create mode 100644 vendor/holidays/lib/generated_definitions/ie.rb create mode 100644 vendor/holidays/lib/generated_definitions/is.rb create mode 100644 vendor/holidays/lib/generated_definitions/it.rb create mode 100644 vendor/holidays/lib/generated_definitions/jp.rb create mode 100644 vendor/holidays/lib/generated_definitions/kr.rb create mode 100644 vendor/holidays/lib/generated_definitions/kz.rb create mode 100644 vendor/holidays/lib/generated_definitions/li.rb create mode 100644 vendor/holidays/lib/generated_definitions/lt.rb create mode 100644 vendor/holidays/lib/generated_definitions/lu.rb create mode 100644 vendor/holidays/lib/generated_definitions/lv.rb create mode 100644 vendor/holidays/lib/generated_definitions/ma.rb create mode 100644 vendor/holidays/lib/generated_definitions/mt_en.rb create mode 100644 vendor/holidays/lib/generated_definitions/mt_mt.rb create mode 100644 vendor/holidays/lib/generated_definitions/mx.rb create mode 100644 vendor/holidays/lib/generated_definitions/my.rb create mode 100644 vendor/holidays/lib/generated_definitions/nerc.rb create mode 100644 vendor/holidays/lib/generated_definitions/ng.rb create mode 100644 vendor/holidays/lib/generated_definitions/nl.rb create mode 100644 vendor/holidays/lib/generated_definitions/no.rb create mode 100644 vendor/holidays/lib/generated_definitions/northamerica.rb create mode 100644 vendor/holidays/lib/generated_definitions/nyse.rb create mode 100644 vendor/holidays/lib/generated_definitions/nz.rb create mode 100644 vendor/holidays/lib/generated_definitions/pe.rb create mode 100644 vendor/holidays/lib/generated_definitions/ph.rb create mode 100644 vendor/holidays/lib/generated_definitions/pl.rb create mode 100644 vendor/holidays/lib/generated_definitions/pt.rb create mode 100644 vendor/holidays/lib/generated_definitions/ro.rb create mode 100644 vendor/holidays/lib/generated_definitions/rs_cyrl.rb create mode 100644 vendor/holidays/lib/generated_definitions/rs_la.rb create mode 100644 vendor/holidays/lib/generated_definitions/ru.rb create mode 100644 vendor/holidays/lib/generated_definitions/scandinavia.rb create mode 100644 vendor/holidays/lib/generated_definitions/se.rb create mode 100644 vendor/holidays/lib/generated_definitions/sg.rb create mode 100644 vendor/holidays/lib/generated_definitions/si.rb create mode 100644 vendor/holidays/lib/generated_definitions/sk.rb create mode 100644 vendor/holidays/lib/generated_definitions/southamerica.rb create mode 100644 vendor/holidays/lib/generated_definitions/th.rb create mode 100644 vendor/holidays/lib/generated_definitions/tn.rb create mode 100644 vendor/holidays/lib/generated_definitions/tr.rb create mode 100644 vendor/holidays/lib/generated_definitions/ua.rb create mode 100644 vendor/holidays/lib/generated_definitions/unitednations.rb create mode 100644 vendor/holidays/lib/generated_definitions/ups.rb create mode 100644 vendor/holidays/lib/generated_definitions/us.rb create mode 100644 vendor/holidays/lib/generated_definitions/ve.rb create mode 100644 vendor/holidays/lib/generated_definitions/vi.rb create mode 100644 vendor/holidays/lib/generated_definitions/za.rb create mode 100644 vendor/holidays/lib/holidays.rb create mode 100644 vendor/holidays/lib/holidays/core_extensions/date.rb create mode 100644 vendor/holidays/lib/holidays/core_extensions/time.rb create mode 100644 vendor/holidays/lib/holidays/date_calculator/day_of_month.rb create mode 100644 vendor/holidays/lib/holidays/date_calculator/easter.rb create mode 100644 vendor/holidays/lib/holidays/date_calculator/lunar_date.rb create mode 100644 vendor/holidays/lib/holidays/date_calculator/weekend_modifier.rb create mode 100644 vendor/holidays/lib/holidays/definition/context/function_processor.rb create mode 100644 vendor/holidays/lib/holidays/definition/context/generator.rb create mode 100644 vendor/holidays/lib/holidays/definition/context/load.rb create mode 100644 vendor/holidays/lib/holidays/definition/context/merger.rb create mode 100644 vendor/holidays/lib/holidays/definition/decorator/custom_method_proc.rb create mode 100644 vendor/holidays/lib/holidays/definition/decorator/custom_method_source.rb create mode 100644 vendor/holidays/lib/holidays/definition/decorator/test.rb create mode 100644 vendor/holidays/lib/holidays/definition/entity/custom_method.rb create mode 100644 vendor/holidays/lib/holidays/definition/entity/test.rb create mode 100644 vendor/holidays/lib/holidays/definition/generator/module.rb create mode 100644 vendor/holidays/lib/holidays/definition/generator/regions.rb create mode 100644 vendor/holidays/lib/holidays/definition/generator/test.rb create mode 100644 vendor/holidays/lib/holidays/definition/parser/custom_method.rb create mode 100644 vendor/holidays/lib/holidays/definition/parser/test.rb create mode 100644 vendor/holidays/lib/holidays/definition/repository/cache.rb create mode 100644 vendor/holidays/lib/holidays/definition/repository/custom_methods.rb create mode 100644 vendor/holidays/lib/holidays/definition/repository/holidays_by_month.rb create mode 100644 vendor/holidays/lib/holidays/definition/repository/proc_result_cache.rb create mode 100644 vendor/holidays/lib/holidays/definition/repository/regions.rb create mode 100644 vendor/holidays/lib/holidays/definition/validator/custom_method.rb create mode 100644 vendor/holidays/lib/holidays/definition/validator/region.rb create mode 100644 vendor/holidays/lib/holidays/definition/validator/test.rb create mode 100644 vendor/holidays/lib/holidays/errors.rb create mode 100644 vendor/holidays/lib/holidays/factory/date_calculator.rb create mode 100644 vendor/holidays/lib/holidays/factory/definition.rb create mode 100644 vendor/holidays/lib/holidays/factory/finder.rb create mode 100644 vendor/holidays/lib/holidays/finder/context/between.rb create mode 100644 vendor/holidays/lib/holidays/finder/context/dates_driver_builder.rb create mode 100644 vendor/holidays/lib/holidays/finder/context/next_holiday.rb create mode 100644 vendor/holidays/lib/holidays/finder/context/parse_options.rb create mode 100644 vendor/holidays/lib/holidays/finder/context/search.rb create mode 100644 vendor/holidays/lib/holidays/finder/context/year_holiday.rb create mode 100644 vendor/holidays/lib/holidays/finder/rules/in_region.rb create mode 100644 vendor/holidays/lib/holidays/finder/rules/year_range.rb create mode 100644 vendor/holidays/lib/holidays/load_all_definitions.rb create mode 100644 vendor/holidays/lib/holidays/version.rb create mode 100644 vendor/holidays/test/coverage_report.rb create mode 100644 vendor/holidays/test/data/test_custom_govt_holiday_defs.yaml create mode 100644 vendor/holidays/test/data/test_custom_informal_holidays_defs.yaml create mode 100644 vendor/holidays/test/data/test_custom_year_range_holiday_defs.yaml create mode 100644 vendor/holidays/test/data/test_invalid_region.rb create mode 100644 vendor/holidays/test/data/test_multiple_custom_holiday_defs.yaml create mode 100644 vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_1.yaml create mode 100644 vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_2.yaml create mode 100644 vendor/holidays/test/data/test_region.rb create mode 100644 vendor/holidays/test/data/test_single_custom_holiday_defs.yaml create mode 100644 vendor/holidays/test/data/test_single_custom_holiday_with_custom_procs.yaml create mode 100644 vendor/holidays/test/defs/test_defs_ar.rb create mode 100644 vendor/holidays/test/defs/test_defs_at.rb create mode 100644 vendor/holidays/test/defs/test_defs_au.rb create mode 100644 vendor/holidays/test/defs/test_defs_be_fr.rb create mode 100644 vendor/holidays/test/defs/test_defs_be_nl.rb create mode 100644 vendor/holidays/test/defs/test_defs_bg.rb create mode 100644 vendor/holidays/test/defs/test_defs_br.rb create mode 100644 vendor/holidays/test/defs/test_defs_ca.rb create mode 100644 vendor/holidays/test/defs/test_defs_ch.rb create mode 100644 vendor/holidays/test/defs/test_defs_cl.rb create mode 100644 vendor/holidays/test/defs/test_defs_co.rb create mode 100644 vendor/holidays/test/defs/test_defs_cr.rb create mode 100644 vendor/holidays/test/defs/test_defs_cz.rb create mode 100644 vendor/holidays/test/defs/test_defs_de.rb create mode 100644 vendor/holidays/test/defs/test_defs_dk.rb create mode 100644 vendor/holidays/test/defs/test_defs_ecbtarget.rb create mode 100644 vendor/holidays/test/defs/test_defs_ee.rb create mode 100644 vendor/holidays/test/defs/test_defs_el.rb create mode 100644 vendor/holidays/test/defs/test_defs_es.rb create mode 100644 vendor/holidays/test/defs/test_defs_europe.rb create mode 100644 vendor/holidays/test/defs/test_defs_fed_ex.rb create mode 100644 vendor/holidays/test/defs/test_defs_federalreserve.rb create mode 100644 vendor/holidays/test/defs/test_defs_federalreservebanks.rb create mode 100644 vendor/holidays/test/defs/test_defs_fedex.rb create mode 100644 vendor/holidays/test/defs/test_defs_fi.rb create mode 100644 vendor/holidays/test/defs/test_defs_fr.rb create mode 100644 vendor/holidays/test/defs/test_defs_gb.rb create mode 100644 vendor/holidays/test/defs/test_defs_ge.rb create mode 100644 vendor/holidays/test/defs/test_defs_hk.rb create mode 100644 vendor/holidays/test/defs/test_defs_hr.rb create mode 100644 vendor/holidays/test/defs/test_defs_hu.rb create mode 100644 vendor/holidays/test/defs/test_defs_ie.rb create mode 100644 vendor/holidays/test/defs/test_defs_is.rb create mode 100644 vendor/holidays/test/defs/test_defs_it.rb create mode 100644 vendor/holidays/test/defs/test_defs_jp.rb create mode 100644 vendor/holidays/test/defs/test_defs_kr.rb create mode 100644 vendor/holidays/test/defs/test_defs_kz.rb create mode 100644 vendor/holidays/test/defs/test_defs_li.rb create mode 100644 vendor/holidays/test/defs/test_defs_lt.rb create mode 100644 vendor/holidays/test/defs/test_defs_lu.rb create mode 100644 vendor/holidays/test/defs/test_defs_lv.rb create mode 100644 vendor/holidays/test/defs/test_defs_ma.rb create mode 100644 vendor/holidays/test/defs/test_defs_mt_en.rb create mode 100644 vendor/holidays/test/defs/test_defs_mt_mt.rb create mode 100644 vendor/holidays/test/defs/test_defs_mx.rb create mode 100644 vendor/holidays/test/defs/test_defs_my.rb create mode 100644 vendor/holidays/test/defs/test_defs_nerc.rb create mode 100644 vendor/holidays/test/defs/test_defs_ng.rb create mode 100644 vendor/holidays/test/defs/test_defs_nl.rb create mode 100644 vendor/holidays/test/defs/test_defs_no.rb create mode 100644 vendor/holidays/test/defs/test_defs_northamerica.rb create mode 100644 vendor/holidays/test/defs/test_defs_nyse.rb create mode 100644 vendor/holidays/test/defs/test_defs_nz.rb create mode 100644 vendor/holidays/test/defs/test_defs_pe.rb create mode 100644 vendor/holidays/test/defs/test_defs_ph.rb create mode 100644 vendor/holidays/test/defs/test_defs_pl.rb create mode 100644 vendor/holidays/test/defs/test_defs_pt.rb create mode 100644 vendor/holidays/test/defs/test_defs_ro.rb create mode 100644 vendor/holidays/test/defs/test_defs_rs_cyrl.rb create mode 100644 vendor/holidays/test/defs/test_defs_rs_la.rb create mode 100644 vendor/holidays/test/defs/test_defs_ru.rb create mode 100644 vendor/holidays/test/defs/test_defs_scandinavia.rb create mode 100644 vendor/holidays/test/defs/test_defs_se.rb create mode 100644 vendor/holidays/test/defs/test_defs_sg.rb create mode 100644 vendor/holidays/test/defs/test_defs_si.rb create mode 100644 vendor/holidays/test/defs/test_defs_sk.rb create mode 100644 vendor/holidays/test/defs/test_defs_southamerica.rb create mode 100644 vendor/holidays/test/defs/test_defs_th.rb create mode 100644 vendor/holidays/test/defs/test_defs_tn.rb create mode 100644 vendor/holidays/test/defs/test_defs_tr.rb create mode 100644 vendor/holidays/test/defs/test_defs_ua.rb create mode 100644 vendor/holidays/test/defs/test_defs_unitednations.rb create mode 100644 vendor/holidays/test/defs/test_defs_ups.rb create mode 100644 vendor/holidays/test/defs/test_defs_us.rb create mode 100644 vendor/holidays/test/defs/test_defs_ve.rb create mode 100644 vendor/holidays/test/defs/test_defs_vi.rb create mode 100644 vendor/holidays/test/defs/test_defs_za.rb create mode 100644 vendor/holidays/test/holidays/core_extensions/test_date.rb create mode 100644 vendor/holidays/test/holidays/core_extensions/test_date_time.rb create mode 100644 vendor/holidays/test/holidays/date_calculator/test_day_of_month.rb create mode 100644 vendor/holidays/test/holidays/date_calculator/test_easter_gregorian.rb create mode 100644 vendor/holidays/test/holidays/date_calculator/test_easter_julian.rb create mode 100644 vendor/holidays/test/holidays/date_calculator/test_lunar_date.rb create mode 100644 vendor/holidays/test/holidays/date_calculator/test_weekend_modifier.rb create mode 100644 vendor/holidays/test/holidays/definition/context/test_function_processor.rb create mode 100644 vendor/holidays/test/holidays/definition/context/test_generator.rb create mode 100644 vendor/holidays/test/holidays/definition/context/test_load.rb create mode 100644 vendor/holidays/test/holidays/definition/context/test_merger.rb create mode 100644 vendor/holidays/test/holidays/definition/decorator/test_custom_method_proc.rb create mode 100644 vendor/holidays/test/holidays/definition/decorator/test_custom_method_source.rb create mode 100644 vendor/holidays/test/holidays/definition/decorator/test_test.rb create mode 100644 vendor/holidays/test/holidays/definition/generator/test_module.rb create mode 100644 vendor/holidays/test/holidays/definition/generator/test_regions.rb create mode 100644 vendor/holidays/test/holidays/definition/generator/test_test.rb create mode 100644 vendor/holidays/test/holidays/definition/parser/test_custom_method.rb create mode 100644 vendor/holidays/test/holidays/definition/parser/test_test.rb create mode 100644 vendor/holidays/test/holidays/definition/repository/test_cache.rb create mode 100644 vendor/holidays/test/holidays/definition/repository/test_custom_methods.rb create mode 100644 vendor/holidays/test/holidays/definition/repository/test_holidays_by_month.rb create mode 100644 vendor/holidays/test/holidays/definition/repository/test_proc_result_cache.rb create mode 100644 vendor/holidays/test/holidays/definition/repository/test_regions.rb create mode 100644 vendor/holidays/test/holidays/definition/validator/test_custom_method.rb create mode 100644 vendor/holidays/test/holidays/definition/validator/test_region.rb create mode 100644 vendor/holidays/test/holidays/definition/validator/test_test.rb create mode 100644 vendor/holidays/test/holidays/finder/context/test_between.rb create mode 100644 vendor/holidays/test/holidays/finder/context/test_dates_driver_builder.rb create mode 100644 vendor/holidays/test/holidays/finder/context/test_next_holiday.rb create mode 100644 vendor/holidays/test/holidays/finder/context/test_parse_options.rb create mode 100644 vendor/holidays/test/holidays/finder/context/test_search.rb create mode 100644 vendor/holidays/test/holidays/finder/context/test_year_holiday.rb create mode 100644 vendor/holidays/test/holidays/finder/rules/test_in_region.rb create mode 100644 vendor/holidays/test/holidays/finder/rules/test_year_range.rb create mode 100644 vendor/holidays/test/integration/README.md create mode 100644 vendor/holidays/test/integration/test_all_regions.rb create mode 100644 vendor/holidays/test/integration/test_any_holidays_during_work_week.rb create mode 100644 vendor/holidays/test/integration/test_available_regions.rb create mode 100644 vendor/holidays/test/integration/test_custom_holidays.rb create mode 100644 vendor/holidays/test/integration/test_custom_informal_holidays.rb create mode 100644 vendor/holidays/test/integration/test_custom_year_range_holidays.rb create mode 100644 vendor/holidays/test/integration/test_holidays.rb create mode 100644 vendor/holidays/test/integration/test_holidays_between.rb create mode 100644 vendor/holidays/test/integration/test_multiple_regions.rb create mode 100644 vendor/holidays/test/integration/test_multiple_regions_with_conflict.rb create mode 100644 vendor/holidays/test/integration/test_nonstandard_regions.rb create mode 100644 vendor/holidays/test/test_helper.rb diff --git a/jobs/scheduled/create_holiday_events.rb b/jobs/scheduled/create_holiday_events.rb index 27ee5887..42222e68 100644 --- a/jobs/scheduled/create_holiday_events.rb +++ b/jobs/scheduled/create_holiday_events.rb @@ -8,8 +8,6 @@ module Jobs return unless SiteSetting.calendar_enabled return unless topic_id = SiteSetting.holiday_calendar_topic_id.presence - require "holidays" unless defined?(Holidays) - regions_and_user_ids = Hash.new { |h, k| h[k] = [] } UserCustomField diff --git a/lib/tasks/javascript.rake b/lib/tasks/javascript.rake index a3624a3d..2295378a 100644 --- a/lib/tasks/javascript.rake +++ b/lib/tasks/javascript.rake @@ -5,7 +5,6 @@ UNUSED_REGIONS = ["ecbtarget", "federalreserve", "federalreservebanks", "fedex", HOLIDAYS_COUNTRY_OVERRIDES = { "gr" => "el" } task 'javascript:update_constants' => :environment do - require 'holidays' holiday_regions = Holidays.available_regions.map(&:to_s) - UNUSED_REGIONS time_zone_to_region = {} diff --git a/plugin.rb b/plugin.rb index 66f61ff9..8df356bc 100644 --- a/plugin.rb +++ b/plugin.rb @@ -6,7 +6,10 @@ # author: Daniel Waterworth, Joffrey Jaffeux # url: https://github.com/discourse/discourse-calendar -gem 'holidays', '8.4.1', require: false +if !Rails.env.production? || Sidekiq.server? + require File.join(File.dirname(__FILE__), "vendor/holidays/lib/holidays") +end + gem 'rrule', '0.4.2', require: false load File.expand_path('../lib/calendar_settings_validator.rb', __FILE__) diff --git a/vendor/holidays/CHANGELOG.md b/vendor/holidays/CHANGELOG.md new file mode 100644 index 00000000..f517f56b --- /dev/null +++ b/vendor/holidays/CHANGELOG.md @@ -0,0 +1,416 @@ +# Ruby Holidays Gem CHANGELOG + +## 8.4.1 + +* Fix jp holidays from 2022. + +## 8.4.0 + +* Update submodule definitions. +* Thanks to contributors!! + + +## 8.3.0 + +* Update submodule definitions. +* Remove test about feb 29 on non leap year. +* Thanks to contributors!! + +## 8.2.0 + +* Update submodule definitions. Thanks to contributors!! + +## 8.1.0 + +* Update submodule definitions, so that the newest holidays from the definition + gem are represent here. + +## 8.0.0 + +* Remove support for ruby 2.2 and ruby 2.3. +* Add support for latest ruby 2.6 +* Update to [v5.0.1 definitions](https://github.com/holidays/definitions/releases/tag/v5.0.1). Please see the changelog for the definition details. + +## 7.1.0 + +* Update to [v4.1.0 definitions](https://github.com/holidays/definitions/releases/tag/v4.1.0). Please see the changelog for the definition details. + +## 7.0.0 + +Major semver bump due to the major version change in the [definitions](https://github.com/holidays/definitions/blob/master/CHANGELOG.md#400). Several non ISO regions have been modified in order to provide more clarity for parent and sub-regions. + +Affected regions: + +* `ecb_target` region changed to `ecbtarget` +* `federal_reserve` region changed to `federalreserve` +* `federalreservebanks` region changed to `federalreservebanks` +* `north_america_informal` region changed to `northamericainformal` +* `united_nations` region changed to `unitednations` +* `north_america` region changed to `northamerica` +* `south_america` region changed to `southamerica` + +Please see the [definitions v4.0.0 CHANGELOG](https://github.com/holidays/definitions/blob/master/CHANGELOG.md#400) for the full change list. + +## 6.6.1 + +* Fixes `any_holidays_during_work_week?` so that it actually does what it says it does [issue-264](https://github.com/holidays/holidays/issues/264) + +## 6.6.0 + +* Update to [v3.0.0 definitions](https://github.com/holidays/definitions/releases/tag/v3.0.0). This required updates to the custom method parser but no behavior changes. +* Remove unused `simplecov-rcov` from gemspec dev dependencies +* Fix parent region loading bug [PR](https://github.com/holidays/holidays/pull/320) (thanks to chadrschroeder) +* Fix `ruby-head` build caused by new 'endless range' feature in ruby 2.6.0 [PR](https://github.com/holidays/holidays/pull/321) +* Refactor definition search logic for improved readability [PR](https://github.com/holidays/holidays/pull/318) (thanks to https://github.com/guizma) +* Reorganize most documentation into the `docs/` directory +* Fix list of covered rubies in README + +## 6.5.0 + +* Update to [v2.5.2 definitions](https://github.com/holidays/definitions/releases/tag/v2.5.2). Please see the changelog for the definition details. +* Fix permissions on `bin` executables (thanks to github.com/JuanitoFatas) + +## 6.4.0 + +* Update to [v2.4.0 definitions](https://github.com/holidays/definitions/releases/tag/v2.4.0). Please see the changelog for the definition details. + +## 6.3.0 + +* Update to [v2.3.0 definitions](https://github.com/holidays/definitions/releases/tag/v2.3.0). Please see the changelog for the definition details. + +## 6.2.0 + +* Update to [v2.2.1 definitions](https://github.com/holidays/definitions/releases/tag/v2.2.1). Please see the changelog for the definition details. +* README update to add `:federal_reserve` examples (thanks to https://github.com/aahmad) + +## 6.1.0 + +* Update to [v2.1.1 definitions](https://github.com/holidays/definitions/releases/tag/v2.1.1). Please see the changelog for + the definitions for details. + +## 6.0.0 + +* Remove support for ruby 2.1.0 since it is [no longer officially supported](https://www.ruby-lang.org/en/news/2017/04/01/support-of-ruby-2-1-has-ended/). This is the cause of the major + version bump. +* Update to [v2.0.0 definitions](https://github.com/holidays/definitions/releases/tag/v2.0.0). This changes the format + of definition tests and requires the other changes. +* Rewrite test generation logic to consume new YAML format. + +To be crystal clear: this version should not behave differently in terms of holiday results than v5.7.0 of the gem. Any +differences are a bug that should be addressed. + +## 5.7.0 + +* Update to [v1.7.1 definitions](https://github.com/holidays/definitions/releases/tag/v1.7.1). Please see the + definitions repository for the list of changes. +* Remove 'coveralls'. We never looked at the reports. We will we simplecov to enforce test coverage. It will + start off being set to require 99% and above. + +## 5.6.0 + +* Update to v1.6.1 definitions, which includes updates for the `:ca` region (and subregions) + +## 5.5.1 + +* Update to v1.5.1 definitions, which includes bugfix in `fedex` custom method + +## 5.5.0 + +* Fix [#251](https://github.com/holidays/holidays/issues/251): `load_custom` would override all other definitions +* Fix [#266](https://github.com/holidays/holidays/issues/266): `:any` does not return expected results +* Fix [#265](https://github.com/holidays/holidays/issues/265): Jersey/je not loaded as expected when pulling `:gb` +* Add lunar date calculations, which are used in `:kr` and `:vi` definitions (thanks to https://github.com/jonathanpike) +* Improve cache performance (thanks to https://github.com/mzruya) +* Remove incorrect comments in definition generation (thanks to https://github.com/morrme) +* Fix bug related to definition functions inadvertently affecting subsequent date calculations +* Point to latest version (1.5.0) of definitions, which includes: + * Add Vietnamese holidays + * Updates Australian holidays + * Updates Korean holidays to use native language and fancy lunar date calculations + * Fix NYSE definitions to correctly calculate observed "New Year's Day" + +## 5.4.0 + +* Add support for ruby 2.4.0 (added it to the required tests in Travis CI) +* Fix issue [#250](https://github.com/holidays/holidays/issues/250), which was that subregions were 'lost' if there was more than one underscore in it (thanks to https://github.com/chinito) +* Fix caching when using Date extensions (thanks to https://github.com/alexgerstein) +* Remove unused weekend date calculator method (thanks to https://github.com/ttwo32) +* Use FULL_DEFINITIONS_PATH when loading definitions to avoid NameErrors when iterating whole LOAD_PATH (thanks to https://github.com/burke) +* Point to latest version (1.3.0) of definitions, which includes: + * Add Tunisian (tn) holidays (thanks to https://github.com/achr3f) + * Corrects various Australian holidays + * Update certain German regions for accuracy + * Change 'yk' to 'yt' + +## 5.3.0 + +* Fix `ca` province/territory codes for 'Newfoundland and Labrador' and 'Yukon' (thanks to https://github.com/slucaskim) + +## 5.2.1 + +* Fix caching (i.e. calls to `cache_between`) to...you know, actually cache correctly and give + performance improvements. Thanks to https://github.com/AnotherJoSmith for the fix! + +## 5.2.0 + +* Point to latest (v1.2.0 of definitions) + * updates `jp` defs to fix 'Foundation Day' name + * Fix `ca` defs for observed holidays + * Update `au` defs to have Christmas and Boxing Day for all of Australia instead of just individual territories + * Update `ie` defs to consolidate St Stephen's Day to use common method instead of custom method + +## 5.1.0 + +* Add `load_all` method to `Holidays` namespace to preload all definitions (i.e. no lazy loading) +* Fix issue-234: correctly load available regions so there is no error on `Holidays.available_regions` call + +## 5.0.0 + +* Remove support for jruby 1.7 (this is the main reason for the major semver bump) +* Remove support for ruby 2.0 (since it is no longer being supported by the core ruby team) +* Add back the lazy loading of regions (this was removed in the 4.0.0 bump) instead of loading upon require (this should have + no outward repercussions for users) +* Move definitions into their own repository and add as submodule. This will allow for more flexibility for tools written + in other languages. +* Rename `DateCalculatorFactory` to `Factory::DateCalculator` + +## 4.7.0 + +* Fix issue-225 (`LocalJumpError` for certain `jp` definition combinations) (https://github.com/ttwo32) +* Add Korean Lunar holidays (https://github.com/jonathanpike) + +## 4.6.0 + +* Add holidays for 'Luxembourg' (https://github.com/dunyakirkali) + +## 4.5.0 + +* Add `Holidays.year_holidays` method to obtain all holidays occuring from date to end of year, inclusively (thanks to https://github.com/jonathanpike) + +## 4.4.0 + +* Add Peruvian holiday definitions (https://github.com/Xosmond) + +## 4.3.0 + +* Update Portuguese holidays to restore 4 holidays (https://github.com/ruippeixotog) + +## 4.2.0 + +* BUGFIX Issue-194: correctly calculate `next_holidays` if next holiday is far in the future +* Give dutch holidays their proper names (https://github.com/Qqwy) + +## 4.1.0 + +* Issue-161: correctly report St Andrews Day as informal 2006 and earlier in `gb_sct` +* Issue-169: set correct years of observance for Family Day in various `ca` provinces +* Issue-163: Add `next_holidays` method. See README for usage (https://github.com/ttwo32) + +## 4.0.0 + +Major refactor with breaking changes! Sorry for the wall of text but there is a lot of info here. + +* Fixes issue 144 (loading custom defs with methods). This was the refactor catalyst. Changes highlights include: + - Allow for custom methods added via the `load_custom` method to be used immediately as expected + - Consolidate and clarify custom method parsing and validation + - Change nearly every definition to use new 'custom method' YAML format. See `definitions/README.md` for more info. + - Remove `require` functionality when loading new definitions, instead using in-memory repositories. See below for info. + - Now loads all generated definitions when `require 'holidays'` is called. See below for performance info. +* Add `rake console` command for easier local testing +* Remove or rename many public methods that were never intended for public use: + - Remove following date calculation helper methods (definitions must now directly call factory): + - `easter` + - `orthodox_easter` + - `orthodox_easter_julian` + - `to_monday_if_sunday` + - `to_monday_if_weekend` + - `to_weekday_if_boxing_weekend` + - `to_weekday_if_boxing_weekend_from_year` + - `to_weekday_if_weekend` + - `calculate_day_of_month` + - Remove `available` method. This was only intended for internal use + - Remove `parse_definition_files_and_return_source`. This was only intended for internal use + - Remove `load_all` method. This was only intended for internal use + - Rename `regions` to `available_regions` for clarity + - Rename `full_week?` to `any_holidays_during_work_week?` for clarity +* Following methods now constitute the 'public API' of this gem: + - `on` + - `any_holidays_during_work_week?` (renamed method, was originally `full_week?`, same behavior as before) + - `between` + - `cache_between` + - `available_regions` (renamed method, was originally `regions`, same behavior as before) + - `load_custom` +* All generated definitions are now loaded when `require 'holidays'` is called + - Previously files were required 'on the fly' when a specific region was specified. By requiring all definitions upon + startup we greatly simplify the handling of regions, definitions, and custom methods internally + - This results in a performance hit when calling `require 'holidays'`. Here is an example based on my benchmarking: + - old: `0.045537` + - new: `0.145125` + +I decided that this performance hit on startup is acceptable. All other performance should remain the same. If performance is +a major concern please open an issue so we can discuss your use case. + +## 3.3.0 + +This is the final minor point release in v3.X.X. I am releasing it so that all of the latest definitions can be +used by anyone that is not ready to jump to version 4.0.0. I am not planning on supporting this version unless a major +issue is found that needs to be immediately addressed. + +* Update public holidays for Argentina (https://github.com/schmierkov) +* Remove redundant `require` from weekend modifier (https://github.com/Eric-Guo) +* FIX: Easter Saturday not a holiday in NZ (https://github.com/ghiculescu) +* FIX: Japan 'Marine Day' for 1996-2002 year ranges (https://github.com/shuhei) +* FIX: Australia calculations for Christmas and Boxing (https://github.com/ghiculescu) +* Add dutch language version of definitions for Belgium (michael.cox@novalex.be) +* Make 'Goede Vrijdag' informal for NL definitions (https://github.com/MathijsK93) +* Add 'Great Friday' to Czech holidays (juris@uol.cz) +* Add new informal holidays for Germany (https://github.com/knut2) +* FIX: correctly check for new `year_range` attribute in holidays by month repository (https://github.com/knut2) +* Add DE-Reformationstag for 2017 (https://github.com/knut2) +* Update Australia QLD definition Queens Bday and Labour Day (https://github.com/ghiculescu) + +## 3.2.0 + +* add 'valid year' functionality to definitions - https://github.com/holidays/holidays/issues/33 - (thanks to https://github.com/ttwo32) +* Fix 'day after thanksgiving' namespace bug during definition generation (thanks to https://github.com/ttwo32) +* fix Danish holidays 'palmesondag and 1/5 (danish fightday)' to set to informal (thanks to https://github.com/bjensen) + +## 3.1.2 + +* Do not require Date monkeypatching in definitions to use mday calculations (thanks to https://github.com/CloCkWeRX) + +## 3.1.1 + +* Require 'digest/md5' in main 'holidays' module. This was missed during the refactor (thanks to https://github.com/espen) + +## 3.1.0 + +* Fix St. Stephen observance holiday for Ireland (https://github.com/gumchum) +* Add Bulgarian holidays (https://github.com/thekazak) +* Add new mountain holiday for Japan (https://github.com/ttwo32) +* Add ability to calculate Easter in either Gregorian (existing) or Julian (new) dates + +## 3.0.0 + +* Major refactor! Lots of code moved around and some methods were removed from the public api (they were never intended to be public). +* Only supports ruby 2.0.0 and up. Travis config has been updated to reflect this. +* Moves 'date' monkeypatching out of main lib and makes it a core extension. See README for usage. +* Fixes remote execution bug in issue-86 (thanks to https://github.com/Intrepidd for reporting) +* No region definition changes. + +I decided to make this a major version bump due to how much I changed. I truly hope no one will notice. +See the README for the usage. It has, except for the date core extension, not changed. + +## 2.2.0 + +* Correct 'informal' type for Dodenherdenking holiday in NL definitions (https://github.com/MathijsK93) + +## 2.1.0 + +* Updated Slovak holiday definitions (https://github.com/guitarman) +* Fix Japanese non-Monday substitute holidays (https://github.com/shuhei) +* Fixed typo in Slovak holiday definitions (https://github.com/martinsabo) +* Updated New Zealand definitions to reflect new weekend-to-monday rules (https://github.com/SebastianEdwards) +* Fix Australian definitions (https://github.com/ghiculescu) + +## 2.0.0 + +* Add test coverage +* Remove support for Ruby 1.8.7 and REE. (https://github.com/itsmechlark) +* Add support for Ruby 2.2 (https://github.com/itsmechlark) +* Add PH holidays (https://github.com/itsmechlark) +* Belgian holidays now written in French instead of English (https://github.com/maximerety) +* Update California (USA) holidays to include Cesar Chavez and Thanksgiving (https://github.com/evansagge) + +## 1.2.0 + +* Remove inauguration day from USA Federal Reserve definitions (https://github.com/aripollak) +* Add caching functionality for date ranges (https://github.com/ndbroadbent & https://github.com/ghiculescu) + +## 1.1.0 + +* Add support to load custom holidays on the fly +* Add hobart & launceston show days (https://github.com/ghiculescu) +* Add Melbourne Cup day (https://github.com/ghiculescu) +* Add Hobart Regatte Day (https://github.com/ghiculescu) +* Add Costa Rican holidays (https://github.com/kevinwmerritt) +* Update Canadian Holidays (https://github.com/KevinBrowne) +* Add substitute holidays for Japan (https://github.com/YoshiyukiHirano) +* Fix USA Federal Reserve Holidays +* Add FedEx holidays (https://github.com/adamrunner) + +## 1.0.7 + +* Load parent region even when sub region is not explicitly defined (https://github.com/csage) +* Full support for http://en.wikipedia.org/wiki/ISO_3166-2:DE (https://github.com/rojoko) +* Added Lithuanian definitions (https://github.com/Brunas) +* Added Chilean definitions (https://github.com/marcelo-soto)g +* Added European Central Bank TARGET definitions (Toby Bryans, NASDAQ OMX NLX) +* FR: Make Pâques and Pentecôte informal holidays (https://github.com/wizcover) +* NL: Update for the new King (https://github.com/johankok) +* Added Slovenian definitions (https://github.com/bbalon) + +## 1.0.6 + +* Added `Holidays.regions` method (https://github.com/sonnym) +* Added Slovakian definitions (https://github.com/mirelon) +* Added Venezuelan definitions (https://github.com/Chelo) +* Updated Canadian definitions (https://github.com/sdavies) +* Updated Argentinian definitions (https://github.com/popox) +* Updated Australian definitions (https://github.com/ghiculescu) +* Updated Portuguese definitions (https://github.com/MiPereira) +* Added Swiss definitions (https://github.com/samzurcher, https://github.com/jg) +* Added Romanian definitions (https://github.com/mtarnovan) +* Added Belgian definitions (https://github.com/jak78) +* Added Moroccan definitions (https://github.com/jak78) +* Fixes for New Year's and Boxing Day (https://github.com/iterion, https://github.com/andyw8) +* Fixes for Father's Day, Mother's Day and Armed Forces Day (https://github.com/eheikes) +* Typos (https://github.com/gregoriokusowski, https://github.com/popox) +* Added Croatian definitions (https://github.com/lecterror) +* Added US Federal Reserve holidays (https://github.com/willbarrett) +* Added NERC holidays (https://github.com/adamstrickland) +* Updated Irish holidays (https://github.com/xlcrs) + +## 1.0.5 + +* Added `full_week?` method (https://github.com/dceddia) +* Added Portuguese definitions (https://github.com/pmor) +* Added Hungarian definitions (https://github.com/spap) +* Typos (https://github.com/DenisKnauf) + +## 1.0.4 + +* Add Liechtenstein holiday defs (mercy vielmal Bernhard Furtmueller) + +## 1.0.3 + +* Add Austrian holiday definitions (thanks to Vogel Siegfried) + +## 1.0.2 + +* Add `orthodox_easter` method and Greek holiday definitions (thanks https://github.com/ddimitriadis) + +## 1.0.0 + +* Support calculating mday from negative weeks other than -1 (thanks https://github.com/bjeanes) +* Use class method to check leap years and fixed bug in Date.calculate_mday (thanks https://github.com/dgrambow) +* Added Czech (thanks https://github.com/boblin), Brazilian (https://github.com/fabiokr), Norwegian (thanks to Peter Skeide) and Australia/Brisbane (https://github.com/bjeanes) definitions +* Cleaned up rake and gemspec + +## 0.9.3 + +* Added New York Stock Exchange holidays (thank you Alan Larkin). +* Added UPS holidays (thank you Tim Anglade). +* Fixed rakefile to force lower case definition file names. + +## 0.9.2 + +* Included rakefile in Gem (thank you James Herdman). + +## 0.9.1 + +* au.yaml was being included incorrectly in US holiday definitions. Thanks to [Glenn Vanderburg](http://vanderburg.org/) for the fix. + +## 0.9.0 + +* Initial release. diff --git a/vendor/holidays/CODE_OF_CONDUCT.md b/vendor/holidays/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..3c1943df --- /dev/null +++ b/vendor/holidays/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at holidaysgem@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/holidays/Gemfile b/vendor/holidays/Gemfile new file mode 100644 index 00000000..fa75df15 --- /dev/null +++ b/vendor/holidays/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gemspec diff --git a/vendor/holidays/Gemfile.lock b/vendor/holidays/Gemfile.lock new file mode 100644 index 00000000..e40a809a --- /dev/null +++ b/vendor/holidays/Gemfile.lock @@ -0,0 +1,40 @@ +PATH + remote: . + specs: + holidays (8.4.1) + +GEM + remote: https://rubygems.org/ + specs: + coderay (1.1.3) + docile (1.4.0) + method_source (1.0.0) + mocha (1.12.0) + power_assert (2.0.0) + pry (0.14.1) + coderay (~> 1.1) + method_source (~> 1.0) + rake (12.3.3) + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.3) + test-unit (3.4.2) + power_assert + +PLATFORMS + x86_64-linux + +DEPENDENCIES + bundler (~> 2) + holidays! + mocha (~> 1) + pry (~> 0.12) + rake (~> 12) + simplecov (~> 0.16) + test-unit (~> 3) + +BUNDLED WITH + 2.2.18 diff --git a/vendor/holidays/LICENSE b/vendor/holidays/LICENSE new file mode 100644 index 00000000..5c020efb --- /dev/null +++ b/vendor/holidays/LICENSE @@ -0,0 +1,21 @@ +==== Ruby Holidays Gem License + +Copyright (c) 2007, 2014 Alex Dunae + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/holidays/Makefile b/vendor/holidays/Makefile new file mode 100644 index 00000000..1c4f2d57 --- /dev/null +++ b/vendor/holidays/Makefile @@ -0,0 +1,45 @@ +default: test + +setup: update-defs + bundle install + +generate: + bundle exec rake generate + +test: + bundle exec rake test + +console: + bundle exec rake console + +test-region: + bundle exec rake test_region $(REGION) + +build: clean + bundle exec gem build holidays.gemspec + +push: + bundle exec gem push $(GEM) + +update-defs: definitions/ + git submodule update --init --remote --recursive + +definitions: point-to-defs-master + +point-to-defs-branch: + git submodule add -b $(BRANCH) git@github.com:$(USER)/definitions.git definitions/ + +point-to-defs-master: + git submodule add https://github.com/holidays/definitions definitions/ + +clean-defs: + git rm -f definitions + rm -rf .git/modules/definitions + git config -f .git/config --remove-section submodule.definitions 2> /dev/null + +clean: + rm -rf holidays-*.gem + rm -rf reports + rm -rf coverage + +.PHONY: setup test generate console build push update-defs test-region clean-defs point-to-defs-master point-to-defs-branch clean definitions diff --git a/vendor/holidays/README.md b/vendor/holidays/README.md new file mode 100644 index 00000000..1dd78b15 --- /dev/null +++ b/vendor/holidays/README.md @@ -0,0 +1,322 @@ +# Ruby Holidays Gem [![Build Status](https://travis-ci.org/holidays/holidays.svg?branch=master)](https://travis-ci.org/holidays/holidays) + +Functionality to deal with holidays in Ruby. + +Extends Ruby's built-in Date and Time classes and supports custom holiday definition lists. + +## Installation + +``` +gem install holidays +``` + +## Tested versions + +This gem is tested with the following ruby versions: + + * 2.4.5 + * 2.5.3 + * 2.6.1 + * JRuby 9.2.5.0 + +## Semver + +This gem follows [semantic versioning](http://semver.org/). The guarantee specifically covers: + + * methods in the top-most `Holidays` namespace e.g. `Holidays.` + * the [core extensions](#extending-rubys-date-and-time-classes) + +Please note that we consider definition changes to be 'minor' bumps, meaning they are backwards compatible with your code but might give different holiday results! + +## Time zones + +Time zones are ignored. This library assumes that all dates are within the same time zone. + +## Usage + +This gem offers multiple ways to check for holidays for a variety of scenarios. + +#### Checking a specific date + +Get all holidays on April 25, 2008 in Australia: + +``` +Holidays.on(Date.civil(2008, 4, 25), :au) +=> [{:name => 'ANZAC Day',...}] +``` + +You can check multiple regions in a single call: + +``` +Holidays.on(Date.civil(2008, 1, 1), :us, :fr) +=> [{:name=>"New Year's Day", :regions=>[:us],...}, + {:name=>"Jour de l'an", :regions=>[:fr],...}] +``` + +You can leave off 'regions' to get holidays for any region in our [definitions](https://github.com/holidays/definitions): + +``` + Holidays.on(Date.civil(2007, 4, 25)) +=> [{:name=>"ANZAC Day", :regions=>[:au],...}, + {:name=>"Festa della Liberazione", :regions=>[:it],...}, + {:name=>"Dia da Liberdade", :regions=>[:pt],...} + ... + ] +``` + +#### Checking a date range + +Get all holidays during the month of July 2008 in Canada and the US: + +``` +from = Date.civil(2008,7,1) +to = Date.civil(2008,7,31) + +Holidays.between(from, to, :ca, :us) +=> [{:name => 'Canada Day',...} + {:name => 'Independence Day',...}] +``` + +#### Check for 'informal' holidays + +You can pass the 'informal' flag to include holidays specified as informal in your results. See [here](https://github.com/holidays/definitions/blob/master/doc/SYNTAX.md#formalinformal) for information on what constitutes 'informal' vs 'formal'. + +By default this flag is turned off, meaning no informal holidays will be returned. + +Get Valentine's Day in the US: + +``` +Holidays.on(Date.new(2018, 2, 14), :us, :informal) +=> [{:name=>"Valentine's Day",...}] +``` + +Leaving off 'informal' will mean that Valentine's Day is not returned: + +``` +Holidays.on(Date.new(2018, 2, 14), :us) +=> [] +``` + +Get informal holidays during the month of February 2008 for any region: + +``` +from = Date.civil(2008,2,1) +to = Date.civil(2008,2,15) + +Holidays.between(from, to, :informal) +=> [{:name => 'Valentine\'s Day',...}] +``` + +#### Check for 'observed' holidays + +You can pass the 'observed' flag to include holidays that are observed on different days than they actually occur. See [here](https://github.com/holidays/definitions/blob/master/doc/SYNTAX.md#observed) for further explanation of 'observed'. + +By default this flag is turned off, meaning no observed logic will be applied. + +Get holidays that are observed on Monday July 2, 2007 in British Columbia, Canada: + +``` +Holidays.on(Date.civil(2007, 7, 2), :ca_bc, :observed) +=> [{:name => 'Canada Day',...}] +``` + +Leaving off the 'observed' flag will mean that 'Canada Day' is not returned since it actually falls on Sunday July 1: + +``` +Holidays.on(Date.civil(2007, 7, 2), :ca_bc) +=> [] +Holidays.on(Date.civil(2007, 7, 1), :ca_bc) +=> [{:name=>"Canada Day", :regions=>[:ca],...}] +``` + +Get all observed US Federal holidays between 2018 and 2019: + +``` +from = Date.civil(2018,1,1) +to = Date.civil(2019,12,31) + +Holidays.between(from, to, :federalreserve, :observed) +=> [{:name => "New Year's Day"....} + {:name => "Birthday of Martin Luther King, Jr"....}] +``` + +#### Check whether any holidays occur during work week + +Check if there are any holidays taking place during a specified work week. 'Work week' is defined as the period of Monday through Friday of the week specified by the date. + +Check whether a holiday falls during first week of the year for any region: + +``` +Holidays.any_holidays_during_work_week?(Date.civil(2016, 1, 1)) +=> true +``` + +You can also pass in `informal` or `observed`: + +``` +# Returns true since Valentine's Day falls on a Wednesday +holidays.any_holidays_during_work_week?(date.civil(2018, 2, 14), :us, :informal) +=> true +# Returns false if you don't specify informal +irb(main):006:0> Holidays.any_holidays_during_work_week?(Date.civil(2018, 2, 14), :us) +=> false +# Returns true since Veteran's Day is observed on Monday November 12, 2018 +holidays.any_holidays_during_work_week?(date.civil(2018, 11, 12), :us, :observed) +=> true +# Returns false if you don't specify observed since the actual holiday is on Sunday November 11th 2018 +irb(main):005:0> Holidays.any_holidays_during_work_week?(Date.civil(2018, 11, 12), :us) +=> false +``` + +#### Find the next holiday(s) that will occur from a specific date + +Get the next holidays occurring from February 23, 2016 for the US: + +``` +Holidays.next_holidays(3, [:us, :informal], Date.civil(2016, 2, 23)) +=> [{:name => "St. Patrick's Day",...}, {:name => "Good Friday",...}, {:name => "Easter Sunday",...}] +``` + +You can specify the number of holidays to return. This method will default to `Date.today` if no date is provided. + +#### Find all holidays occuring starting from a specific date to the end of the year + +Get all holidays starting from February 23, 2016 to end of year in the US: + +``` +Holidays.year_holidays([:ca_on], Date.civil(2016, 2, 23)) +=> [{:name=>"Good Friday",...}, + {name=>"Easter Sunday",...}, + {:name=>"Victoria Day",...}, + {:name=>"Canada Day",...}, + {:name=>"Civic Holiday",...}, + {:name=>"Labour Day",...}, + {:name=>"Thanksgiving",...}, + {:name=>"Remembrance Day",...}, + {:name=>"Christmas Day",...}, + {:name=>"Boxing Day",...}] +``` + +This method will default to `Date.today` if no date is provided. + +#### Return all available regions + +Return all available regions: + +``` +Holidays.available_regions +=> [:ar, :at, ..., :sg] # this will be a big array +``` + +## Loading Custom Definitions on the fly + +In addition to the [provided definitions](https://github.com/holidays/definitions) you can load custom definitions file on the fly and use them immediately. + +To load custom 'Company Founding' holiday on June 1st: + +``` +Holidays.load_custom('/home/user/holiday_definitions/custom_holidays.yaml') +Holidays.on(Date.civil(2013, 6, 1), :my_custom_region) + => [{:name => 'Company Founding',...}] +``` + +Custom definition files must match the [syntax of the existing definition files](https://github.com/holidays/definitions/blob/master/doc/SYNTAX.md). + +Multiple files can be loaded at the same time: + +``` +Holidays.load_custom('/home/user/holidays/custom_holidays1.yaml', '/home/user/holidays/custom_holidays2.yaml') +``` + +## Extending Ruby's Date and Time classes + +### Date + +To extend the 'Date' class: + +``` +require 'holidays/core_extensions/date' +class Date + include Holidays::CoreExtensions::Date +end +``` + +Now you can check which holidays occur in Iceland on January 1, 2008: + +``` +d = Date.civil(2008,7,1) + +d.holidays(:is) +=> [{:name => 'Nýársdagur'}...] +``` + +Or lookup Canada Day in different regions: + +``` +d = Date.civil(2008,7,1) + +d.holiday?(:ca) # Canada +=> true + +d.holiday?(:ca_bc) # British Columbia, Canada +=> true + +d.holiday?(:fr) # France +=> false +``` + +Or return the new date based on the options: + +``` +d = Date.civil(2008,7,1) +d.change(:year => 2016, :month => 1, :day => 1) +=> # +``` + +Or you can calculate the day of the month: + +``` +Date.calculate_mday(2015, 4, :first, 2) +=> 7 +``` + +### Time + +``` +require 'holidays/core_extensions/time' +class Time + include Holidays::CoreExtensions::Time +end +``` + +Find end of month for given date: + +``` +d = Date.civil(2016,8,1) +d.end_of_month +=> # +``` + +## Caching Holiday Lookups + +If you are checking holidays regularly you can cache your results for improved performance. Run this before looking up a holiday (e.g. in an initializer): + +``` +YEAR = 365 * 24 * 60 * 60 +Holidays.cache_between(Time.now, Time.now + 2 * YEAR, :ca, :us, :observed) +``` + +Holidays for the regions specified within the dates specified will be pre-calculated and stored in-memory. Future lookups will be much faster. + +## How to contribute + +See our [contribution guidelines](doc/CONTRIBUTING.md) for information on how to help out! + +## Credits and code + +* Started by [@alexdunae](http://github.com/alexdunae) 2007-2012 +* Maintained by [@hahahana](https://github.com/hahahana), 2013 +* Maintained by [@ppeble](https://github.com/ppeble), 2014-present +* Maintained by [@ttwo32](https://github.com/ttwo32), 2016-present + +Plus all of these [wonderful contributors!](https://github.com/holidays/holidays/contributors) diff --git a/vendor/holidays/Rakefile b/vendor/holidays/Rakefile new file mode 100644 index 00000000..ec9f8511 --- /dev/null +++ b/vendor/holidays/Rakefile @@ -0,0 +1,109 @@ +$:.unshift File.expand_path('../lib', __FILE__) +$:.unshift File.expand_path('../test', __FILE__) + +require 'bundler/gem_tasks' +require 'rake/testtask' +require 'yaml' +require 'fileutils' +require 'holidays' + +DEFINITION_PATH = 'definitions' +DEFINITION_TESTS_PATH = 'test/defs' + +Rake::TestTask.new(:test) do |t| + t.libs << 'test' + t.test_files = FileList['test/**/test_*.rb'] +end + +task :default => :test + +desc "Run tests for only a single region. Do not provide sub regions. Example (without quotes): 'rake test_region jp'" +task :test_region do + # Magic to define empty tasks on the fly so we have nicer arguments, see http://cobwwweb.com/4-ways-to-pass-arguments-to-a-rake-task + ARGV.each { |a| task a.to_sym do ; end } + + if ARGV[1].nil? || ARGV[1].empty? + raise ArgumentError.new("You must provide a region. Example (without quotes): 'rake test_region us'") + end + + region = ARGV[1].downcase + + unless Holidays.available_regions.include?(region.to_sym) + raise ArgumentError.new("Region '#{region}' not recognized") + end + + unless File.file?("#{DEFINITION_TESTS_PATH}/test_defs_#{region}.rb") + raise ArgumentError.new("Test file not found for region '#{region}'. Do not use sub regions, try the overall region instead. Example: 'us' instead of 'us_dc'") + end + + sh "bundle exec ruby #{DEFINITION_TESTS_PATH}/test_defs_#{region}.rb" +end + +desc 'Launch IRB session' +task :console do + sh "irb -r rubygems -I lib -r holidays.rb" +end + +desc 'Generate definitions and tests used in main holiday logic based on raw YAML definitions' +namespace :generate do + desc 'Generate the holiday definition files' + task :definitions do + # load the index + def_index = YAML.load_file("#{DEFINITION_PATH}/index.yaml") + + # create a dir for the generated tests + FileUtils.mkdir_p(DEFINITION_TESTS_PATH) + + #TODO This entire section should be moved into '/lib/holidays/definition'. I don't think such an + # important part of the gem should be left in the Rakefile and without unit tests. There's no + # reason we can't move it. + all_regions = {} + + def_index['defs'].each do |region, files| + puts "Building #{region} definition module:" + files = files.collect { |f| "#{DEFINITION_PATH}/#{f}" }.uniq + + regions, rules_by_month, custom_methods, tests = Holidays::Factory::Definition.file_parser.parse_definition_files(files) + module_src, test_src = Holidays::Factory::Definition.source_generator.generate_definition_source(region, files, regions, rules_by_month, custom_methods, tests) + + File.open("lib/#{Holidays::DEFINITIONS_PATH}/#{region.downcase.to_s}.rb","w") do |file| + file.puts module_src + end + unless test_src.empty? + File.open("#{DEFINITION_TESTS_PATH}/test_defs_#{region.downcase.to_s}.rb","w") do |file| + file.puts test_src + end + end + + all_regions[region.downcase.to_sym] = regions + + puts "Done.\n\n" + end + + puts "Building regions master file for later validation:" + + File.open("lib/#{Holidays::DEFINITIONS_PATH}/REGIONS.rb","w") do |file| + file.puts Holidays::Factory::Definition.regions_generator.call(all_regions) + end + + puts "Done.\n\n" + end + + desc 'Build the definition manifest' + task :manifest do + File.open("lib/#{Holidays::DEFINITIONS_PATH}/MANIFEST","w") do |file| + #TODO Generating the file source should be done interally, in the /lib dir, not in the Rakefile + file.puts <<-EOH +==== Regional definitions +The following definition files are included in this installation: + + EOH + FileList.new("lib/#{Holidays::DEFINITIONS_PATH}/*.rb").exclude(/version/).each do |str| + file.puts('* ' + str.gsub(/^lib\/|\.rb$/, '')) + end + end + puts "Updated manifest file." + end +end + +task :generate => ['generate:definitions', 'generate:manifest'] diff --git a/vendor/holidays/bin/console b/vendor/holidays/bin/console new file mode 100755 index 00000000..7da9bc88 --- /dev/null +++ b/vendor/holidays/bin/console @@ -0,0 +1,7 @@ +#!/usr/bin/env ruby + +require "bundler/setup" +require "holidays" + +require "irb" +IRB.start diff --git a/vendor/holidays/bin/setup b/vendor/holidays/bin/setup new file mode 100755 index 00000000..2a6ce48f --- /dev/null +++ b/vendor/holidays/bin/setup @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' +set -vx + +bundle install diff --git a/vendor/holidays/definitions/CHANGELOG.md b/vendor/holidays/definitions/CHANGELOG.md new file mode 100644 index 00000000..34872333 --- /dev/null +++ b/vendor/holidays/definitions/CHANGELOG.md @@ -0,0 +1,272 @@ +# Holiday definitions + +## 5.3.1 + +Fix jp holidays from 2022. + +* :+1: Reflects changes in Japanese holidays in 2021.(Thanks to https://github.com/ryosukeYamazaki) + +## 5.3.0 + +Update many defitnions. + +Definitions changes: + +* Change name of Foundation Day in Western Australia to 'Western Austra…(Thanks to https://github.com/mattman) +* add Kazakh holidays(Thanks to https://github.com/Legomegger) +* Add AFL Grand final dates for 2018-2020(Thanks to https://github.com/anicholson) +* Add 2021 jp holiday(Thanks to https://github.com/ryosukeYamazaki) + + +## 5.2.0 + +Update many defitnions. + +Definitions changes: + +* Update hr.yaml(Thanks to https://github.com/KarloPletesImago) +* Terry Fox Day not a formal holiday(Thanks to https://github.com/tabbasi88) +* Added the Zibelemärit to the region ch_be(Thanks to https://github.com/hrigu) +* add "Lunes de Pascua Granada" to Catalunya holidays(Thanks to https://github.com/thefabbulus) +* Correcting observed Battle of the Boyne, N.Ireland (Problem occurs July 2020)(Thanks to https://github.com/qidane) +* Modify terry fox date test. +* Fix ch holidays. + +## 5.1.0 + +Update many defitnions. + +Definitions changes: + +* Add Nigerian Holidays(Thanks to https://github.com/osioke) +* Add 2024 calendar year to Federal Reserve banks(Thanks to https://github.com/JeremiahChurch) +* Nunavut July 9th new statutory holiday from 2020(Thanks to https://github.com/tabbasi88) +* Add Ramadan & Sacrafice holidays in 2020(Thanks to https://github.com/saygun) +* Mark mexicans dates as informal(Thanks to https://github.com/arandilopez) +* Add May 1 and May 9 holidays for Luxembourg(Thanks to https://github.com/pmor) +* New Croatian holidays 2020(Thanks to https://github.com/KarloPletesImago) +* DE: adde new liberation day for Berlin 2020 only(Thanks to https://github.com/estani) +* Add Québec to provinces observing Canadian Thanksgiving(Thanks to https://github.com/rafbm) + + +## 5.0.1 + +No behavior change. + +Commenting out a failing `it` test due to limitations of the current definition format. Unfortunately a holiday was added to the `it` region that falls on the same day as another existing region and we do not alwayd handle that in a uniform, consistent way. Currently there is no way to test that the _second_ region that is returned on a day is valid. Because of this I'm commenting out the test and moving forward. We'll need to add this functionality later. + +I only caught this when releasing the ruby gem. This goes back once again to [this issue](https://github.com/holidays/definitions/issues/42) with how we can test against an actual implementation from this repository. + +## 5.0.0 + +Major semver bump due to changes related to the `year_ranges` option. The following keys have been renamed: + +* `before` is now `until` +* `after` is now `from` + +The behavior of these two options has not changed. To read more about the reasons behind this change please see the [associated ADR](doc/architecture/adr-002.md). + +Definitions changes: + +* Fix typos and syntax on `th` defs +* Update Christmas-related holidays in `us` and `ca` (thanks to https://github.com/jonjonw) +* Add `it_rm` as `it` subregion (thanks to https://github.com/stephane) +* Update `it` subregions for accuracy (thanks to https://github.com/nolith and https://github.com/NatyDev) +* Add `ro` region (thanks to https://github.com/stephane) +* Update `il` and `ca` holidays for accuracy (thanks to https://github.com/ghiculescu) +* Add `lv` region (thanks to https://github.com/aleksandrs-ledovskis) +* Update `es` holidays (thanks to https://github.com/thefabbulus) +* Update `gb` region to fix May Day (thanks to https://github.com/LauraBondini) +* Update `hu` region for Easter accuracy (thanks to https://github.com/HuBandiT) + +## 4.1.0 + +* Add new Emperor's Coronation Day holiday to `jp` (thanks to https://github.com/ttwo32) +* Add Thai Holidays (whoooo) (thanks to https://github.com/fabersky) +* Add Berlin's New International Women's Day to `de_be` (thanks to https://github.com/iGEL) +* Add Civic Holiday (Terry Fox Day) to `ca_mb` (thanks to https://github.com/akaspick) +* Fix Federal Reserve holidays for Independence Day (thanks to https://github.com/chadrschroeder) + +## 4.0.0 + +Major semver bump due to changes in how non-standard regions will be handled going forward. Please see [issue-110](https://github.com/holidays/definitions/issues/110) for more details on this edge case and please also see the updates to our [SYNTAX guide](doc/SYNTAX.md#non-standard-regions) for the specified behavior going forward. + +The following non-standard regions have been changed: + +* `ecb_target` region changed to `ecbtarget` +* `federal_reserve` region changed to `federalreserve` +* `federal_reserve_banks` region changed to `federalreservebanks` +* `north_america_informal` region changed to `northamericainformal` +* `united_nations` region changed to `unitednations` +* `north_america` region changed to `northamerica` +* `south_america` region changed to `southamerica` + +This change also includes updates to various other regions: + +* Rename national sports day of `:jp` region from "体育の日" to "スポーツの日" (thanks to https://github.com/kunitoo) +* Fix 2020 `:jp` region holidays related tokyo olympics (thanks to https://github.com/kunitoo) +* Update Family Day date in `:ca_bc` region (thanks to https://github.com/roman-ih) +* Add Ukrainian holidays (`:ua` region code) (thanks to https://github.com/roman-ih) +* Add `federalreservebanks` region for observed bank holidays (thanks to Matt Hickman) + +## 3.1.0 + +* Update `ch` to apply 'Neujahrstag' to overall region (thanks to https://github.com/phylor) +* Cosmetic spacing update for `us` definition, no behavior change + +## 3.0.0 + +Major semver bump as the format for custom methods has been changed to complete [issue-24](https://github.com/holidays/definitions/issues/24). Downstream consumers will need to update to be able to parse them. However there are **no behavior changes** with this update. + +In summary: we have switched to language-specific custom methods. Instead of a plain `source` field you will need a specific language implementation, e.g. `ruby`, `golang`, etc. + +Currently we only have `ruby` but we can now expand these definitions for use in other languages. Please see the [custom methods ADR](doc/architecture/adr-001.md) for more in-depth information on why this change was made. + +You can also view the updated ['Methods' section in the SYNTAX doc](doc/SYNTAX.md#methods) for more info and examples. + +## 2.5.3 + +* Add missing `observed` logic for 'St. Patricks Day' in `gb_nir` + +## 2.5.2 + +* Fix `de` issue cause by undefined `year_ranges` behavior in syntax + +## 2.5.1 + +* Fix Federal Reserve Independence Day tests + +## 2.5.0 + +* Change Emperor's Birthday for `jp` definitions (thanks to https://github.com/ttwo32) +* Add German Reformation to four more states starting in 2018 (thanks to https://github.com/jensberke) +* Add 'La Mercè' to official holidays in Catalunya, Spain (thanks to https://github.com/fabersky) +* Fix Federal Reserve Saturday holidays (thanks to https://github.com/mikecanann) +* Fix the CoC link in CONTRIBUTING doc +* Remove ruby 2.2 and add ruby 2.5 to travis tests + +## 2.4.0 + +* Add new holidays for Canada (thanks to https://github.com/alejandrok5) + +## 2.3.0 + +* Fix typo in `:at` definitions (thanks to https://github.com/AlexMarold) +* Add holidays for Jersey and Guernsey (thanks to https://github.com/timkrins) +* Update Travis config to fix build issues related to imminent release of ruby 2.5 + +## 2.2.1 + +* Small updates to tests in the `:de` regions. No behavior changes. + +## 2.2.0 + +* Audit provincial holidays in Canada (thanks to https://github.com/slucaskim) +* Add civic holiday for `ca_pe` (thanks to https://github.com/slucaskim) +* Correct reformation day for `de` (thanks to https://github.com/spaceneedle2019) + +## 2.1.1 + +* Comment out test for `추석` until a discussion can be had in [issue 69](https://github.com/holidays/definitions/issues/69) (nice) + +## 2.1.0 + +Update the following regions: + +* `ca_ab` - change 'Heritage Day' to informal +* `kr` - Update '추석 연휴' and `설날 연휴` for accuracy +* `cl` - Add 'San Pedro y San Pablo', update 'Encuentro de Dos Mundos', and add 'Día de las Iglesias Evangélicas y Protestantes' + +## 2.0.0 + +* Update `tr`, `fedex` for accuracy +* Completely change the test format to no longer use ruby source code! Hooray! This should cause no behavior differences, + any differences or changes in behavior should be considered a regression. + +## 1.7.1 + +A small bugfix that resolves the naming issues of two regions in the 'index.yaml' file. No other outward changes. + +## 1.7.0 + +Here are the changes: + +* Add Estonian definitions +* Enhance France definitions +* Correct and enhance German definitions +* Enhance Portuguese definitions +* Add Malta definitions +* Add Serbian definitions +* Add Georgian definitions +* Use Orthodox easter calculations in appropriate regions +* Add Russian definitions +* Add Turkey definitions +* Enhance US definitions (lots of individual US states!) +* Update South Australian definitions + +## 1.6.1 + +* Update `ca` test for correctness. See below for more information. + +Unfortunately due to our current setup it is possible for definitions/tests in this repository to appear 'valid' but only +fail when we run them in the actual ruby holidays repo. This is a known issue (#42) and needs to be addressed. + +In the meantime, this is a bugfix release to ensure we can release v5.6.0 of the ruby repo. + +## 1.6.0 + +Updates to the following Canadian regions: `ca_ab, ca_bc, ca_mb, ca_nt, ca_nu, ca_on, ca_sk, ca_yt, ca_pe` + +## 1.5.1 + +* Fix error in `fedex` custom method `day_after_thanksgiving` + +## 1.5.0 + +* Update NYSE to fix observed NYD +* Use native language for KR +* Use native language for VI +* Update AU definitions for accuracy +* Update KR definitions to include lunar holiday calculations +* Add VI definitions + +## 1.4.0 + +* :au - corrects holidays for certain regions +* :vi - reports holiday names in Vietnamese instead of English, adds 1 additional holiday (Giỗ tổ Hùng Vương) + +## 1.3.0 + +* Add Travis badge to README +* Add Tunisian holidays +* Correct various Australian holidays +* Updates various German regions to be more accurate +* Changed 'nf' to 'nl' for Newfoundland & Labrador +* Changed 'yk' to 'yt'kkk + +## 1.2.1 + +* Fix syntax and test errors in au and ca def tests + +## 1.2.0 + +* updates jp defs to fix 'Foundation Day' name +* Fix ca defs for observed holidays +* Update au defs to have Christmas and Boxing Day for all of Australia instead of just individual territories +* Update ie defs to consolidate "St Stephen's Day" to use common method instead of custom method + +## 1.1.0 + +* Add HK definitions +* Add KR definitions +* Fix small bug in JP definitions + +## 2016 1.0.0 + +Initial creation of this repository + +This contains all of the definitions currently in the holidays repository but split out into its own repository. It will +be added as a submodule of the ruby repository, which will be responsible for generating its final classes. + +The idea is that we will have repositories for multiple languages and each language is responsible for using the definitions +as it sees fit. diff --git a/vendor/holidays/definitions/Gemfile b/vendor/holidays/definitions/Gemfile new file mode 100644 index 00000000..c9a128dc --- /dev/null +++ b/vendor/holidays/definitions/Gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' + +gem 'rspec', '~> 3' +gem 'pry', :require => false +gem 'spoon', :require => false +gem 'simplecov-rcov', :require => false diff --git a/vendor/holidays/definitions/LICENSE b/vendor/holidays/definitions/LICENSE new file mode 100644 index 00000000..0f364bf8 --- /dev/null +++ b/vendor/holidays/definitions/LICENSE @@ -0,0 +1,21 @@ +==== Ruby Holidays Gem License + +Copyright (c) 2016 Phil Peble + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/holidays/definitions/METHODS.yml b/vendor/holidays/definitions/METHODS.yml new file mode 100644 index 00000000..c3e80aa7 --- /dev/null +++ b/vendor/holidays/definitions/METHODS.yml @@ -0,0 +1,26 @@ +--- +methods: + easter: + arguments: year + orthodox_easter: + arguments: year + orthodox_easter_julian: + arguments: year + to_monday_if_sunday: + arguments: date + to_monday_if_weekend: + arguments: date + to_weekday_if_boxing_weekend: + arguments: date + to_weekday_if_boxing_weekend_from_year: + arguments: year + to_weekday_if_weekend: + arguments: date + calculate_day_of_month: + arguments: year, month, day, wday + to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday: + arguments: year + to_tuesday_if_sunday_or_monday_if_saturday: + arguments: date + lunar_to_solar: + arguments: year, month, day, region diff --git a/vendor/holidays/definitions/Makefile b/vendor/holidays/definitions/Makefile new file mode 100644 index 00000000..adf7d142 --- /dev/null +++ b/vendor/holidays/definitions/Makefile @@ -0,0 +1,9 @@ +default: validate + +validate: + bundle exec ruby lib/validation/run.rb + +test: + bundle exec rspec + +.PHONY: validate,test diff --git a/vendor/holidays/definitions/README.md b/vendor/holidays/definitions/README.md new file mode 100644 index 00000000..fcc1ccef --- /dev/null +++ b/vendor/holidays/definitions/README.md @@ -0,0 +1,22 @@ +# Holidays Definitions [![Build Status](https://travis-ci.org/holidays/definitions.svg?branch=master)](https://travis-ci.org/holidays/definitions) + +This repository contains the 'raw' definitions for the various holidays projects. It should be added a submodule to +any project that wants to use them. + +Currently it is only used by the [existing Holidays gem](https://github.com/holidays/holidays), which takes these +definitions and generates ruby classes for use in that gem. In the future it will be used by other languages in +a similar manner. + +**Please note** that this is _not_ a gem. The validation process is written in ruby simply for convenience. The real +stars of this show are the YAML files. + +### Documentation + + 1. [Syntax Guide](doc/SYNTAX.md) + 2. [Contribution Guidelines](doc/CONTRIBUTING.md) + 3. [Maintainer Guidelines](doc/MAINTAINERS.md) + 4. [Architecture Decision Records](doc/architecture/README.md) + +### Credits + +Thank you to all of these [wonderful contributors!](https://github.com/holidays/definitions/contributors) diff --git a/vendor/holidays/definitions/ar.yaml b/vendor/holidays/definitions/ar.yaml new file mode 100644 index 00000000..0fe47753 --- /dev/null +++ b/vendor/holidays/definitions/ar.yaml @@ -0,0 +1,202 @@ +# Argentinian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2016-02-26. +# +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Argentina +# - http://servicios.lanacion.com.ar/feriados/2016 +--- +months: + 0: + - name: Viernes Santo + regions: [ar] + function: easter(year) + function_modifier: -2 + - name: Carnaval Lunes + regions: [ar] + function: easter(year) + function_modifier: -48 + - name: Carnaval Martes + regions: [ar] + function: easter(year) + function_modifier: -47 + 1: + - name: Año Nuevo + regions: [ar] + mday: 1 + 3: + - name: Día Nacional de la Memoria por la Verdad y la Justicia + regions: [ar] + mday: 24 + 4: + - name: Día del Veterano y de los Caídos en la Guerra de Malvinas + regions: [ar] + mday: 2 + 5: + - name: Día del Trabajador + regions: [ar] + mday: 1 + - name: Día de la Revolución de Mayo + regions: [ar] + mday: 25 + 6: + - name: Día de la Bandera + regions: [ar] + mday: 20 + 7: + - name: Feriado puente turístico + regions: [ar] + mday: 8 + - name: Día de la Independencia + regions: [ar] + mday: 9 + 8: + - name: Paso a la Inmortalidad del General José de San Martín + regions: [ar] + mday: 15 + 10: + - name: Día del Respeto a la Diversidad Cultural + regions: [ar] + mday: 12 + 11: + - name: Día de la Soberanía Nacional + regions: [ar] + mday: 20 + 12: + - name: Inmaculada Concepción de María + regions: [ar] + mday: 8 + - name: Feriado puente turístico + regions: [ar] + mday: 9 + - name: Navidad + regions: [ar] + mday: 25 + +tests: + - given: + date: '2016-01-01' + regions: ['ar'] + options: 'informal' + expect: + name: 'Año Nuevo' + - given: + date: '2016-02-08' + regions: ['ar'] + options: 'informal' + expect: + name: 'Carnaval Lunes' + - given: + date: '2016-02-09' + regions: ['ar'] + options: 'informal' + expect: + name: 'Carnaval Martes' + - given: + date: '2017-02-27' + regions: ['ar'] + options: 'informal' + expect: + name: 'Carnaval Lunes' + - given: + date: '2017-02-28' + regions: ['ar'] + options: 'informal' + expect: + name: 'Carnaval Martes' + - given: + date: '2018-02-12' + regions: ['ar'] + options: 'informal' + expect: + name: 'Carnaval Lunes' + - given: + date: '2018-02-13' + regions: ['ar'] + options: 'informal' + expect: + name: 'Carnaval Martes' + - given: + date: '2016-03-24' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día Nacional de la Memoria por la Verdad y la Justicia' + - given: + date: '2016-03-25' + regions: ['ar'] + options: 'informal' + expect: + name: 'Viernes Santo' + - given: + date: '2016-04-02' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día del Veterano y de los Caídos en la Guerra de Malvinas' + - given: + date: '2016-05-01' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día del Trabajador' + - given: + date: '2016-05-25' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día de la Revolución de Mayo' + - given: + date: '2016-06-20' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día de la Bandera' + - given: + date: '2016-07-08' + regions: ['ar'] + options: 'informal' + expect: + name: 'Feriado puente turístico' + - given: + date: '2016-07-09' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día de la Independencia' + - given: + date: '2016-08-15' + regions: ['ar'] + options: 'informal' + expect: + name: 'Paso a la Inmortalidad del General José de San Martín' + - given: + date: '2016-10-12' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día del Respeto a la Diversidad Cultural' + - given: + date: '2016-11-20' + regions: ['ar'] + options: 'informal' + expect: + name: 'Día de la Soberanía Nacional' + - given: + date: '2016-12-08' + regions: ['ar'] + options: 'informal' + expect: + name: 'Inmaculada Concepción de María' + - given: + date: '2016-12-09' + regions: ['ar'] + options: 'informal' + expect: + name: 'Feriado puente turístico' + - given: + date: '2016-12-25' + regions: ['ar'] + options: 'informal' + expect: + name: 'Navidad' diff --git a/vendor/holidays/definitions/at.yaml b/vendor/holidays/definitions/at.yaml new file mode 100644 index 00000000..f683c8da --- /dev/null +++ b/vendor/holidays/definitions/at.yaml @@ -0,0 +1,116 @@ +# Austrian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2011-08-31 by VGSG +# Sources: +# - http://de.wikipedia.org/wiki/Feiertage_in_%C3%96sterreich +# - http://www.timeanddate.com/calendar/index.html?country=8 +# - http://www.germany.info/relaunch/welcome/travel/holidays.html +--- +months: + 0: + - name: Ostermontag + regions: [at] + function: easter(year) + function_modifier: 1 + - name: Christi Himmelfahrt + regions: [at] + function: easter(year) + function_modifier: 39 + - name: Pfingstmontag + regions: [at] + function: easter(year) + function_modifier: 50 + - name: Fronleichnam + regions: [at] + function: easter(year) + function_modifier: 60 + 1: + - name: Neujahrstag + regions: [at] + mday: 1 + - name: Heilige Drei Könige + regions: [at] + mday: 6 + 5: + - name: Staatsfeiertag + regions: [at] + mday: 1 + 8: + - name: Mariä Himmelfahrt + regions: [at] + mday: 15 + 10: + - name: Nationalfeiertag + regions: [at] + mday: 26 + 11: + - name: Allerheiligen + regions: [at] + mday: 1 + 12: + - name: Mariä Empfängnis + regions: [at] + mday: 8 + - name: 1. Weihnachtstag + regions: [at] + mday: 25 + - name: 2. Weihnachtstag + regions: [at] + mday: 26 + +tests: + - given: + date: '2009-01-01' + regions: ['at'] + options: 'informal' + expect: + name: 'Neujahrstag' + - given: + date: '2009-04-13' + regions: ['at'] + expect: + name: 'Ostermontag' + - given: + date: '2009-05-21' + regions: ['at'] + expect: + name: 'Christi Himmelfahrt' + - given: + date: '2009-06-01' + regions: ['at'] + expect: + name: 'Pfingstmontag' + - given: + date: '2009-10-26' + regions: ['at'] + options: 'informal' + expect: + name: 'Nationalfeiertag' + - given: + date: '2009-12-08' + regions: ['at'] + options: 'informal' + expect: + name: 'Mariä Empfängnis' + - given: + date: '2009-12-25' + regions: ['at'] + options: 'informal' + expect: + name: '1. Weihnachtstag' + - given: + date: '2009-12-26' + regions: ['at'] + options: 'informal' + expect: + name: '2. Weihnachtstag' + - given: + date: '2010-05-08' + regions: ['at'] + expect: + holiday: false + - given: + date: '2017-06-15' + regions: ['at'] + expect: + name: "Fronleichnam" diff --git a/vendor/holidays/definitions/au.yaml b/vendor/holidays/definitions/au.yaml new file mode 100644 index 00000000..da4a57fa --- /dev/null +++ b/vendor/holidays/definitions/au.yaml @@ -0,0 +1,751 @@ +# Australian holiday definitions for the Ruby Holiday gem. +# Updated: 2020-07-15 +# Sources: +# - http://en.wikipedia.org/wiki/Australian_public_holidays +# - http://www.docep.wa.gov.au/lr/LabourRelations/Content/Wages%20and%20Conditions/Public%20Holidays/Public_Holidays.html +# - http://www.wst.tas.gov.au/employment_info/public_holidays +# - https://www.fairwork.gov.au/leave/public-holidays/list-of-public-holidays +--- +months: + 0: + - name: Good Friday + regions: [au] + function: easter(year) + function_modifier: -2 + - name: Easter Saturday + regions: [au_nsw, au_vic, au_qld, au_nt, au_act, au_sa] + function: easter(year) + function_modifier: -1 + - name: Easter Sunday + regions: [au_nsw, au_vic] + function: easter(year) + - name: Easter Sunday + regions: [au_qld, au_act] + function: easter(year) + year_ranges: + from: 2017 + - name: Easter Monday + regions: [au] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [au, au_nsw, au_vic, au_act, au_sa, au_wa, au_nt, au_qld] + mday: 1 + observed: to_monday_if_weekend(date) + - name: New Year's Day + regions: [au_tas] + mday: 1 + function: to_monday_if_weekend(date) + - name: Australia Day + regions: [au] + mday: 26 + observed: to_monday_if_weekend(date) + 2: + - name: Royal Hobart Regatta + regions: [au_tas_south] + week: 2 + wday: 1 + 3: + - name: Labour Day + regions: [au_wa] + week: 1 + wday: 1 + - name: Eight Hours Day + regions: [au_tas] + week: 2 + wday: 1 + - name: Labour Day + regions: [au_vic] + week: 2 + wday: 1 + - name: March Public Holiday + regions: [au_sa] + function: march_pub_hol_sa(year) + - name: Canberra Day + regions: [au_act] + week: 2 + wday: 1 + 4: + - name: ANZAC Day + regions: [au] + mday: 25 + - name: ANZAC Day + regions: [au_nsw, au_vic, au_qld, au_nt, au_act, au_sa, au_tas] + mday: 25 + observed: to_monday_if_sunday(date) + - name: ANZAC Day + regions: [au_wa] + mday: 25 + observed: to_monday_if_weekend(date) + 5: + - name: Labour Day + regions: [au_qld] + function: qld_labour_day_may(year) + - name: May Day + regions: [au_nt] + week: 1 + wday: 1 + - name: May Public Holiday + regions: [au_sa] + function: may_pub_hol_sa(year) + 6: + - name: Western Australia Day + regions: [au_wa] + week: 1 + wday: 1 + - name: Queen's Birthday + regions: [au_act, au_nsw, au_sa, au_tas, au_nt, au_vic] + week: 2 + wday: 1 + - name: Queen's Birthday + regions: [au_qld] + function: qld_queens_birthday_june(year) + - name: Queensland Day + regions: [au_qld] + mday: 6 + type: informal + 7: + - name: Cairns Show + regions: [au_qld_cairns] + week: 3 + wday: 5 + 8: + - name: Ekka + regions: [au_qld_brisbane] + week: -3 + wday: 3 + 9: + - name: Queen's Birthday + regions: [au_wa] + week: -1 + wday: 1 + - name: "Family & Community Day" + regions: [au_act] + week: -1 + wday: 1 + 10: + - name: Friday before the AFL Grand Final + regions: [au_vic] + function: afl_grand_final(year) + - name: Labour Day + regions: [au_act, au_nsw, au_sa] + week: 1 + wday: 1 + - name: Labour Day + regions: [au_qld] + function: qld_labour_day_october(year) + observed: to_monday_if_weekend(date) + - name: Queen's Birthday + regions: [au_qld] + function: qld_queens_bday_october(year) + observed: to_monday_if_weekend(date) + - name: Royal Hobart Show + regions: [au_tas_south] + function: hobart_show_day(year) + 11: + - name: G20 Day + regions: [au_qld_brisbane] + function: g20_day_2014_only(year) + - name: Recreation Day # http://www.timeanddate.com/holidays/australia/recreation-day + regions: [au_tas_north] + wday: 1 + week: 1 + - name: Melbourne Cup Day + regions: [au_vic_melbourne] + week: 1 + wday: 2 + 12: + - name: Christmas Day # CHRISTMAS DAY - All states except SA observe on 27th (and 25th) if 25th is a Sunday + regions: [au_qld, au_nsw, au_act, au_tas, au_wa, au_vic, au_nt] + mday: 25 + observed: to_tuesday_if_sunday_or_monday_if_saturday(date) + - name: Boxing Day + regions: [au_nsw, au_vic, au_qld, au_act, au_wa] + mday: 26 + observed: to_tuesday_if_sunday_or_monday_if_saturday(date) + - name: Boxing Day + regions: [au_tas, au_nt] + function: to_weekday_if_boxing_weekend_from_year(year) + - name: Proclamation Day + regions: [au_sa] + function: to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year) + - name: Christmas Day # CHRISTMAS DAY - SA observes on 26th if 25th is a Sunday (Boxing Day goes to 27th) + regions: [au_sa] + mday: 25 + observed: to_monday_if_weekend(date) + +methods: + afl_grand_final: + arguments: year + ruby: | + case year + when 2015 + Date.civil(2015, 10, 2) + when 2016 + Date.civil(2016, 9, 30) + when 2017 + Date.civil(2017, 9, 29) + when 2018 + Date.civil(2018, 9, 28) + when 2019 + Date.civil(2019,9, 27) + when 2020 + Date.civil(2020, 10, 23) + end + qld_queens_bday_october: + # http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates + # celebrated twice in 2012 + # in october again from 2016 + arguments: year + ruby: | + if year >= 2016 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1) + elsif year == 2012 + 1 + else + nil + end + qld_queens_birthday_june: + # http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates + # in june until 2015 + arguments: year + ruby: | + if year <= 2015 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 6, 2, 1) + end + qld_labour_day_may: + # http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates + # for 2013 to 2016 it was in October, otherwise it's in May + arguments: year + ruby: | + if year < 2013 || year >= 2016 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, 1, 1) + end + qld_labour_day_october: + # http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates + # for 2013 to 2016 it was in October, otherwise it's in May + arguments: year + ruby: | + if year >= 2013 && year < 2016 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1) + end + g20_day_2014_only: + # http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates + # G20 day in brisbane, in 2014, on november 14 + arguments: year + ruby: | + year == 2014 ? 14 : nil + hobart_show_day: + # http://worksafe.tas.gov.au/__data/assets/pdf_file/0008/287036/Public_Holidays_2014.pdf + # The Thursday before the fourth Saturday in October. + arguments: year + ruby: | + fourth_sat_in_oct = Date.civil(year, 10, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 4, :saturday)) + fourth_sat_in_oct - 2 # the thursday before + march_pub_hol_sa: + # http://www.safework.sa.gov.au/show_page.jsp?id=2483#.VQ9Mfmb8-8E + # The Holidays Act 1910 provides for the third Monday in May to be a public holiday. Since 2006 this public holiday has been observed on the second Monday in March through the issuing of a special Proclamation by the Governor. + arguments: year + ruby: | + if year < 2006 + nil + else + Date.civil(year, 3, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 3, :second, :monday)) + end + may_pub_hol_sa: + # http://www.safework.sa.gov.au/show_page.jsp?id=2483#.VQ9Mfmb8-8E + # The Holidays Act 1910 provides for the third Monday in May to be a public holiday. Since 2006 this public holiday has been observed on the second Monday in March through the issuing of a special Proclamation by the Governor. + arguments: year + ruby: | + if year >= 2006 + nil + else + Date.civil(year, 5, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, :third, :monday)) + end + +tests: + - given: + date: "2017-04-14" + regions: ["au"] + expect: + name: "Good Friday" + - given: + date: "2017-04-15" + regions: ["au_nsw"] + expect: + name: "Easter Saturday" + - given: + date: ['2010-4-4', "2017-04-16"] + regions: ["au_nsw"] + expect: + name: "Easter Sunday" + - given: + date: '2013-10-07' + regions: ["au_qld"] + expect: + name: 'Labour Day' + - given: + date: '2012-05-07' + regions: ["au_qld"] + expect: + name: 'Labour Day' + - given: + date: '2015-10-05' + regions: ["au_qld"] + expect: + name: 'Labour Day' + - given: + date: '2016-05-02' + regions: ["au_qld"] + expect: + name: 'Labour Day' + - given: + date: ['2012-06-11', '2012-10-01', '2013-6-10', '2015-6-8', '2016-10-3'] + regions: ["au_qld"] + expect: + name: "Queen's Birthday" + - given: + date: ['2014-09-29', '2015-09-28', '2016-09-26'] + regions: ["au_wa"] + expect: + name: "Queen's Birthday" + - given: + date: '2014-09-29' + regions: ["au_act"] + expect: + name: 'Family & Community Day' + - given: + date: '2015-09-28' + regions: ["au_act"] + expect: + name: 'Family & Community Day' + - given: + date: '2016-09-26' + regions: ["au_act"] + expect: + name: 'Family & Community Day' + - given: + date: '2014-01-26' + regions: ["au_qld"] + expect: + name: 'Australia Day' + - given: + date: '2014-01-27' + regions: ["au_qld"] + options: ["observed"] + expect: + name: 'Australia Day' + - given: + date: '2014-07-18' + regions: ["au_qld_cairns"] + expect: + name: 'Cairns Show' + - given: + date: '2013-07-19' + regions: ["au_qld_cairns"] + expect: + name: 'Cairns Show' + - given: + date: '2013-10-24' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Show' + - given: + date: '2014-10-23' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Show' + - given: + date: '2015-10-22' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Show' + - given: + date: '2016-10-20' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Show' + - given: + date: '2013-11-04' + regions: ["au_tas_north"] + expect: + name: 'Recreation Day' + - given: + date: '2014-11-03' + regions: ["au_tas_north"] + expect: + name: 'Recreation Day' + - given: + date: '2015-11-02' + regions: ["au_tas_north"] + expect: + name: 'Recreation Day' + - given: + date: '2016-11-07' + regions: ["au_tas_north"] + expect: + name: 'Recreation Day' + - given: + date: '2015-12-26' + regions: ["au_tas"] + expect: + holiday: false + - given: + date: '2015-11-14' + regions: ["au_qld_brisbane"] + expect: + holiday: false + - given: + date: '2015-12-26' + regions: ["au_nt"] + expect: + holiday: false + - given: + date: '2016-12-27' + regions: ["au_sa"] + expect: + name: 'Proclamation Day' + - given: + date: '2016-12-25' + regions: ["au_nt"] + expect: + name: 'Christmas Day' + - given: + date: '2014-11-04' + regions: ["au_vic"] + expect: + holiday: false + - given: + date: '2015-11-03' + regions: ["au_vic"] + expect: + holiday: false + - given: + date: '2016-12-25' + regions: ["au_vic"] + expect: + name: 'Christmas Day' + - given: + date: '2014-05-19' + regions: ["au_sa"] + expect: + holiday: false + - given: + date: '2005-03-14' + regions: ["au_sa"] + expect: + holiday: false + - given: + date: '2015-12-26' + regions: ["au_sa"] + expect: + holiday: false + - given: + date: '2015-04-27' + regions: ["au_qld"] + options: ["observed"] + expect: + holiday: false + - given: + date: '2014-11-14' + regions: ["au_qld"] + expect: + holiday: false + - given: + date: '2014-11-04' + regions: ["au_vic_melbourne"] + expect: + name: 'Melbourne Cup Day' + - given: + date: '2015-11-03' + regions: ["au_vic_melbourne"] + expect: + name: 'Melbourne Cup Day' + - given: + date: '2015-10-02' + regions: ["au_vic"] + expect: + name: 'Friday before the AFL Grand Final' + - given: + date: '2016-09-30' + regions: ["au_vic"] + expect: + name: 'Friday before the AFL Grand Final' + - given: + date: '2017-09-29' + regions: ["au_vic"] + expect: + name: 'Friday before the AFL Grand Final' + - given: + date: '2005-05-16' + regions: ["au_sa"] + expect: + name: 'May Public Holiday' + - given: + date: '2014-03-10' + regions: ["au_sa"] + expect: + name: 'March Public Holiday' + - given: + date: '2015-03-09' + regions: ["au_sa"] + expect: + name: 'March Public Holiday' + - given: + date: '2016-03-14' + regions: ["au_sa"] + expect: + name: 'March Public Holiday' + - given: + date: '2017-03-13' + regions: ["au_sa"] + expect: + name: 'March Public Holiday' + - given: + date: '2015-04-25' + regions: ["au_qld", "au_wa"] + expect: + name: 'ANZAC Day' + - given: + date: '2015-04-27' + regions: ["au_wa"] + options: ["observed"] + expect: + name: 'ANZAC Day' + - given: + date: '2015-12-26' + regions: ["au_qld"] + expect: + name: "Boxing Day" + - given: + date: '2015-12-28' + regions: ["au_qld"] + options: ["observed"] + expect: + name: "Boxing Day" + - given: + date: '2015-12-26' + regions: ["au_sa"] + expect: + holiday: false + - given: + date: '2015-12-28' + regions: ["au_sa"] + expect: + name: "Proclamation Day" + - given: + date: '2015-12-26' + regions: ["au_tas"] + expect: + holiday: false + - given: + date: '2015-12-28' + regions: ["au_tas"] + expect: + name: "Boxing Day" + - given: + date: '2015-12-26' + regions: ["au_nt"] + expect: + holiday: false + - given: + date: '2015-12-28' + regions: ["au_nt"] + expect: + name: "Boxing Day" + - given: + date: '2012-02-13' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Regatta' + - given: + date: '2014-02-10' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Regatta' + - given: + date: '2015-02-09' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Regatta' + - given: + date: '2016-02-08' + regions: ["au_tas_south"] + expect: + name: 'Royal Hobart Regatta' + + - given: + date: '2016-12-25' + regions: ["au_qld"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_qld"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_nsw"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_nsw"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_act"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_act"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_tas"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_tas"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_wa"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_wa"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_sa"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-26' + regions: ["au_sa"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_nsw"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_nsw"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_act"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_act"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_tas"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_tas"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_wa"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_wa"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-25' + regions: ["au_sa"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-26' + regions: ["au_sa"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_vic"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2016-12-27' + regions: ["au_nt"] + options: ["observed"] + expect: + name: 'Christmas Day' + - given: + date: '2017-01-01' + regions: ["au", "au_qld", "au_nsw", "au_act", "au_vic", "au_sa", "au_wa", "au_nt"] + expect: + name: "New Year's Day" + +#FIXME This commented test is valid but the current code in the ruby repo won't allow it +# to work. We need to discuss potential solutions but in the meantime I'm taking it out. +# See https://github.com/holidays/definitions/issues/37. +# - given: +# date: '2017-01-01' +# regions: ["au_tas"] +# expect: +# holiday: false + + - given: + date: '2017-01-02' + regions: ["au", "au_qld", "au_nsw", "au_act", "au_vic", "au_sa", "au_wa", "au_nt"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2017-01-02' + regions: ["au_tas"] + expect: + name: "New Year's Day" + - given: + date: '2016-03-27' + regions: ["au_qld"] + expect: + holiday: false + - given: + date: '2017-04-16' + regions: ["au_qld"] + expect: + name: "Easter Sunday" + - given: + date: "2014-11-14" + regions: ["au_qld_brisbane"] + expect: + name: "G20 Day" diff --git a/vendor/holidays/definitions/be_fr.yaml b/vendor/holidays/definitions/be_fr.yaml new file mode 100644 index 00000000..4ef6aeb3 --- /dev/null +++ b/vendor/holidays/definitions/be_fr.yaml @@ -0,0 +1,153 @@ +# Belgium holiday definitions for the Ruby Holiday gem in French. +# +# Updated: 2012-06-20. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Belgium +--- +months: + 0: + - name: Pâques + regions: ['be_fr'] + function: easter(year) + - name: Lundi de Pâques + regions: ['be_fr'] + function: easter(year) + function_modifier: 1 + - name: Ascension + regions: ['be_fr'] + function: easter(year) + function_modifier: 39 + - name: Pentecôte + regions: ['be_fr'] + function: easter(year) + function_modifier: 49 + - name: Lundi de Pentecôte + regions: ['be_fr'] + function: easter(year) + function_modifier: 50 + 1: + - name: Jour de l'an + regions: ['be_fr'] + mday: 1 + 5: + - name: Fête du travail + regions: ['be_fr'] + mday: 1 + 7: + - name: Fête nationale + regions: ['be_fr'] + mday: 21 + 8: + - name: Assomption + regions: ['be_fr'] + mday: 15 + 11: + - name: Toussaint + regions: ['be_fr'] + mday: 1 + - name: Armistice 1918 + regions: ['be_fr'] + mday: 11 + 12: + - name: Noël + regions: ['be_fr'] + mday: 25 + +tests: + - given: + date: '2007-01-01' + regions: ['be_fr'] + options: ["informal"] + expect: + name: "Jour de l'an" + - given: + date: '2007-04-08' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Pâques' + - given: + date: '2007-04-09' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Lundi de Pâques' + - given: + date: '2007-05-01' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Fête du travail' + - given: + date: '2007-05-17' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Ascension' + - given: + date: '2007-05-27' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Pentecôte' + - given: + date: '2007-05-28' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Lundi de Pentecôte' + - given: + date: '2007-07-21' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Fête nationale' + - given: + date: '2007-08-15' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Assomption' + - given: + date: '2007-11-01' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Toussaint' + - given: + date: '2007-11-11' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Armistice 1918' + - given: + date: '2007-12-25' + regions: ['be_fr'] + options: ["informal"] + expect: + name: 'Noël' + - given: + date: '2017-4-16' + regions: ['be_fr'] + expect: + name: 'Pâques' + - given: + date: '2017-4-17' + regions: ['be_fr'] + expect: + name: 'Lundi de Pâques' + - given: + date: '2017-5-25' + regions: ['be_fr'] + expect: + name: 'Ascension' + - given: + date: '2017-6-4' + regions: ['be_fr'] + expect: + name: 'Pentecôte' + - given: + date: '2017-6-5' + regions: ['be_fr'] + expect: + name: 'Lundi de Pentecôte' diff --git a/vendor/holidays/definitions/be_nl.yaml b/vendor/holidays/definitions/be_nl.yaml new file mode 100644 index 00000000..20dd4d63 --- /dev/null +++ b/vendor/holidays/definitions/be_nl.yaml @@ -0,0 +1,153 @@ +# Belgium holiday definitions for the Ruby Holiday gem. In Dutch. +# +# Updated: 2016-02-17. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Belgium +--- +months: + 0: + - name: Pasen + regions: [be_nl] + function: easter(year) + - name: Paasmaandag + regions: [be_nl] + function: easter(year) + function_modifier: 1 + - name: O.H. Hemelvaart + regions: [be_nl] + function: easter(year) + function_modifier: 39 + - name: Pinksteren + regions: [be_nl] + function: easter(year) + function_modifier: 49 + - name: Pinkstermaandag + regions: [be_nl] + function: easter(year) + function_modifier: 50 + 1: + - name: Nieuwjaar + regions: [be_nl] + mday: 1 + 5: + - name: Feest van de Arbeid + regions: [be_nl] + mday: 1 + 7: + - name: Nationale Feestdag + regions: [be_nl] + mday: 21 + 8: + - name: O.L.V. Hemelvaart + regions: [be_nl] + mday: 15 + 11: + - name: Allerheiligen + regions: [be_nl] + mday: 1 + - name: Wapenstilstand 1918 + regions: [be_nl] + mday: 11 + 12: + - name: Kerstmis + regions: [be_nl] + mday: 25 + +tests: + - given: + date: '2007-01-01' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Nieuwjaar' + - given: + date: '2007-04-08' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Pasen' + - given: + date: '2007-04-09' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Paasmaandag' + - given: + date: '2007-05-01' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Feest van de Arbeid' + - given: + date: '2007-05-17' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'O.H. Hemelvaart' + - given: + date: '2007-05-27' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Pinksteren' + - given: + date: '2007-05-28' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Pinkstermaandag' + - given: + date: '2007-07-21' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Nationale Feestdag' + - given: + date: '2007-08-15' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'O.L.V. Hemelvaart' + - given: + date: '2007-11-01' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Allerheiligen' + - given: + date: '2007-11-11' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Wapenstilstand 1918' + - given: + date: '2007-12-25' + regions: ["be_nl"] + options: ["informal"] + expect: + name: 'Kerstmis' + - given: + date: '2017-4-16' + regions: ['be_nl'] + expect: + name: 'Pasen' + - given: + date: '2017-4-17' + regions: ['be_nl'] + expect: + name: 'Paasmaandag' + - given: + date: '2017-5-25' + regions: ['be_nl'] + expect: + name: 'O.H. Hemelvaart' + - given: + date: '2017-6-4' + regions: ['be_nl'] + expect: + name: 'Pinksteren' + - given: + date: '2017-6-5' + regions: ['be_nl'] + expect: + name: 'Pinkstermaandag' diff --git a/vendor/holidays/definitions/bg.yaml b/vendor/holidays/definitions/bg.yaml new file mode 100644 index 00000000..59072fa4 --- /dev/null +++ b/vendor/holidays/definitions/bg.yaml @@ -0,0 +1,186 @@ +# Bulgaria holiday definitions for the Ruby Holiday gem. +# +# Updated: 2015-04-01. +# Source: http://en.wikipedia.org/wiki/Public_holidays_in_Bulgaria +--- +months: + 0: + - name: Good Friday + regions: [bg_en] + function: orthodox_easter_julian(year) + function_modifier: -2 + - name: Разпети петък + regions: [bg_bg] + function: orthodox_easter_julian(year) + function_modifier: -2 + - name: Holy Saturday + regions: [bg_en] + function: orthodox_easter_julian(year) + function_modifier: -1 + - name: Велика събота + regions: [bg_bg] + function: orthodox_easter_julian(year) + function_modifier: -1 + - name: Easter Sunday + regions: [bg_en] + function: orthodox_easter_julian(year) + - name: Възкресение Христово. Великден + regions: [bg_bg] + function: orthodox_easter_julian(year) + - name: Easter Monday + regions: [bg_en] + function: orthodox_easter_julian(year) + function_modifier: 1 + - name: Възкресение Христово. Великден + regions: [bg_bg] + function: orthodox_easter_julian(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [bg_en] + mday: 1 + - name: Нова година + regions: [bg_bg] + mday: 1 + 3: + - name: Liberation Day + regions: [bg_en] + mday: 3 + - name: Освобожението на България + regions: [bg_bg] + mday: 3 + 5: + - name: Labour Day + regions: [bg_en] + mday: 1 + - name: Ден на труда + regions: [bg_bg] + mday: 1 + - name: St. George's Day + regions: [bg_en] + mday: 6 + - name: Гергьовден. Ден на храбростта + regions: [bg_bg] + mday: 6 + - name: Slavic Literacy Day + regions: [bg_en] + mday: 24 + - name: Ден на славянската писменост + regions: [bg_bg] + mday: 24 + 9: + - name: Unification Day + regions: [bg_en] + mday: 6 + - name: Ден на Съединението + regions: [bg_bg] + mday: 6 + - name: The Independence Day + regions: [bg_en] + mday: 22 + - name: Ден на Независимостта + regions: [bg_bg] + mday: 22 + 11: + - name: Revival Leader's Day + regions: [bg_en] + mday: 1 + - name: Ден на Народните будители + regions: [bg_bg] + mday: 1 + 12: + - name: Christmas Eve + regions: [bg_en] + mday: 24 + - name: Бъдни вечер + regions: [bg_bg] + mday: 24 + - name: Christmas + regions: [bg_en] + mday: 25 + - name: Рождество Христово. Коледа + regions: [bg_bg] + mday: 25 + - name: Christmas + regions: [bg_en] + mday: 26 + - name: Рождество Христово. Коледа + regions: [bg_bg] + mday: 26 + +tests: + - given: + date: '2015-01-01' + regions: ["bg_en"] + expect: + name: "New Year's Day" + - given: + date: '2015-03-03' + regions: ["bg_en"] + expect: + name: 'Liberation Day' + - given: + date: '2015-03-28' + regions: ["bg_en"] + expect: + name: 'Good Friday' + - given: + date: '2015-03-29' + regions: ["bg_en"] + expect: + name: 'Holy Saturday' + - given: + date: '2015-03-30' + regions: ["bg_en"] + expect: + name: 'Easter Sunday' + - given: + date: '2015-03-31' + regions: ["bg_en"] + expect: + name: 'Easter Monday' + - given: + date: '2015-05-01' + regions: ["bg_en"] + expect: + name: 'Labour Day' + - given: + date: '2015-05-06' + regions: ["bg_en"] + expect: + name: "St. George's Day" + - given: + date: '2015-05-24' + regions: ["bg_en"] + expect: + name: 'Slavic Literacy Day' + - given: + date: '2015-09-06' + regions: ["bg_en"] + expect: + name: 'Unification Day' + - given: + date: '2015-09-22' + regions: ["bg_en"] + expect: + name: 'The Independence Day' + - given: + date: '2015-11-01' + regions: ["bg_en"] + expect: + name: "Revival Leader's Day" + - given: + date: '2015-12-24' + regions: ["bg_en"] + expect: + name: 'Christmas Eve' + - given: + date: '2015-12-25' + regions: ["bg_en"] + expect: + name: 'Christmas' + - given: + date: '2015-12-26' + regions: ["bg_en"] + expect: + name: 'Christmas' diff --git a/vendor/holidays/definitions/br.yaml b/vendor/holidays/definitions/br.yaml new file mode 100644 index 00000000..e6469db0 --- /dev/null +++ b/vendor/holidays/definitions/br.yaml @@ -0,0 +1,161 @@ +# Brazilian holiday definitions for the Ruby Holiday gem. +# Provided by Rogério Carrasqueira +# +# Updated: 2008-11-28. +# Sources: +# - http://pt.wikipedia.org/wiki/Feriados_no_Brasil + +--- +months: + 0: + - name: Carnaval # same as Shrove Tuesday + regions: [br] + function: easter(year) + function_modifier: -47 + type: informal + - name: Sexta-feira Santa + regions: [br] + function: easter(year) + function_modifier: -2 + - name: Páscoa + regions: [br] + function: easter(year) + - name: Corpus Christi + regions: [br] + function: easter(year) + function_modifier: 60 + 1: + - name: Dia da Confraternização Universal + regions: [br] + mday: 1 + 4: + - name: Dia de Tiradentes + regions: [br] + mday: 21 + 5: + - name: Dia do Trabalho + regions: [br] + mday: 1 + 9: + - name: Proclamação da Independência + regions: [br] + mday: 7 + 10: + - name: Dia de Nossa Senhora Aparecida + regions: [br] + mday: 12 + 11: + - name: Dia de Finados + regions: [br] + mday: 2 + - name: Proclamação da República + regions: [br] + mday: 15 + 12: + - name: Natal + regions: [br] + mday: 25 + +tests: + - given: + date: '2008-01-01' + regions: ["br"] + options: ["informal"] + expect: + name: "Dia da Confraternização Universal" + - given: + date: '2005-02-08' + regions: ["br"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2006-02-28' + regions: ["br"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2007-02-20' + regions: ["br"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2008-02-05' + regions: ["br"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2008-03-21' + regions: ["br"] + options: ["informal"] + expect: + name: "Sexta-feira Santa" + - given: + date: '2008-03-23' + regions: ["br"] + options: ["informal"] + expect: + name: "Páscoa" + - given: + date: '2008-04-21' + regions: ["br"] + options: ["informal"] + expect: + name: "Dia de Tiradentes" + - given: + date: '2008-05-01' + regions: ["br"] + options: ["informal"] + expect: + name: "Dia do Trabalho" + - given: + date: '2005-05-26' + regions: ["br"] + options: ["informal"] + expect: + name: "Corpus Christi" + - given: + date: '2007-06-07' + regions: ["br"] + options: ["informal"] + expect: + name: "Corpus Christi" + - given: + date: '2008-05-22' + regions: ["br"] + options: ["informal"] + expect: + name: "Corpus Christi" + - given: + date: '2008-09-07' + regions: ["br"] + options: ["informal"] + expect: + name: "Proclamação da Independência" + - given: + date: '2008-10-12' + regions: ["br"] + options: ["informal"] + expect: + name: "Dia de Nossa Senhora Aparecida" + - given: + date: '2008-11-02' + regions: ["br"] + options: ["informal"] + expect: + name: "Dia de Finados" + - given: + date: '2008-11-15' + regions: ["br"] + options: ["informal"] + expect: + name: "Proclamação da República" + - given: + date: '2008-12-25' + regions: ["br"] + options: ["informal"] + expect: + name: "Natal" diff --git a/vendor/holidays/definitions/ca.yaml b/vendor/holidays/definitions/ca.yaml new file mode 100644 index 00000000..19284986 --- /dev/null +++ b/vendor/holidays/definitions/ca.yaml @@ -0,0 +1,881 @@ +# Canadian holiday definitions for the Ruby Holiday gem. +# Updated 2020-03-18. +# +# Notes: +# - 'Family Day' in various provinces are only celebrated after certain years: http://www.timeanddate.com/holidays/canada/family-day +# - 'Family Day' for New Brunswick after 2018 http://www.gnb.ca/legis/bill/FILE/58/3/Bill-67-e.htm +# - 'National Aboriginal Day for Yukon' Bill 2 received Royal Assent on May 8, 2017. http://www.gov.yk.ca/news/17-075.html +# - 'Nunavut’s legislative assembly voted to pass Bill 29 making Nunavut Day', July 9, an officially statutory holiday across the territory. https://www.gov.nu.ca/human-resources/information/public-service-holidays +# - 'According to Manitoba labour standards, Terry Fox Day is not a formal holiday. https://www.gov.mb.ca/labour/standards/doc,gen-holidays-after-april-30-07,factsheet.html#q13' +--- +months: + 0: + - name: Good Friday + regions: [ca] + function: easter(year) + function_modifier: -2 + - name: Easter Sunday + regions: [ca] + function: easter(year) + type: informal + - name: Easter Monday + regions: [ca] + function: easter(year) + function_modifier: 1 + type: informal + 1: + - name: New Year's Day + regions: [ca] + mday: 1 + observed: to_monday_if_weekend(date) + - name: New Year's + regions: [ca_qc] + mday: 2 + 2: + - name: Family Day + regions: [ca_ab] + wday: 1 + week: 3 + year_ranges: + from: 1990 + - name: Family Day + regions: [ca_sk] + wday: 1 + week: 3 + year_ranges: + from: 2007 + - name: Family Day + regions: [ca_on] + wday: 1 + week: 3 + year_ranges: + from: 2008 + - name: Family Day + regions: [ca_bc] + wday: 1 + week: 2 + year_ranges: + between: + start: 2013 + end: 2018 + - name: Family Day + regions: [ca_bc] + wday: 1 + week: 3 + year_ranges: + from: 2019 + - name: Family Day + regions: [ca_nb] + wday: 1 + week: 3 + year_ranges: + from: 2018 + - name: Louis Riel Day + regions: [ca_mb] + wday: 1 + week: 3 + - name: Nova Scotia Heritage Day + regions: [ca_ns] + wday: 1 + week: 3 + year_ranges: + from: 2015 + - name: Islander Day + regions: [ca_pe] + wday: 1 + week: 3 + 3: + - name: St. Patrick's Day + regions: [ca_nl] + mday: 17 + type: informal + - name: St. George's Day + regions: [ca_nl] + mday: 23 + type: informal + 5: + - name: Victoria Day + regions: [ca_ab, ca_bc, ca_mb, ca_nt, ca_nu, ca_on, ca_sk, ca_yt] + function: ca_victoria_day(year) + - name: National Patriotes Day + regions: [ca_qc] + function: ca_victoria_day(year) + 6: + - name: Discovery Day + regions: [ca_nl] + mday: 24 + type: informal + - name: Fête Nationale + regions: [ca_qc] + mday: 24 + - name: National Aboriginal Day + regions: [ca_nt] + mday: 21 + - name: National Aboriginal Day + regions: [ca_yt] + mday: 21 + year_ranges: + from: 2017 + 7: + - name: Canada Day + regions: [ca] + mday: 1 + observed: to_monday_if_weekend(date) + - name: Orangemen's Day + regions: [ca_nl] + mday: 12 + type: informal + - name: Nunavut Day + regions: [ca_nu] + mday: 9 + observed: to_monday_if_weekend(date) + year_ranges: + from: 2020 + 8: + - name: B.C. Day + week: 1 + regions: [ca_bc] + wday: 1 + - name: Saskatchewan Day + week: 1 + regions: [ca_sk] + wday: 1 + - name: Heritage Day + week: 1 + regions: [ca_ab] + type: informal + wday: 1 + - name: Natal Day + week: 1 + regions: [ca_ns] + wday: 1 + type: informal + - name: Civic Holiday + week: 1 + regions: [ca_nt, ca_nu] + wday: 1 + - name: Civic Holiday + week: 1 + regions: [ca_on, ca_pe] + wday: 1 + type: informal + - name: New Brunswick Day + week: 1 + regions: [ca_nb] + wday: 1 + - name: Terry Fox Day + week: 1 + regions: [ca_mb] + wday: 1 + type: informal + - name: Discovery Day + week: 3 + regions: [ca_yt] + wday: 1 + 9: + - name: Labour Day + week: 1 + regions: [ca] + wday: 1 + 10: + - name: Thanksgiving + week: 2 + regions: [ca_ab, ca_bc, ca_mb, ca_nt, ca_nu, ca_on, ca_qc, ca_sk, ca_yt] + wday: 1 + 11: + - name: Remembrance Day + regions: [ca_ab, ca_sk, ca_bc, ca_pe, ca_nl, ca_nt, ca_nu, ca_nb, ca_yt] + mday: 11 + observed: to_monday_if_weekend(date) + 12: + - name: Christmas Day + regions: [ca] + mday: 25 + observed: to_weekday_if_weekend(date) + - name: Boxing Day + regions: [ca_on] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + - name: Boxing Day + regions: [ca_ab, ca_bc, ca_mb, ca_nb, ca_nl, ca_nt, ca_ns, ca_nu, ca_pe, ca_sk, ca_yt] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + type: informal + +methods: + ca_victoria_day: + # Monday on or before May 24 + arguments: year + ruby: | + date = Date.civil(year,5,24) + if date.wday > 1 + date -= (date.wday - 1) + elsif date.wday == 0 + date -= 6 + end + date + +tests: + - given: + date: '2008-01-01' + regions: ["ca"] + options: ["informal"] + expect: + name: "New Year's Day" + - given: + date: '2008-03-21' + regions: ["ca"] + options: ["informal"] + expect: + name: "Good Friday" + - given: + date: '2013-03-31' + regions: ["ca"] + options: ["informal"] + expect: + name: "Easter Sunday" + - given: + date: '2008-03-24' + regions: ["ca"] + options: ["informal"] + expect: + name: "Easter Monday" + - given: + date: '2008-07-01' + regions: ["ca"] + options: ["informal"] + expect: + name: "Canada Day" + - given: + date: '2008-09-01' + regions: ["ca"] + options: ["informal"] + expect: + name: "Labour Day" + - given: + date: '2008-12-25' + regions: ["ca"] + options: ["informal"] + expect: + name: "Christmas Day" + + # Family Day in Alberta - Should only be active on 1990 or later + - given: + date: '1990-02-19' + regions: ["ca_ab"] + expect: + name: "Family Day" + - given: + date: '2013-02-18' + regions: ["ca_ab"] + expect: + name: "Family Day" + - given: + date: '2014-02-17' + regions: ["ca_ab"] + expect: + name: "Family Day" + - given: + date: '2044-02-15' + regions: ["ca_ab"] + expect: + name: "Family Day" + + # Family Day in Alberta - should not be active before 1990 + - given: + date: '1970-02-16' + regions: ["ca_ab"] + expect: + holiday: false + - given: + date: '1988-02-15' + regions: ["ca_ab"] + expect: + holiday: false + - given: + date: '1989-02-20' + regions: ["ca_ab"] + expect: + holiday: false + + # Family Day in Saskatchewan - Should only be active on 2007 or later + - given: + date: '2007-02-19' + regions: ["ca_sk"] + expect: + name: "Family Day" + - given: + date: '2013-02-18' + regions: ["ca_sk"] + expect: + name: "Family Day" + - given: + date: '2014-02-17' + regions: ["ca_sk"] + expect: + name: "Family Day" + - given: + date: '2044-02-15' + regions: ["ca_sk"] + expect: + name: "Family Day" + + # Family Day in Saskatchewan - should not be active before 2007 + - given: + date: '1970-02-16' + regions: ["ca_sk"] + expect: + holiday: false + - given: + date: '1988-02-15' + regions: ["ca_sk"] + expect: + holiday: false + - given: + date: '1989-02-20' + regions: ["ca_sk"] + expect: + holiday: false + - given: + date: '2006-02-20' + regions: ["ca_sk"] + expect: + holiday: false + + # Family Day in Ontario - Should only be active on 2008 or later + - given: + date: '2008-02-18' + regions: ["ca_on"] + expect: + name: "Family Day" + - given: + date: '2013-02-18' + regions: ["ca_on"] + expect: + name: "Family Day" + - given: + date: '2014-02-17' + regions: ["ca_on"] + expect: + name: "Family Day" + - given: + date: '2044-02-15' + regions: ["ca_on"] + expect: + name: "Family Day" + + # Family Day in Ontario - should not be active before 2008 + - given: + date: '1970-02-16' + regions: ["ca_on"] + expect: + holiday: false + - given: + date: '1988-02-15' + regions: ["ca_on"] + expect: + holiday: false + - given: + date: '1989-02-20' + regions: ["ca_on"] + expect: + holiday: false + - given: + date: '2006-02-20' + regions: ["ca_on"] + expect: + holiday: false + - given: + date: '2007-02-19' + regions: ["ca_on"] + expect: + holiday: false + + # Family Day in BC on 2nd week - Should only be active between 2013 and 2018 + - given: + date: '2013-02-11' + regions: ["ca_bc"] + expect: + name: "Family Day" + - given: + date: '2014-02-10' + regions: ["ca_bc"] + expect: + name: "Family Day" + - given: + date: '2018-02-12' + regions: ["ca_bc"] + expect: + name: "Family Day" + + # Family Day in BC on 2nd week - Should not be active before 2013 and after 2018 + - given: + date: '2000-02-14' + regions: ["ca_bc"] + expect: + holiday: false + - given: + date: '2011-02-14' + regions: ["ca_bc"] + expect: + holiday: false + - given: + date: '2012-02-13' + regions: ["ca_bc"] + expect: + holiday: false + - given: + date: '2019-02-11' + regions: ["ca_bc"] + expect: + holiday: false + - given: + date: '2044-02-08' + regions: ["ca_bc"] + expect: + holiday: false + + # Family Day in BC on 3nd week - Should only be active after 2018 + - given: + date: '2019-02-18' + regions: ["ca_bc"] + expect: + name: "Family Day" + - given: + date: '2020-02-17' + regions: ["ca_bc"] + expect: + name: "Family Day" + - given: + date: '2044-02-15' + regions: ["ca_bc"] + expect: + name: "Family Day" + + # Family Day in BC on 3nd week - Should not be active before 2019 + - given: + date: '2000-02-21' + regions: ["ca_bc"] + expect: + holiday: false + - given: + date: '2011-02-21' + regions: ["ca_bc"] + expect: + holiday: false + - given: + date: '2018-02-19' + regions: ["ca_bc"] + expect: + holiday: false + + # Family Day in NB - Should only be active on 2018 or later + - given: + date: '2018-02-19' + regions: ['ca_nb'] + expect: + name: 'Family Day' + - given: + date: '2019-02-18' + regions: ['ca_nb'] + expect: + name: 'Family Day' + # Family Day in NB - should not be active before 2018 + - given: + date: '2016-02-18' + regions: ['ca_nb'] + expect: + holiday: false + - given: + date: '2017-02-20' + regions: ['ca_nb'] + expect: + holiday: false + + # Nova Scotia Heritage Day - should only be active on 2015 and later + - given: + date: '2015-02-16' + regions: ["ca_ns"] + expect: + name: "Nova Scotia Heritage Day" + - given: + date: '2016-02-15' + regions: ["ca_ns"] + expect: + name: "Nova Scotia Heritage Day" + - given: + date: '2017-02-20' + regions: ["ca_ns"] + expect: + name: "Nova Scotia Heritage Day" + - given: + date: '2044-02-15' + regions: ["ca_ns"] + expect: + name: "Nova Scotia Heritage Day" + + # Nova Scotia Heritage Day - should not be active before 2015 + - given: + date: '2000-02-21' + regions: ["ca_ns"] + expect: + holiday: false + - given: + date: '2012-02-20' + regions: ["ca_ns"] + expect: + holiday: false + - given: + date: '2013-02-18' + regions: ["ca_ns"] + expect: + holiday: false + - given: + date: '2014-02-17' + regions: ["ca_ns"] + expect: + holiday: false + + - given: + date: '2013-02-18' + regions: ["ca_pe"] + expect: + name: "Islander Day" + - given: + date: '2014-02-17' + regions: ["ca_pe"] + expect: + name: "Islander Day" + + - given: + date: ['2004-05-24', '2005-5-23', '2006-5-22', '2007-5-21', '2008-5-19'] + regions: ["ca_ab", "ca_bc", "ca_mb", "ca_nt", "ca_nu", "ca_on", "ca_sk", "ca_yt"] + expect: + name: "Victoria Day" + + # First Monday in August + - given: + date: '2013-08-05' + regions: ["ca_bc"] + expect: + name: "B.C. Day" + - given: + date: '2013-08-05' + regions: ["ca_sk"] + expect: + name: "Saskatchewan Day" + - given: + date: '2013-08-05' + regions: ["ca_ab"] + options: ["informal"] + expect: + name: "Heritage Day" + - given: + date: '2013-08-05' + regions: ["ca_ns"] + options: ["informal"] + expect: + name: "Natal Day" + - given: + date: ['2013-08-05', '2014-8-4', '2015-8-3'] + regions: ["ca_on"] + options: ["informal"] + expect: + name: "Civic Holiday" + - given: + date: '2013-08-05' + regions: ["ca_nt"] + expect: + name: "Civic Holiday" + - given: + date: '2013-08-05' + regions: ["ca_nu"] + expect: + name: "Civic Holiday" + - given: + date: '2013-08-05' + regions: ["ca_pe"] + options: ["informal"] + expect: + name: "Civic Holiday" + - given: + date: '2013-08-05' + regions: ["ca_nb"] + expect: + name: "New Brunswick Day" + - given: + date: '2014-08-04' + regions: ["ca_bc"] + expect: + name: "B.C. Day" + - given: + date: '2014-08-04' + regions: ["ca_sk"] + expect: + name: "Saskatchewan Day" + - given: + date: '2014-08-04' + regions: ["ca_ab"] + options: ["informal"] + expect: + name: "Heritage Day" + - given: + date: '2014-08-04' + regions: ["ca_ns"] + options: ["informal"] + expect: + name: "Natal Day" + - given: + date: '2014-08-04' + regions: ["ca_nt"] + expect: + name: "Civic Holiday" + - given: + date: '2014-08-04' + regions: ["ca_nu"] + expect: + name: "Civic Holiday" + - given: + date: '2014-08-04' + regions: ["ca_pe"] + options: ["informal"] + expect: + name: "Civic Holiday" + - given: + date: '2014-08-04' + regions: ["ca_nb"] + expect: + name: "New Brunswick Day" + - given: + date: '2015-08-03' + regions: ["ca_bc"] + expect: + name: "B.C. Day" + - given: + date: '2015-08-03' + regions: ["ca_sk"] + expect: + name: "Saskatchewan Day" + - given: + date: '2015-08-03' + regions: ["ca_ab"] + options: ["informal"] + expect: + name: "Heritage Day" + - given: + date: '2015-08-03' + regions: ["ca_ns"] + options: ["informal"] + expect: + name: "Natal Day" + - given: + date: '2015-08-03' + regions: ["ca_nt"] + expect: + name: "Civic Holiday" + - given: + date: '2015-08-03' + regions: ["ca_nu"] + expect: + name: "Civic Holiday" + - given: + date: '2015-08-03' + regions: ["ca_pe"] + options: ["informal"] + expect: + name: "Civic Holiday" + - given: + date: '2015-08-03' + regions: ["ca_nb"] + expect: + name: "New Brunswick Day" + + # Remembrance Day in all Canadian provinces + # except (Nova Scotia, Manitoba, Ontario, and Quebec) + - given: + date: ['2010-11-11', '2012-11-12', '2017-11-13'] + regions: ["ca_ab", "ca_sk", "ca_bc", "ca_pe", "ca_nl", "ca_nt", "ca_nu", "ca_nb", "ca_yt"] + options: ["observed"] + expect: + name: "Remembrance Day" + - given: + date: '2016-11-11' + regions: ["ca_ab", "ca_sk", "ca_bc", "ca_pe", "ca_nl", "ca_nt", "ca_nu", "ca_nb", "ca_yt"] + expect: + name: "Remembrance Day" + + # New years observed date + - given: + date: '2011-01-03' + regions: ["ca"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2012-01-02' + regions: ["ca"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2016-01-01' + regions: ["ca"] + options: ["observed"] + expect: + name: "New Year's Day" + + # Canada Day observed date + - given: + date: '2011-07-01' + regions: ["ca"] + options: ["observed"] + expect: + name: "Canada Day" + - given: + date: '2012-07-02' + regions: ["ca"] + options: ["observed"] + expect: + name: "Canada Day" + - given: + date: '2017-07-03' + regions: ["ca"] + options: ["observed"] + expect: + name: "Canada Day" + + # Christmas Day + - given: + date: '2010-12-25' + regions: ["ca"] + expect: + name: "Christmas Day" + - given: + date: '2018-12-25' + regions: ["ca"] + expect: + name: "Christmas Day" + - given: + date: '2022-12-25' + regions: ["ca"] + expect: + name: "Christmas Day" + - given: + date: '2022-12-25' + regions: ["ca"] + options: ["observed"] + expect: + holiday: false + + # Christmas Day observed date + - given: + date: '2010-12-24' + regions: ["ca"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2012-12-25' + regions: ["ca"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2016-12-26' + regions: ["ca"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2021-12-24' + regions: ["ca"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2022-12-26' + regions: ["ca"] + options: ["observed"] + expect: + name: "Christmas Day" + + - given: + date: ['2010-12-28', '2012-12-26', '2015-12-28', '2016-12-27'] + regions: ["ca_on"] + options: ["observed"] + expect: + name: "Boxing Day" + + # Yukon National Aboriginal Day - should not be active before 2017 + - given: + date: '2015-06-21' + regions: ['ca_yt'] + expect: + holiday: false + - given: + date: '2016-06-21' + regions: ['ca_yt'] + expect: + holiday: false + # Yukon National Aboriginal Day - should be active after 2017 + - given: + date: '2017-06-21' + regions: ['ca_yt'] + expect: + name: 'National Aboriginal Day' + - given: + date: '2018-06-21' + regions: ['ca_yt'] + expect: + name: 'National Aboriginal Day' + - given: + date: '2019-08-05' + regions: ['ca_mb'] + options: ['informal'] + expect: + name: 'Terry Fox Day' + - given: + date: '2020-08-03' + regions: ['ca_mb'] + options: ['informal'] + expect: + name: 'Terry Fox Day' + - given: + date: '2020-08-03' + regions: ['ca_mb'] + expect: + holiday: false + - given: + date: '2015-08-03' + regions: ['ca_mb'] + options: ['informal'] + expect: + name: 'Terry Fox Day' + - given: + date: '2045-08-07' + regions: ['ca_mb'] + options: ['informal'] + expect: + name: 'Terry Fox Day' + # Nunavut Day, July 9 - Should only be active on 2020 or later + - given: + date: '2020-07-09' + regions: ['ca_nu'] + expect: + name: 'Nunavut Day' + - given: + date: '2021-07-09' + regions: ['ca_nu'] + expect: + name: 'Nunavut Day' + # Nunavut Day, July 9 - should NOT be active before 2020 + - given: + date: '2019-07-09' + regions: ['ca_nu'] + expect: + holiday: false + - given: + date: '2018-07-09' + regions: ['ca_nu'] + expect: + holiday: false diff --git a/vendor/holidays/definitions/ch.yaml b/vendor/holidays/definitions/ch.yaml new file mode 100644 index 00000000..81e7cd51 --- /dev/null +++ b/vendor/holidays/definitions/ch.yaml @@ -0,0 +1,277 @@ +# Swiss holiday definitions for the Ruby Holiday gem. +# +# Updated: 2018-10-10. +# Sources: +# http://www.bj.admin.ch/content/dam/data/staat_buerger/zivilprozessrecht/kant-feiertage.pdf +# +# Word of warning: +# ================ +# As the holidays are defined on a state level and sometimes even on a district / village level, +# this holiday definition is an approximation of the reality. It should be accurate for most of the cases but +# no guarantee is given that it is correct for all the special cases :-). +# Considers both official holidays and holidays that are handled as if they were official holidays. +# +# Holiday names are in German in case they are celebrated in the German speaking area and in French / Italian otherwise. +# +# Known Issues: +# * ch_ur: 26th of December is not celebrated in case the 25th is a Monday or a Friday. +# * ch_fr: Fronleichnam, Maria Himmelfahrt, Allerheiligen, Maria Empfaengnis is celebrated in all villages except +# some villages of the district of See. +# * ch_so: - There are a lot of village holidays not included here. +# - 1st of May is holiday only starting at noon; not included here. +# - 19th of March is celebrated only in a couple of villages +# * ch_ar: 26th of December is not celebrated in case the 25th is a Monday or a Friday. +# * ch_ai: - 22nd of September is celebrated only in part of the state. +# - 26th of December is not celebrated in case the 25th is a Monday or a Friday. +# * ch_ne: 26th of December and 2nd of January are only celebrated in case 25th of December and 1st of January are Sundays +--- +months: + 0: + - name: Karfreitag + 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] + function: easter(year) + function_modifier: -2 + - name: Ostermontag + 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] + function: easter(year) + function_modifier: 1 + # State holiday but observed in all the states + - name: Auffahrt + regions: [ch] + function: easter(year) + function_modifier: 39 + - name: Pfingstmontag + 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] + function: easter(year) + function_modifier: 50 + - name: Fronleichnam + 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] + function: easter(year) + function_modifier: 60 + - name: Lundi du Jeûne fédéral + regions: [ch_vd] + function: ch_vd_lundi_du_jeune_federal(year) + - name: Jeûne genevois + regions: [ch_ge] + function: ch_ge_jeune_genevois(year) + 1: + - name: Neujahrstag + regions: [ch] + mday: 1 + - name: Berchtoldstag + 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] + mday: 2 + - name: Dreikönigstag + regions: [ch_ur, ch_sz, ch_ti] + mday: 6 + 3: + - name: Instauration de la République + regions: [ch_ne] + mday: 1 + - name: Josephstag + regions: [ch_ur, ch_sz, ch_nw, ch_ti, ch_vs] + mday: 19 + 4: + - name: Näfelser Fahrt + regions: [ch_gl] + function: ch_gl_naefelser_fahrt(year) + 5: + - name: Tag der Arbeit + regions: [ch_zh, ch_bs, ch_bl, ch_sh, ch_ag, ch_tg, ch_ti, ch_ne, ch_ju] + mday: 1 + 6: + - name: Commémoration du plébiscite jurassien + regions: [ch_ju] + mday: 23 + - name: San Pietro e Paolo + regions: [ch_ti] + mday: 29 + 8: + # Federal holiday + - name: Bundesfeiertag + regions: [ch] + mday: 1 + - name: Mariä Himmelfahrt + 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] + mday: 15 + 9: + - name: Mauritiustag + regions: [ch_ai] + mday: 22 + - name: Bruderklausenfest + regions: [ch_ow] + mday: 25 + 11: + - name: Zibelemärit + regions: [ch_be] + function: ch_be_zibelemaerit(year) + - name: Allerheiligen + 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] + mday: 1 + 12: + - name: Maria Empfängnis + regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_zg, ch_fr, ch_ai, ch_ag, ch_ti, ch_vs] + mday: 8 + # State holiday but observed in all the states + - name: Weihnachten + regions: [ch] + mday: 25 + - name: Stefanstag + 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] + mday: 26 + - name: Restauration de la République + regions: [ch_ge] + mday: 31 + +methods: + ch_vd_lundi_du_jeune_federal: + # Monday after the third Sunday of September + arguments: year + ruby: | + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # There are 15 days between the first Sunday + # and the Monday after the third Sunday + date + 15 + ch_ge_jeune_genevois: + # Thursday after the first Sunday of September + arguments: year + ruby: | + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # Thursday is four days after Sunday + date + 4 + ch_gl_naefelser_fahrt: + # First Thursday of April. If the first Thursday of April is in the week before easter, then a week later. + arguments: year + ruby: | + date = Date.civil(year,4,1) + # Find the first Thursday of April + until date.wday.eql? 4 do + date += 1 + end + + if date.eql?(Holidays::Factory::DateCalculator::Easter::Gregorian.easter_calculator.calculate_easter_for(year)-3) + date += 7 + end + date + ch_be_zibelemaerit: + # fourth Monday in november + arguments: year + ruby: | + date = Date.civil(year,11,1) + # Find the first Monday of November + until date.wday.eql? 1 do + date += 1 + end + # There are 21 days between the first monday + # and the 4rth Monday after + date + 21 + +tests: + - given: + date: '2018-01-01' + regions: ["ch"] + expect: + name: "Neujahrstag" + - given: + date: '2012-08-01' + regions: ["ch"] + expect: + name: "Bundesfeiertag" + - given: + date: '2012-12-25' + regions: ["ch"] + expect: + name: "Weihnachten" + - given: + date: '2012-05-17' + regions: ["ch"] + expect: + name: "Auffahrt" + - given: + date: '2012-08-01' + regions: ["ch_zh"] + expect: + name: "Bundesfeiertag" + - given: + date: '2012-12-25' + regions: ["ch_zh"] + expect: + name: "Weihnachten" + - given: + date: '2012-05-17' + regions: ["ch_zh"] + expect: + name: "Auffahrt" + - given: + date: '2012-05-01' + regions: ["ch_zh"] + expect: + name: "Tag der Arbeit" + - given: + date: '2012-12-26' + regions: ["ch_zh"] + expect: + name: "Stefanstag" + - given: + date: '2012-09-17' + regions: ["ch_vd"] + expect: + name: "Lundi du Jeûne fédéral" + - given: + date: '2013-09-16' + regions: ["ch_vd"] + expect: + name: "Lundi du Jeûne fédéral" + - given: + date: '2014-09-22' + regions: ["ch_vd"] + expect: + name: "Lundi du Jeûne fédéral" + - given: + date: '2012-09-06' + regions: ["ch_ge"] + expect: + name: "Jeûne genevois" + - given: + date: '2013-09-05' + regions: ["ch_ge"] + expect: + name: "Jeûne genevois" + - given: + date: '2014-09-11' + regions: ["ch_ge"] + expect: + name: "Jeûne genevois" + - given: + date: '2012-04-12' + regions: ["ch_gl"] + expect: + name: "Näfelser Fahrt" + - given: + date: '2013-04-04' + regions: ["ch_gl"] + expect: + name: "Näfelser Fahrt" + - given: + date: '2014-04-03' + regions: ["ch_gl"] + expect: + name: "Näfelser Fahrt" + - given: + date: '2014-11-24' + regions: ["ch_be"] + expect: + name: "Zibelemärit" + - given: + date: '2020-11-23' + regions: ["ch_be"] + expect: + name: "Zibelemärit" diff --git a/vendor/holidays/definitions/cl.yaml b/vendor/holidays/definitions/cl.yaml new file mode 100644 index 00000000..1e9160b9 --- /dev/null +++ b/vendor/holidays/definitions/cl.yaml @@ -0,0 +1,294 @@ +# Chilean holiday definitions for the Ruby Holiday gem. +# +# Updated: 2019-02-10 +# +# Sources: +# - http://www.feriados.cl +# - http://www.feriadoschilenos.cl +# +--- +months: + 0: + - name: Viernes Santo + regions: [cl] + function: easter(year) + function_modifier: -2 + - name: Sábado Santo + regions: [cl] + function: easter(year) + function_modifier: -1 + - name: San Pedro y San Pablo + regions: [cl] + function: st_peter_st_paul_cl(year) + year_ranges: + from: 2000 + - name: Día de las Iglesias Evangélicas y Protestantes + regions: [cl] + function: other_churches_day_cl(year) + year_ranges: + from: 2008 + 1: + - name: Año Nuevo + regions: [cl] + mday: 1 + 5: + - name: Día del Trabajo + regions: [cl] + mday: 1 + - name: Día de las Glorias Navales + regions: [cl] + mday: 21 + 6: + - name: San Pedro y San Pablo + regions: [cl] + mday: 29 + year_ranges: + until: 1999 + 7: + - name: Día de la Virgen del Carmen + regions: [cl] + mday: 16 + 8: + - name: Asunción de la Virgen + regions: [cl] + mday: 15 + 9: + - name: Independencia Nacional + regions: [cl] + mday: 18 + - name: Día de las Glorias del Ejército + regions: [cl] + mday: 19 + 10: + - name: Encuentro de Dos Mundos + regions: [cl] + mday: 12 + year_ranges: + until: 1999 + - name: Encuentro de Dos Mundos + regions: [cl] + year_ranges: + from: 2000 + function: columbus_day_cl(year) + 11: + - name: Día de Todos los Santos + regions: [cl] + mday: 1 + 12: + - name: Inmaculada Concepción de María + regions: [cl] + mday: 8 + - name: Navidad + regions: [cl] + mday: 25 + +methods: + st_peter_st_paul_cl: + arguments: year + # Nearest monday + ruby: | + date = Date.civil(year, 6, 29) + if [2,3,4].include?(date.wday) + date -= (date.wday - 1) + elsif date.wday == 5 + date += 3 + end + date + columbus_day_cl: + arguments: year + # Nearest monday + ruby: | + date = Date.civil(year, 10, 12) + if [2,3,4].include?(date.wday) + date -= (date.wday - 1) + elsif date.wday == 5 + date += 3 + end + date + other_churches_day_cl: + arguments: year + # If on tuesday, friday before, if on wednesday, next friday + ruby: | + date = Date.civil(year, 10, 31) + if date.wday == 2 + date -= 4 + elsif date.wday == 3 + date += 2 + end + date + +tests: + - given: + date: '2014-01-01' + regions: ["cl"] + options: ["informal"] + expect: + name: "Año Nuevo" + - given: + date: '2011-04-22' + regions: ["cl"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2011-04-23' + regions: ["cl"] + options: ["informal"] + expect: + name: "Sábado Santo" + - given: + date: '2012-04-06' + regions: ["cl"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2012-04-07' + regions: ["cl"] + options: ["informal"] + expect: + name: "Sábado Santo" + - given: + date: '2013-03-29' + regions: ["cl"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2013-03-30' + regions: ["cl"] + options: ["informal"] + expect: + name: "Sábado Santo" + - given: + date: '2014-04-18' + regions: ["cl"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2014-04-19' + regions: ["cl"] + options: ["informal"] + expect: + name: "Sábado Santo" + - given: + date: '2015-04-03' + regions: ["cl"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2015-04-04' + regions: ["cl"] + options: ["informal"] + expect: + name: "Sábado Santo" + - given: + date: '2016-03-25' + regions: ["cl"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2016-03-26' + regions: ["cl"] + options: ["informal"] + expect: + name: "Sábado Santo" + - given: + date: '2014-05-01' + regions: ["cl"] + options: ["informal"] + expect: + name: "Día del Trabajo" + - given: + date: '2014-05-21' + regions: ["cl"] + options: ["informal"] + expect: + name: "Día de las Glorias Navales" + - given: + date: '1999-06-29' + regions: ["cl"] + options: ["informal"] + expect: + name: "San Pedro y San Pablo" + - given: + date: '2000-06-26' + regions: ["cl"] + options: ["informal"] + expect: + name: "San Pedro y San Pablo" + - given: + date: '2017-06-26' + regions: ["cl"] + options: ["informal"] + expect: + name: "San Pedro y San Pablo" + - given: + date: '2018-07-2' + regions: ["cl"] + options: ["informal"] + expect: + name: "San Pedro y San Pablo" + - given: + date: '2014-07-16' + regions: ["cl"] + options: ["informal"] + expect: + name: "Día de la Virgen del Carmen" + - given: + date: '2014-08-15' + regions: ["cl"] + options: ["informal"] + expect: + name: "Asunción de la Virgen" + - given: + date: '2014-09-18' + regions: ["cl"] + options: ["informal"] + expect: + name: "Independencia Nacional" + - given: + date: '2014-09-19' + regions: ["cl"] + options: ["informal"] + expect: + name: "Día de las Glorias del Ejército" + - given: + date: '1999-10-12' + regions: ["cl"] + options: ["informal"] + expect: + name: "Encuentro de Dos Mundos" + - given: + date: '2017-10-9' + regions: ["cl"] + options: ["informal"] + expect: + name: "Encuentro de Dos Mundos" + - given: + date: '2017-10-27' + regions: ["cl"] + options: ["informal"] + expect: + name: "Día de las Iglesias Evangélicas y Protestantes" + - given: + date: '2014-11-01' + regions: ["cl"] + options: ["informal"] + expect: + name: "Día de Todos los Santos" + - given: + date: '2014-12-08' + regions: ["cl"] + options: ["informal"] + expect: + name: "Inmaculada Concepción de María" + - given: + date: '2014-12-25' + regions: ["cl"] + options: ["informal"] + expect: + name: "Navidad" diff --git a/vendor/holidays/definitions/co.yaml b/vendor/holidays/definitions/co.yaml new file mode 100644 index 00000000..08c54df5 --- /dev/null +++ b/vendor/holidays/definitions/co.yaml @@ -0,0 +1,437 @@ +# Colombian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2018-06-01. +# +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Colombia +# - https://publicholidays.co/ +# - https://www.calendariodecolombia.com/ +# - https://www.officeholidays.com/countries/colombia/ +# - https://www.timeanddate.com/holidays/colombia/ +# - http://www.bank-holidays.com/country/Colombia_42.htm +--- +methods: + # Movable holiday: when they do not fall on a Monday, these holidays are observed the following Monday. + to_following_monday_if_not_monday: + arguments: date + ruby: | + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date + epiphany: + arguments: year + ruby: | + date = Date.civil( year, 1, 6 ) + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date + saint_josephs_day: + arguments: year + ruby: | + date = Date.civil( year, 3, 19 ) + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date + saint_peter_and_saint_paul: + arguments: year + ruby: | + date = Date.civil( year, 6, 29 ) + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date + assumption_of_mary: + arguments: year + ruby: | + date = Date.civil( year, 8, 15 ) + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date + columbus_day: + arguments: year + ruby: | + date = Date.civil( year, 10, 12 ) + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date + all_saints_day: + arguments: year + ruby: | + date = Date.civil( year, 11, 1 ) + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date + independence_of_cartagena: + arguments: year + ruby: | + date = Date.civil( year, 11, 11 ) + if date.wday > 1 + date += ( 8 - date.wday ) + elsif date.wday == 0 + date += 1 + end + date +months: + 0: + - name: Jueves Santo + regions: [co] + function: easter(year) + function_modifier: -3 + - name: Viernes Santo + regions: [co] + function: easter(year) + function_modifier: -2 + - name: Día de la Ascensión + regions: [co] + function: easter(year) + function_modifier: 43 + - name: Corpus Christi + regions: [co] + function: easter(year) + function_modifier: 64 + - name: Sagrado Corazón + regions: [co] + function: easter(year) + function_modifier: 71 + 1: + - name: Año Nuevo + regions: [co] + mday: 1 + - name: Día de los Reyes Magos + regions: [co] + function: epiphany(year) + 3: + - name: Día de San José + regions: [co] + function: saint_josephs_day(year) + 5: + - name: Día del Trabajo + regions: [co] + mday: 1 + 6: + - name: San Pedro y San Pablo + regions: [co] + function: saint_peter_and_saint_paul(year) + 7: + - name: Día de la Independencia + regions: [co] + mday: 20 + 8: + - name: Batalla de Boyacá + regions: [co] + mday: 7 + - name: La Asunción de la Virgen + regions: [co] + function: assumption_of_mary(year) + 10: + - name: Día de la Raza + regions: [co] + function: columbus_day(year) + 11: + - name: Día de Todos los Santos + regions: [co] + function: all_saints_day(year) + - name: Independencia de Cartagena + regions: [co] + function: independence_of_cartagena(year) + 12: + - name: Día de la Inmaculada Concepción + regions: [co] + mday: 8 + - name: Navidad + regions: [co] + mday: 25 +tests: + # Año Nuevo + - given: + date: '2014-01-01' + regions: ['co'] + expect: + name: 'Año Nuevo' + - given: + date: '2017-01-01' + regions: ['co'] + expect: + name: 'Año Nuevo' + # Día de los Reyes Magos + - given: + date: '2014-01-06' + regions: ['co'] + expect: + name: 'Día de los Reyes Magos' + - given: + date: '2015-01-12' + regions: ['co'] + expect: + name: 'Día de los Reyes Magos' + - given: + date: '2017-01-09' + regions: ['co'] + expect: + name: 'Día de los Reyes Magos' + # Día de San José + - given: + date: '2014-03-24' + regions: ['co'] + expect: + name: 'Día de San José' + - given: + date: '2017-03-20' + regions: ['co'] + expect: + name: 'Día de San José' + - given: + date: '2018-03-19' + regions: ['co'] + expect: + name: 'Día de San José' + # Jueves Santo + - given: + date: '2015-04-02' + regions: ['co'] + expect: + name: 'Jueves Santo' + - given: + date: '2017-04-13' + regions: ['co'] + expect: + name: 'Jueves Santo' + - given: + date: '2018-03-29' + regions: ['co'] + expect: + name: 'Jueves Santo' + # Viernes Santo + - given: + date: '2014-04-18' + regions: ['co'] + expect: + name: 'Viernes Santo' + - given: + date: '2016-03-25' + regions: ['co'] + expect: + name: 'Viernes Santo' + - given: + date: '2018-03-30' + regions: ['co'] + expect: + name: 'Viernes Santo' + # Día del Trabajo + - given: + date: '2013-05-01' + regions: ['co'] + expect: + name: 'Día del Trabajo' + - given: + date: '2016-05-01' + regions: ['co'] + expect: + name: 'Día del Trabajo' + # Día de la Ascensión + - given: + date: '2014-06-02' + regions: ['co'] + expect: + name: 'Día de la Ascensión' + - given: + date: '2016-05-09' + regions: ['co'] + expect: + name: 'Día de la Ascensión' + - given: + date: '2017-05-29' + regions: ['co'] + expect: + name: 'Día de la Ascensión' + # Corpus Christi + - given: + date: '2014-06-23' + regions: ['co'] + expect: + name: 'Corpus Christi' + - given: + date: '2016-05-30' + regions: ['co'] + expect: + name: 'Corpus Christi' + - given: + date: '2017-06-19' + regions: ['co'] + expect: + name: 'Corpus Christi' + # Sagrado Corazón + - given: + date: '2014-06-30' + regions: ['co'] + expect: + name: 'Sagrado Corazón' + - given: + date: '2016-06-06' + regions: ['co'] + expect: + name: 'Sagrado Corazón' + - given: + date: '2017-06-26' + regions: ['co'] + expect: + name: 'Sagrado Corazón' + # San Pedro y San Pablo + - given: + date: '2016-07-04' + regions: ['co'] + expect: + name: 'San Pedro y San Pablo' + - given: + date: '2017-07-03' + regions: ['co'] + expect: + name: 'San Pedro y San Pablo' + # Día de la Independencia + - given: + date: '2014-07-20' + regions: ['co'] + expect: + name: 'Día de la Independencia' + - given: + date: '2016-07-20' + regions: ['co'] + expect: + name: 'Día de la Independencia' + - given: + date: '2018-07-20' + regions: ['co'] + expect: + name: 'Día de la Independencia' + # Batalla de Boyacá + - given: + date: '2014-08-07' + regions: ['co'] + expect: + name: 'Batalla de Boyacá' + - given: + date: '2016-08-07' + regions: ['co'] + expect: + name: 'Batalla de Boyacá' + - given: + date: '2018-08-07' + regions: ['co'] + expect: + name: 'Batalla de Boyacá' + # La Asunción de la Virgen + - given: + date: '2014-08-18' + regions: ['co'] + expect: + name: 'La Asunción de la Virgen' + - given: + date: '2016-08-15' + regions: ['co'] + expect: + name: 'La Asunción de la Virgen' + - given: + date: '2017-08-21' + regions: ['co'] + expect: + name: 'La Asunción de la Virgen' + # Día de la Raza + - given: + date: '2014-10-13' + regions: ['co'] + expect: + name: 'Día de la Raza' + - given: + date: '2016-10-17' + regions: ['co'] + expect: + name: 'Día de la Raza' + - given: + date: '2017-10-16' + regions: ['co'] + expect: + name: 'Día de la Raza' + # Día de Todos los Santos + - given: + date: '2014-11-03' + regions: ['co'] + expect: + name: 'Día de Todos los Santos' + - given: + date: '2016-11-07' + regions: ['co'] + expect: + name: 'Día de Todos los Santos' + - given: + date: '2017-11-06' + regions: ['co'] + expect: + name: 'Día de Todos los Santos' + # Independencia de Cartagena + - given: + date: '2014-11-17' + regions: ['co'] + expect: + name: 'Independencia de Cartagena' + - given: + date: '2016-11-14' + regions: ['co'] + expect: + name: 'Independencia de Cartagena' + - given: + date: '2017-11-13' + regions: ['co'] + expect: + name: 'Independencia de Cartagena' + # Día de la Inmaculada Concepción + - given: + date: '2013-12-08' + regions: ['co'] + expect: + name: 'Día de la Inmaculada Concepción' + - given: + date: '2014-12-08' + regions: ['co'] + expect: + name: 'Día de la Inmaculada Concepción' + - given: + date: '2016-12-08' + regions: ['co'] + expect: + name: 'Día de la Inmaculada Concepción' + # Navidad + - given: + date: '2014-12-25' + regions: ['co'] + expect: + name: 'Navidad' + - given: + date: '2016-12-25' + regions: ['co'] + expect: + name: 'Navidad' + - given: + date: '2017-12-25' + regions: ['co'] + expect: + name: 'Navidad' diff --git a/vendor/holidays/definitions/cr.yaml b/vendor/holidays/definitions/cr.yaml new file mode 100644 index 00000000..c6f9e500 --- /dev/null +++ b/vendor/holidays/definitions/cr.yaml @@ -0,0 +1,100 @@ +# Costa Rican holiday definitions for the Ruby Holiday gem. +# +# +# Updated: 2014-11-22. +# +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Costa_Rica +# +months: + 0: + - name: Jueves Santo + regions: [cr] + function: easter(year) + function_modifier: -3 + - name: Viernes Santo + regions: [cr] + function: easter(year) + function_modifier: -2 + 1: + - name: Año Nuevo + regions: [cr] + mday: 1 + 4: + - name: Día de Juan Santamaría + regions: [cr] + mday: 11 + 5: + - name: Día del Trabajador + regions: [cr] + mday: 1 + 7: + - name: Día de la Anexión de Guanacaste + regions: [cr] + mday: 25 + 8: + - name: Día de la Virgen de los Angeles + regions: [cr] + mday: 2 + - name: Día de la Madre + regions: [cr] + mday: 15 + 9: + - name: Día de la Independencia + regions: [cr] + mday: 15 + 10: + - name: Día de las Culturas + regions: [cr] + mday: 12 + 12: + - name: Navidad + regions: [cr] + mday: 25 + +tests: + - given: + date: '2015-01-01' + regions: ["cr"] + expect: + name: "Año Nuevo" + - given: + date: '2015-04-11' + regions: ["cr"] + expect: + name: "Día de Juan Santamaría" + - given: + date: '2015-05-01' + regions: ["cr"] + expect: + name: "Día del Trabajador" + - given: + date: '2015-07-25' + regions: ["cr"] + expect: + name: "Día de la Anexión de Guanacaste" + - given: + date: '2015-08-02' + regions: ["cr"] + expect: + name: "Día de la Virgen de los Angeles" + - given: + date: '2015-08-15' + regions: ["cr"] + expect: + name: "Día de la Madre" + - given: + date: '2015-09-15' + regions: ["cr"] + expect: + name: "Día de la Independencia" + - given: + date: '2015-10-12' + regions: ["cr"] + expect: + name: "Día de las Culturas" + - given: + date: '2016-12-25' + regions: ["cr"] + expect: + name: "Navidad" diff --git a/vendor/holidays/definitions/cz.yaml b/vendor/holidays/definitions/cz.yaml new file mode 100644 index 00000000..9e90b149 --- /dev/null +++ b/vendor/holidays/definitions/cz.yaml @@ -0,0 +1,137 @@ +# Czech holiday definitions for the Ruby Holiday gem. +# +# Updated: 2016-04-20. +# Sources: +# - http://cs.wikipedia.org/wiki/%C4%8Cesk%C3%BD_st%C3%A1tn%C3%AD_sv%C3%A1tek +# - http://www.mpsv.cz/cs/74 +--- +months: + 0: + - name: Velký pátek + regions: [cz] + function: easter(year) + function_modifier: -2 + - name: Velikonoční pondělí + regions: [cz] + function: easter(year) + function_modifier: 1 + 1: + - name: Den obnovy samostatného českého státu + regions: [cz] + mday: 1 + 5: + - name: Svátek práce + regions: [cz] + mday: 1 + - name: Den vítězství + regions: [cz] + mday: 8 + 7: + - name: Den slovanských věrozvěstů Cyrila a Metoděje + regions: [cz] + mday: 5 + - name: Den upálení mistra Jana Husa + regions: [cz] + mday: 6 + 9: + - name: Den české státnosti + regions: [cz] + mday: 28 + 10: + - name: Den vzniku samostatného československého státu + regions: [cz] + mday: 28 + 11: + - name: Den boje za svobodu a demokracii + regions: [cz] + mday: 17 + 12: + - name: Štědrý den + regions: [cz] + mday: 24 + - name: 1. svátek vánoční + regions: [cz] + mday: 25 + - name: 2. svátek vánoční + regions: [cz] + mday: 26 + +tests: + - given: + date: '2010-01-01' + regions: ["cz"] + options: ["informal"] + expect: + name: "Den obnovy samostatného českého státu" + - given: + date: '2016-03-25' + regions: ["cz"] + options: ["informal"] + expect: + name: "Velký pátek" + - given: + date: '2010-04-05' + regions: ["cz"] + options: ["informal"] + expect: + name: "Velikonoční pondělí" + - given: + date: '2010-05-01' + regions: ["cz"] + options: ["informal"] + expect: + name: "Svátek práce" + - given: + date: '2010-05-08' + regions: ["cz"] + options: ["informal"] + expect: + name: "Den vítězství" + - given: + date: '2010-07-05' + regions: ["cz"] + options: ["informal"] + expect: + name: "Den slovanských věrozvěstů Cyrila a Metoděje" + - given: + date: '2010-07-06' + regions: ["cz"] + options: ["informal"] + expect: + name: "Den upálení mistra Jana Husa" + - given: + date: '2010-09-28' + regions: ["cz"] + options: ["informal"] + expect: + name: "Den české státnosti" + - given: + date: '2010-10-28' + regions: ["cz"] + options: ["informal"] + expect: + name: "Den vzniku samostatného československého státu" + - given: + date: '2010-11-17' + regions: ["cz"] + options: ["informal"] + expect: + name: "Den boje za svobodu a demokracii" + - given: + date: '2010-12-24' + regions: ["cz"] + options: ["informal"] + expect: + name: "Štědrý den" + - given: + date: '2010-12-25' + regions: ["cz"] + options: ["informal"] + expect: + name: "1. svátek vánoční" + - given: + date: '2010-12-26' + regions: ["cz"] + options: ["informal"] + expect: + name: "2. svátek vánoční" diff --git a/vendor/holidays/definitions/de.yaml b/vendor/holidays/definitions/de.yaml new file mode 100644 index 00000000..5e0f3037 --- /dev/null +++ b/vendor/holidays/definitions/de.yaml @@ -0,0 +1,367 @@ +# German holiday definitions for the Ruby Holiday gem. +# +# Updated: 2019-02-10 +# +# Changes 2016-11-27: +# - Change de_sn_aux, de_th_aux to de_sn_sorbian (because it only is celebrated in Sorbian regions in Sachsen) and de_th_eichsfeld, to reflect region of Eichsfeld +# - Change de_sn_aux to de_by_augsburg to reflect only City of Augsburg +# +# Changes 2017-06-08: +# - Add Berlin, Bremen, Hamburg, Niedersachsen, Schleswig-Holstein +# - Change de_th_eichsfeld to de_th_cath because it affects the catholic communities Eichsfeld, Unstrut-Hainich-Kreis and Wartburgkreis +# - Merge Fronleichnam entry +# - Add de_by_cath for catholic communities in Bavaria; Maria Himmelfahrt is not a Bavaria-wide holiday +# - Mariä Himmelfahrt is celebrated in the community of Augsburg (de_by_augsburg) +# - Enhance tests +# +# Changes 2017-09-25: +# - Correct definition for Reformation Day +# +# Changes 2018-09-10: +# - Reformation Day has been added as a new holiday in Bremen, Hamburg, Lower Saxony and Schleswig-Holstein, starting in 2018. +# +# Change 2019-02-10: +# - Changing usage of 'year_ranges.after' to 'year_ranges.from', see https://github.com/holidays/definitions/issues/117 +# +# Sources: +# - http://en.wikipedia.org/wiki/Holidays_in_Germany +# - http://www.timeanddate.com/calendar/index.html?country=8 +# - http://www.germany.info/relaunch/welcome/travel/holidays.html +# - https://www.statistik.bayern.de/statistik/bevoelkerungsstand/00141.php +# - http://www.thueringen.de/mam/th3/tim/verwaltungsrecht/fronleichnam_gemeindeschluesselzahlen.pdf +--- +months: + 0: + - name: Karfreitag + regions: [de] + function: easter(year) + function_modifier: -2 + - name: Ostersonntag + regions: [de] + function: easter(year) + type: informal + - name: Ostermontag + regions: [de] + function: easter(year) + function_modifier: 1 + - name: Christi Himmelfahrt + regions: [de] + function: easter(year) + function_modifier: 39 + - name: Pfingstsonntag + regions: [de] + function: easter(year) + function_modifier: 49 + type: informal + - name: Pfingstmontag + regions: [de] + function: easter(year) + function_modifier: 50 + - name: Fronleichnam + regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn_sorbian, de_th_cath] + function: easter(year) + function_modifier: 60 + - name: Weiberfastnacht + regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn] + function: easter(year) + function_modifier: -52 + type: informal + - name: Rosenmontag + regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn] + function: easter(year) + function_modifier: -48 + type: informal + - name: Aschermittwoch + regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn] + function: easter(year) + function_modifier: -46 + type: informal + 1: + - name: Neujahrstag + regions: [de] + mday: 1 + - name: Heilige Drei Könige + regions: [de_bw, de_by, de_st] + mday: 6 + 3: + - name: Internationaler Frauentag + regions: [de_be] + mday: 8 + year_ranges: + from: 2019 + 5: + - name: Tag der Arbeit + regions: [de] + mday: 1 + - name: Tag der Befreiung + regions: [de_be] + mday: 8 + year_ranges: + limited: [2020] + 8: + - name: Mariä Himmelfahrt + regions: [de_by_cath, de_by_augsburg, de_sl] + mday: 15 + - name: Friedensfest + regions: [de_by_augsburg] + mday: 8 + 10: + - name: Tag der Deutschen Einheit + regions: [de] + mday: 3 + - name: Reformationstag + regions: [de_bb, de_mv, de_sn, de_st, de_th] + mday: 31 + - name: Reformationstag + regions: [de_bw] + mday: 31 + type: informal + - name: Reformationstag + regions: [de] + mday: 31 + year_ranges: + limited: [2017] + - name: Reformationstag + regions: [de_hb, de_hh, de_ni, de_sh] + mday: 31 + year_ranges: + from: 2018 + 11: + - name: Allerheiligen + regions: [de_bw, de_by, de_nw, de_rp, de_sl] + mday: 1 + - name: Buß- und Bettag + regions: [de_sn] + function: de_buss_und_bettag(year) + 12: + - name: Heilig Abend + regions: [de] + mday: 24 + type: informal + - name: 1. Weihnachtstag + regions: [de] + mday: 25 + - name: 2. Weihnachtstag + regions: [de] + mday: 26 + - name: Silvester + regions: [de] + mday: 31 + type: informal + +methods: + de_buss_und_bettag: + # Germany: Wednesday before November 23 + arguments: year + ruby: | + date = Date.civil(year,11,23) + if date.wday > 3 + date -= (date.wday - 3) + else + date -= (date.wday + 4) + end + date + +tests: + - given: + date: '2009-01-01' + regions: ["de"] + options: ["informal"] + expect: + name: "Neujahrstag" + - given: + date: '2009-04-10' + regions: ["de"] + options: ["informal"] + expect: + name: "Karfreitag" + - given: + date: '2009-04-12' + regions: ["de"] + options: ["informal"] + expect: + name: "Ostersonntag" + - given: + date: '2009-04-13' + regions: ["de"] + options: ["informal"] + expect: + name: "Ostermontag" + - given: + date: '2009-05-01' + regions: ["de"] + options: ["informal"] + expect: + name: "Tag der Arbeit" + - given: + date: '2009-05-21' + regions: ["de"] + options: ["informal"] + expect: + name: "Christi Himmelfahrt" + - given: + date: '2009-05-31' + regions: ["de"] + options: ["informal"] + expect: + name: "Pfingstsonntag" + - given: + date: '2009-06-01' + regions: ["de"] + options: ["informal"] + expect: + name: "Pfingstmontag" + - given: + date: '2009-10-03' + regions: ["de"] + options: ["informal"] + expect: + name: "Tag der Deutschen Einheit" + - given: + date: '2009-12-24' + regions: ["de"] + options: ["informal"] + expect: + name: "Heilig Abend" + - given: + date: '2009-12-25' + regions: ["de"] + options: ["informal"] + expect: + name: "1. Weihnachtstag" + - given: + date: '2009-12-26' + regions: ["de"] + options: ["informal"] + expect: + name: "2. Weihnachtstag" + - given: + date: '2009-12-31' + regions: ["de"] + options: ["informal"] + expect: + name: "Silvester" + - given: + date: '2009-01-06' + regions: ["de_bw", "de_by", "de_st", "de_"] + expect: + name: "Heilige Drei Könige" + - given: + date: '2009-06-11' + regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn_sorbian", "de_th_cath"] + expect: + name: "Fronleichnam" + - given: + date: '2009-08-15' + regions: ["de_by", "de_sl", "de_"] + expect: + name: "Mariä Himmelfahrt" + - given: + date: '2009-10-31' + regions: ["de_bb", "de_mv", "de_sn", "de_st", "de_th", "de_"] + expect: + name: "Reformationstag" + - given: + date: '2009-10-31' + regions: ["de_bw"] + options: ["informal"] + expect: + name: "Reformationstag" + - given: + date: '2017-10-31' + regions: ["de"] + expect: + name: "Reformationstag" + - given: + date: '2016-10-31' + regions: ["de"] + expect: + holiday: false + - given: + date: '2018-10-31' + regions: ["de"] + expect: + holiday: false + - given: + date: '2018-10-31' + regions: ["de_bb", "de_hb", "de_hh", "de_mv", "de_ni", "de_sh", "de_sn", "de_st", "de_th"] + expect: + name: "Reformationstag" + - given: + date: '2009-11-01' + regions: ["de_bw", "de_by", "de_nw", "de_rp", "de_sl", "de_"] + expect: + name: "Allerheiligen" + - given: + date: '2015-08-08' + regions: ["de_by_augsburg"] + expect: + name: "Friedensfest" + - given: + date: '2015-08-08' + regions: ["de", "de_bw", "de_by", "de_bb", "de_he", "de_mv", "de_nw", "de_rp", "de_sl", "de_sn", "de_st", "de_th"] + expect: + holiday: false + - given: + date: '2010-05-08' + regions: ["de"] + expect: + holiday: false + - given: + date: '2010-08-08' + regions: ["de"] + expect: + holiday: false + - given: + date: '2004-11-17' + regions: ["de_sn"] + expect: + name: "Buß- und Bettag" + - given: + date: '2005-11-16' + regions: ["de_sn"] + expect: + name: "Buß- und Bettag" + - given: + date: '2006-11-22' + regions: ["de_sn"] + expect: + name: "Buß- und Bettag" + - given: + date: '2009-11-18' + regions: ["de_sn"] + expect: + name: "Buß- und Bettag" + - given: + date: '2016-02-04' + regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn"] + options: ["informal"] + expect: + name: "Weiberfastnacht" + - given: + date: '2016-02-08' + regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn"] + options: ["informal"] + expect: + name: "Rosenmontag" + - given: + date: '2016-02-10' + regions: ["de_bw", "de_by", "de_he", "de_nw", "de_rp", "de_sl", "de_sn"] + options: ["informal"] + expect: + name: "Aschermittwoch" + - given: + date: '2018-03-08' + regions: ["de_be"] + expect: + holiday: false + - given: + date: '2019-03-08' + regions: ["de_be"] + expect: + name: "Internationaler Frauentag" + - given: + date: '2020-05-08' + regions: ["de_be"] + expect: + name: "Tag der Befreiung" diff --git a/vendor/holidays/definitions/dk.yaml b/vendor/holidays/definitions/dk.yaml new file mode 100644 index 00000000..155cf3bb --- /dev/null +++ b/vendor/holidays/definitions/dk.yaml @@ -0,0 +1,208 @@ +# Danish holiday definitions for the Ruby Holiday gem. +# +# Updated: 2008-11-22. +# Sources: +# - http://en.wikipedia.org/wiki/Holidays_in_Denmark +# - http://www.amblondon.um.dk/en/menu/AboutDenmark/PublicHolidaysInDK/PublicHolidaysinDenmark-until2010.htm +# - http://borger.dk/forside/kirke-og-tro/folkekirken/officielle-helligdage +--- +months: + 0: + - name: Fastelavn + regions: [dk] + function: easter(year) + function_modifier: -49 + type: informal + - name: Palmesøndag + regions: [dk] + function: easter(year) + function_modifier: -7 + type: informal + - name: Skærtorsdag + regions: [dk] + function: easter(year) + function_modifier: -3 + - name: Langfredag + regions: [dk] + function: easter(year) + function_modifier: -2 + - name: Påskedag + regions: [dk] + function: easter(year) + - name: 2. påskedag + regions: [dk] + function: easter(year) + function_modifier: 1 + - name: Store Bededag + regions: [dk] + function: easter(year) + function_modifier: 26 + - name: Kristi Himmelfartsdag + regions: [dk] + function: easter(year) + function_modifier: 39 + - name: Pinsedag + regions: [dk] + function: easter(year) + function_modifier: 49 + - name: 2. Pinsedag + regions: [dk] + function: easter(year) + function_modifier: 50 + 1: + - name: Nytårsdag + regions: [dk] + mday: 1 + 4: + - name: 1. april + regions: [dk] + mday: 1 + type: informal + - name: Danmarks besættelse + regions: [dk] + mday: 9 + type: informal + - name: Dronningens fødselsdag + regions: [dk] + mday: 16 + type: informal + 5: + - name: Arbejdernes kampdag + regions: [dk] + mday: 1 + type: informal + - name: Danmarks befrielse + regions: [dk] + mday: 5 + type: informal + 6: + - name: Grundlovsdag + regions: [dk] + mday: 5 + type: informal + - name: Valdemarsdag og Genforeningsdag + regions: [dk] + mday: 15 + type: informal + - name: Sankt Hans aften + regions: [dk] + mday: 23 + type: informal + 11: + - name: Mortensaften + regions: [dk] + mday: 10 + type: informal + 12: + - name: Sankt Lucia + regions: [dk] + mday: 13 + type: informal + - name: Juleaftensdag + regions: [dk] + mday: 24 + type: informal + - name: 1. juledag + regions: [dk] + mday: 25 + - name: 2. juledag + regions: [dk] + mday: 26 + +tests: + - given: + date: '2007-01-01' + regions: ["dk"] + options: ["informal"] + expect: + name: "Nytårsdag" + - given: + date: '2007-02-18' + regions: ["dk"] + options: ["informal"] + expect: + name: "Fastelavn" + - given: + date: '2007-04-09' + regions: ["dk"] + options: ["informal"] + expect: + name: "2. påskedag" + - given: + date: '2007-04-16' + regions: ["dk"] + options: ["informal"] + expect: + name: "Dronningens fødselsdag" + - given: + date: '2007-04-05' + regions: ["dk"] + options: ["informal"] + expect: + name: "Skærtorsdag" + - given: + date: '2007-04-06' + regions: ["dk"] + options: ["informal"] + expect: + name: "Langfredag" + - given: + date: '2007-04-08' + regions: ["dk"] + options: ["informal"] + expect: + name: "Påskedag" + - given: + date: '2007-05-01' + regions: ["dk"] + options: ["informal"] + expect: + name: "Arbejdernes kampdag" + - given: + date: '2007-05-04' + regions: ["dk"] + options: ["informal"] + expect: + name: "Store Bededag" + - given: + date: '2007-05-17' + regions: ["dk"] + options: ["informal"] + expect: + name: "Kristi Himmelfartsdag" + - given: + date: '2007-05-27' + regions: ["dk"] + options: ["informal"] + expect: + name: "Pinsedag" + - given: + date: '2007-05-28' + regions: ["dk"] + options: ["informal"] + expect: + name: "2. Pinsedag" + - given: + date: '2007-06-05' + regions: ["dk"] + options: ["informal"] + expect: + name: "Grundlovsdag" + - given: + date: '2007-12-24' + regions: ["dk"] + options: ["informal"] + expect: + name: "Juleaftensdag" + - given: + date: '2007-12-25' + regions: ["dk"] + options: ["informal"] + expect: + name: "1. juledag" + - given: + date: '2007-12-26' + regions: ["dk"] + options: ["informal"] + expect: + name: "2. juledag" diff --git a/vendor/holidays/definitions/doc/CONTRIBUTING.md b/vendor/holidays/definitions/doc/CONTRIBUTING.md new file mode 100644 index 00000000..46f82e1a --- /dev/null +++ b/vendor/holidays/definitions/doc/CONTRIBUTING.md @@ -0,0 +1,34 @@ +# How to contribute + +In this repository we have all of the definitions that are used in holiday calcuations. We rely on users around the world to help keep our definitions accurate and up to date. + +## Code of Conduct + +Please read our [Code of Conduct](https://github.com/holidays/holidays/blob/master/CODE_OF_CONDUCT.md) before contributing. Everyone interacting with this project (or associated projects) is expected to abide by its terms. + +## Definition Updates + +Our definitions are written in YAML. You can find a complete guide to our format in the [syntax docs](SYNTAX.md). We take the YAML definitions and generate final definition files in the various projects that are loaded at runtime for fast calculations. + +Here are the steps to take once you have a good idea on what you want to change: + +* Fork this repository +* Edit desired definition YAML file(s). If you are adding a new region be sure to update `index.yaml` as well +* Run `make validate` to ensure that all updates match our definition format +* Open a PR with your changes + +Including documentation with your updates is very much appreciated. A simple Wikipedia entry or government link in the comments alongside your changes would be perfect. + +Lastly, note that there are many 'meta' regions. For example, there are regions for Europe, Scandinavia, and North America. If your new region(s) falls into these areas consider adding them. You can find these 'meta' regions in `definitions/index.yaml`. + +Don't worry about versioning, we'll handle it on our end. + +*Tests are required for new definitions*. + +## Definition Validation + +We maintain a `make validate` command to ensure that all YAML definitions match our internal specifications. This is to make working with this repository as independent as possible from the other repositories (like the existing ruby repository). If `make validate` passes then we ensure that anything consuming these files will receive 'correct' formats. + +If you run into any weird `make validate` errors please open an issue or PR and highlight to what you are seeing. The validation code is brand-new and might have issues. Maintainers will respond quickly to any open problems. + +If you would like to add to, update, or otherwise fix any of our specs then please fork and submit a PR like you would any other change. Please note that we require 100% test coverage. Your builds will not pass if you fall below 100%. diff --git a/vendor/holidays/definitions/doc/MAINTAINERS.md b/vendor/holidays/definitions/doc/MAINTAINERS.md new file mode 100644 index 00000000..3827d55d --- /dev/null +++ b/vendor/holidays/definitions/doc/MAINTAINERS.md @@ -0,0 +1,39 @@ +# Maintainers guide + +This document outlines the process of releasing an update of the definitions in this repository. Please note +that this document does NOT try to explain how to create packages for various languages. It is *just* +for creating version snapshots of definition files. + +To be as clear as possible: this repository is *just* for definition updates. We 'release' updates as tags in Github +but do not push any code updates. Downstream projects (like ruby) will consume this and make their own appropriate releases. +The 'releases' in this project are mainly for organizational purposes. + +### Who this document is for + +This document is for maintainers that have merge access to this repository. Generally these people will also have access to any +language-specific libraries and so this will be a part of the entire release process. Usually other libraries (like the ruby library) +will reference this document as part of its own release process. + +Please note that a core contributor must provide the relevant Github access so that you can perform merges. If you have any issues +please contact the [core members](https://github.com/orgs/holidays/teams/core/members) for assistance. + +### Setup + +This guide assumes that you have forked the repository in Github. If you require assistance in this please contact the core members listed above. + +### Merging new definition changes + +When new PRs are submitted you can navigate the following steps: + +* Make sure that the PR Travis CI builds are green. If they are green then you can simply continue. If there are errors you +will need to investigate further (contact a core member for assistance). +* If the builds are green and the changes look reasonable to you then go ahead and merge! +* Once the merges are done, make a new branch on your fork that includes an updated [CHANGELOG](https://github.com/holidays/definitions/blob/master/CHANGELOG.md) +that has the new version and associated changes. This is pretty open-ended! Include the information that you feel is +important. Use past CHANGELOG updates as a guide. +* Open a PR against the CHANGELOG branch and merge it (this may require another maintainer for safety) +* Once the updated CHANGELOG is merged, go to [releases](https://github.com/holidays/definitions/releases) and create a new release. It should point at the latest commit that contains the changes that you want included in this release. If you just merged then you can just point at master. All release versions follow this format: `vMAJOR.MINOR.PATCH`. This should follow normal [semver rules](https://semver.org/). + +You don't need to list out the specific changes that were made on the release description. You can just give a general overview and then link to the updated CHANGELOG that you did in a previous step. Example: [v2.2.0](https://github.com/holidays/definitions/releases/tag/v2.2.0) + +Once the release is created in Github you are done! The definitions have been 'released' and downstream projects (right now just ruby) can reference them without issues. See the maintainers guides in downstream projects for information on how to release updates for each language. diff --git a/vendor/holidays/definitions/doc/SYNTAX.md b/vendor/holidays/definitions/doc/SYNTAX.md new file mode 100644 index 00000000..f909fbba --- /dev/null +++ b/vendor/holidays/definitions/doc/SYNTAX.md @@ -0,0 +1,435 @@ +# Holiday Definition Syntax + +The definition syntax is a custom format developed over the life of this project. All holidays are defined in these YAML files. These definition files have three main top-level properties: + +* `months` - this is the meat! All definitions for months 1-12 are defined here +* `methods` - this contains any custom logic that your definitions require +* `tests` - this contains the tests for your definitions + +The `months` property is required. The two other properties are not strictly required but are almost always used. + +In fact, if you leave out `tests` your PR will probably not be accepted unless there is a very, very good reason for leaving it out. + +## Key Words + +There are some terms that you should be familiar with before we dive into each section: + +#### `region` + +A region is a symbol that denotes the geographic or cultural region for that holiday. In general these symbols will be the [ISO 3166](https://en.wikipedia.org/wiki/ISO_3166) code for a country or region. + +##### Sub-region + +We also have a concept of a `sub-region`. These regions exist inside of a 'parent' region and inherit the parent's holidays. We use an underscore to specify a subregion. + +Examples: + +* `:us_dc` for Washington, D.C in `:us` +* `:ca_bc` for British Columbia in `:ca` + +Some sub-regions do not have a matching ISO 3116 entry. In these cases we attempt to choose symbols that are reasonably clear. + +##### Non-standard regions + +Before version v1.1.0 of the original ruby gem the compliance with ISO 3166 was not as strict. There might be cases where an existing region symbol does not match the ISO standard. + +Non-standard regions (e.g. `ecbtarget`, `federalreserve`, etc) must be all one word, just like a normal region. They must not use underscores or hyphens. + +#### `formal`/`informal` + +We consider `formal` dates as government-defined holidays. These could be the kinds of holidays where everyone stays home from work or perhaps are bank holidays but it is *not required* for a holiday to have these features to be considered formal. + +`Informal` holidays are holidays that everyone knows about but aren't enshrined in law. For example, Valentine's Day in the US is considered an informal holiday. + +We recognize that these definitions can be highly subjective. If you disagree with the current status of a holiday please open an issue so we can discuss it. + +#### `observed` + +There are certain holidays that can be legally observed on different days than they occur. For example, if a holiday falls on a Saturday but it is legally observed on the following Monday then you can define it as `observed` on the Monday. Please see the section below for more details and examples. + +## Months + +Holidays are grouped by month from 1 through 12. Each entry within a month can have several properties depending on the behavior of the holiday. Each section below lays out the various different ways you can define your holiday. + +The two required properties are: + +* `name` - The name of the holiday +* `regions` - One or more region codes (targeted to match [ISO 3166](https://en.wikipedia.org/wiki/ISO_3166)) + +### Dates defined by a fixed date (e.g. January 1st) + +* `mday` - A non-negative integer representing day of the month (1 through 31). + +For example, the following holiday is on the first of January and available in the `:ca`, `:us` and `:au` regions: + +```yaml +1: +- name: New Year's Day + regions: [ca, us, au] + mday: 1 +``` + +### Dates defined by a week number (e.g. first Monday of a month) + +* `wday` - A non-negative integer representing day of the week (0 = Sunday through 6 = Saturday). +* `week` - A non-negative integer representing week number (1 = first week, 3 = third week, -1 = last week), + +For example, the following holiday is on the first Monday of September and available in the `:ca` region: + +```yaml +9: +- name: Labour Day + regions: [ca] + week: 1 + wday: 1 +``` + +### 'Formal' vs 'Informal' types + +As mentioned above you can specify two different types. By default a holiday is considered 'formal'. By adding a `type: informal` to a definition you will mark it as 'informal' and it will only show up if the user specifically asks for it. + +Example: + +```yaml +9: +- name: Some Holiday + regions: [fr] + mday: 1 + type: informal +``` + +If a user submits: + +```ruby +Holidays.on(Date.civil(2016, 9, 1), :fr) +``` + +Then they will not see the holiday. However, if they submit: + +```ruby +Holidays.on(Date.civil(2016, 9, 1), :fr, :informal) +``` + +Then the holiday will be returned. This is especially useful for holidays like "Valentine's Day" in the USA, where it is commonly recognized as a holiday in society but not as a day that is celebrated by taking the day off. + +### Year ranges + +Certain holidays in various countries are only in effect during specific year ranges. A few examples of this are: + +* A new holiday that starts in 2017 and continues into the future +* An existing holiday that has been cancelled so that the final year in effect is 2019 +* A historical holiday that was only in effect from 2002 through 2006 + +To address these kinds of scenarios we have the ability to specify 'year ranges' for individual holiday definitions. There are a total of four selectors that can be specified. All must be specified in terms of 'years'. Only one selector can be used at a time. + +#### `until` + +The 'until' selector will only return a match if the supplied date takes place in the same year as the holiday or earlier. + +A single integer representing a year *must* be supplied. An array of values will result in an error. + +Example: + +```yaml +7: + name: 振替休日 + regions: [jp] + mday: 1 + year_ranges: + until: 2002 +``` + +This will return successfully since the date is before 2002: + +```ruby +Holidays.on(Date.civil(2000, 7, 1), :jp) +``` + +This will also return successfully since the date takes place on 2002 exactly: + +```ruby +Holidays.on(Date.civil(2002, 7, 1), :jp) +``` + +This will not since the date is after 2002: + +```ruby +Holidays.on(Date.civil(2016, 7, 1), :jp) +``` + +#### `from` + +The 'from' selector will only return a match if the supplied date takes place in the same year as the holiday or later. + +A single integer representing a year *must* be supplied. An array of values will result in an error. + +Example: + +```yaml +7: + name: 振替休日 + regions: [jp] + mday: 1 + year_ranges: + from: 2002 +``` + +This will return successfully since the date is after 2002: + +```ruby +Holidays.on(Date.civil(2016, 7, 1), :jp) +``` + +This will also return successfully since the date takes place on 2002 exactly: + +```ruby +Holidays.on(Date.civil(2002, 7, 1), :jp) +``` + +This will not since the date is before 2002: + +```ruby +Holidays.on(Date.civil(2000, 7, 1), :jp) +``` + +#### `limited` + +The 'limited' selector will only find a match if the supplied date takes place during +one of the specified years. Multiple years can be specified. + +An array of integers representing years *must* be supplied. Providing anything other than an array of integers will result in an error. + +Please note that this is *not* a range! This is an array of specific years during which the holiday is active. If you need a year range please see the `between` selector below. + +Example: + +```yaml +7: + name: 振替休日 + regions: [jp] + mday: 1 + year_ranges: + limited: [2002,2004] +``` + +Both of these examples will return successfully since the dates takes place in 2002 and 2004 exactly: + +```ruby +Holidays.on(Date.civil(2002, 7, 1), :jp) +Holidays.on(Date.civil(2004, 7, 1), :jp) +``` + +Neither of these will return since the dates takes place in outside of 2002 and 2004: + +```ruby +Holidays.on(Date.civil(2000, 7, 1), :jp) +Holidays.on(Date.civil(2003, 7, 1), :jp) +``` + +#### `between` + +The 'between' selector will only find a match if the supplied date takes place during the specified _inclusive_ range of years. + +To use this selector you *must* provide both a `start` and `end` key. Both values must be integers representing years. + +Example: + +```yaml +7: + name: 振替休日 + regions: [jp] + mday: 1 + year_ranges: + between: + start: 1996 + end: 2002 +``` + +These examples will return successfully since they take place within the specified range: + +```ruby +Holidays.on(Date.civil(1996, 7, 1), :jp) +Holidays.on(Date.civil(2000, 7, 1), :jp) +Holidays.on(Date.civil(2002, 7, 1), :jp) +``` + +These will not since both are outside of the specified start/end range: + +```ruby +Holidays.on(Date.civil(2003, 7, 1), :jp) +Holidays.on(Date.civil(1995, 7, 1), :jp) +``` + +## Methods + +Sometimes you need to perform a complex calculation to determine a holiday. To facilitate this we allow for users to specify custom methods to calculate a date. These should be placed under the `methods` property. Methods named in this way can then be referenced by entries in the `months` property. + +#### Important note + +One thing to note is that these methods are _language specific_ at this time, meaning we would have one for ruby, one for golang, etc. Coming up with a standardized way to represent the logic in the custom-written methods proved to be very difficult. This is a punt until we can come up with a better solution. + +Please feel free to only add the custom method source in the language that you choose. It will be up to downstream maintainers to ensure that their language has an implementation. So if you only want to add it in ruby please just do that! + +### Method Example + +Canada celebrates Victoria Day, which falls on the Monday on or before May 24. Under the `methods` property we would create a custom method for ruby that returns a Date object: + +```yaml +methods: + ca_victoria_day: + arguments: year + ruby: | + date = Date.civil(year, 5, 24) + if date.wday > 1 + date -= (date.wday - 1) + elsif date.wday == 0 + date -= 6 + end + + date +``` + +This could then be used in a `months` entry: + +```yaml +5: +- name: Victoria Day + regions: [ca] + function: ca_victoria_day(year) +``` + +### Available arguments + +You may only specify the following values for arguments into a custom method: `date`, `year`, `month`, `day`, `region` + +Correct example: + +```yaml +1: +- name: Custom Method + regions: [us] + function: custom_method(year, month, day) +``` + +The following will return an error since `week` is not a recognized argument: + +```yaml +1: +- name: Custom Method + regions: [us] + function: custom_method(week) +``` + +#### Whaa? Why do you restrict what I can pass in? + +This was done as an attempt to make it easier for the downstream projects to parse and use the custom methods. They have to be able to pass in the required data so we limit it to make that process easier. + +We can add to this list if your custom logic needs something else! Open an issue with your use case and we can discuss it. + +### Methods without a fixed month + +If a holiday does not have a fixed month (e.g. Easter) it should go in the '0' month: + +```yaml +0: +- name: Easter Monday + regions: [ca] + function: easter(year) +``` + +### Pre-existing methods + +There are pre-existing methods for highly-used calculations. You can reference these methods in your definitions as you would a custom method that you have written: + +* `easter(year)` - calculates Easter via Gregorian calendar for a given year +* `orthodox_easter(year)` - calculates Easter via Julian calendar for a given year +* `to_monday_if_sunday(date)` - returns date of the following Monday if the 'date' argument falls on a Sunday +* `to_monday_if_weekend(date)` - returns date of the following Monday if the 'date' argument falls on a weekend (Saturday or Sunday) +* `to_weekday_if_boxing_weekend(date)` - returns nearest following weekday if the 'date' argument falls on Boxing Day +* `to_weekday_if_boxing_weekend_from_year(year)` - calculates nearest weekday following Boxing weekend for given year +* `to_weekday_if_weekend(date)` - returns nearest weekday (Monday or Friday) if 'date' argument falls on a weekend (Saturday or Sunday) + +*Protip*: you can use the `easter` methods to calculate all of the dates that are based around Easter. It's especially useful to use since the Easter calculation is complex. For example, 'Good Friday' in the US is 2 days before Easter. Therefore you could do the following: + +``` +0: +- name: Good Friday + regions: [us] + function: easter(year) + function_modifier: -2 + type: informal +``` + +Use the `function_modifier` property, which can be positive or negative, to modify the result of the function. + +### Calculating observed dates + +Users can specify that this gem only return holidays on their 'observed' day. This can be especially useful if they are using this gem for business-related logic. If you wish for your definitions to allow for this then you can add the `observed` property to your entry. This requires a method to help calculate the observed day. + +Several built-in methods are available for holidays that are observed on varying dates. + +For example, for a holiday that is observed on Monday if it falls on a weekend you could write: + +``` +7: +- name: Canada Day + regions: [ca] + mday: 1 + observed: to_monday_if_weekend(date) +``` + +If a user does not specify `observed` in the options then 7/1 will be the date found for 'Canada Day', regardless of whether it falls on a Saturday or Sunday. If a user specifies 'observed' then it will show as the following Monday if the date falls on a Saturday or Sunday. + +## Tests + +All definition files should have tests included. At this time we do not enforce any rules on coverage or numbers of tests. However, in general, PRs will not be accepted if they are devoid of tests that cover the changes in question. + +The format is a straightforward 'given/expect'. Here is a simple example: + +```yaml +- given: + date: '2018-1-1' + regions: ["ex"] + expect: + name: "Example Holiday" +``` + +Here are format details: + +* given (required) + * date (required) - all dates must be in 'YYYY-MM-DD' format. Either a single day or an array of dates can be used. + * regions (required) - an array of strings (NOT symbols). Multiple regions can be passed. Even a single region must be in an array. + * options (optional) - an array of options to use for this test. Can be either 'informal' or 'observed'. Must be an array of strings, e.g. `['informal', 'observed']` +* expect (required) + * name (optional) - the name of the holiday you are expecting. Must be a string. + * holiday (optional) - a boolean indicating whether the given values result in a holiday. Defaults to 'true' if not present. Must be true or false. + +One or the other of the `expect` keys is required. If you do not specify a `name` then you should set `holiday: false`. + +#### Test Examples + +First example shows multiple dates, multiple regions, additional options, and an expectation that the result will be the named holiday: + +```yaml +- given: + date: ['2018-1-1', '2019-3-5'] + regions: ["ex", "ex2", "ex3"] + options: ["informal"] + expect: + name: "Example Holiday" +``` + +Second example shows multiple dates, a single region, multiple options, and an expectation that the given values will *not* result in a found holiday. No name is required because...no holiday is expected to be found. + +```yaml +- given: + date: ['2022-12-1', '2019-4-1', '2046-8-8] + regions: ["ex"] + options: ["informal", "observed"] + expect: + holiday: false +``` + +These tests will be picked up by the `generate` process in the client repositories and written into actual tests in the given language that are run when a user executes the test suite. + +Please please please include tests. Your PR won't be accepted if tests are not included with your changes. diff --git a/vendor/holidays/definitions/doc/architecture/README.md b/vendor/holidays/definitions/doc/architecture/README.md new file mode 100644 index 00000000..38f6012e --- /dev/null +++ b/vendor/holidays/definitions/doc/architecture/README.md @@ -0,0 +1,15 @@ +# Architecture Decision Records + +Here we document decisions we made regarding high level architecture/design of this repository. + +For details on what ADR is and why it's important, please reference the following blog posts: + + - https://product.reverb.com/documenting-architecture-decisions-the-reverb-way-a3563bb24bd0 + - http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions + +Please note that we only began keeping ADRs for this project in October of 2018. Decisions made before that are not covered. + +## Table of contents + + 1. [Language specific custom methods](adr-001.md) + 1. [Year ranges syntax update](adr-002.md) diff --git a/vendor/holidays/definitions/doc/architecture/adr-001.md b/vendor/holidays/definitions/doc/architecture/adr-001.md new file mode 100644 index 00000000..65e64013 --- /dev/null +++ b/vendor/holidays/definitions/doc/architecture/adr-001.md @@ -0,0 +1,86 @@ +# ADR 1: Custom Methods Format Change + +## Context + +We would like these definitions to be usable by any language. The original `holidays` project was written purely in `ruby` but the definitions were generally plain `YAML`. + +The issue is that `ruby` has been sprinkled into the otherwise plain `YAML` when it made sense with no plan for use outside of `ruby`. This makes sense when you are never planning on using the `YAML` files in other languages. + +Over time we have [been working](https://github.com/holidays/definitions/issues/7) to make the syntax more generic so that other language implementations could consume them. The last hurdle was custom methods. + +An example of the original format: + +```yaml +methods: + ca_victoria_day: + arguments: year + source: | + date = Date.civil(year, 5, 24) + if date.wday > 1 + date -= (date.wday - 1) + elsif date.wday == 0 + date -= 6 + end + + date +``` + +As you can see the actual function is just plain `ruby`. + +After lots of trial and error I have decided that I cannot see a generic format for this logic that would satisfy all use cases for existing custom methods in our definitions. While some custom methods are relatively simple `if/else` statements there are many that are much more complicated. + +An example of a 'complicated' custom method from the `ch` (Swiss) region: + +```yaml + ch_vd_lundi_du_jeune_federal: + # Monday after the third Sunday of September + arguments: year + ruby: | + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # There are 15 days between the first Sunday + # and the Monday after the third Sunday + date + 15 +``` + +The logic itself is not hard to follow but coming up with a generic way to phrase this seems like a complex problem. Every attempt that was made devolved into very complex parsers of nested `YAML` so that we correctly handled each new edge case that appeared. It was very slow going and the complexity was growing and growing. + +Additionally, having a complex `YAML` syntax for custom methods would require each downstream repository to implement the 'standard'. That seems pretty scary to think about maintaining. + +The other option is to just make each future language provide their own implementations. + +## Decision + +The decision is to simply require language-specific implementations of custom methods. Since all custom methods are currently in `ruby` we are changing every `source` field to `ruby`. In the future new languages will need to provide their own implementations. For example, we could add a `golang` or `swift` section next to the existing `ruby` section. + +There are three significant advantages: + + - It is very easy to understand + - All holidays using custom methods have tests so each downstream project will have built-in protection in case a bug is introduced in only one language implementation + - It is very easy to implement for the current `ruby` implementation (which is our only project currently) + +There are significant downsides: + + - Possible divergence between languages due to separate implementations, causing confusion and frustration + - More pressure on maintainers to handle the various implementations, ensuring they can build without issues when new custom methods are added + - Confusion for new contributors who may only be comfortable in a single language + - New downstream languages will have a higher hurdle to overcome since they will need to implement the existing logic in their own language + +In the end I don't want to hold things up because of _possible_ new language implementations that might show up in the future. I personally want to create a new `golang` version of `holidays` but beyond that maybe no one else will consume these definitions! + +If the `holidays` projects become wildly popular in the future and this becomes a huge problem then I can address it with the (presumably huge) community to find a solution. + +## Consequences + +We might lose contributions due to confusion or fear. + +We might burn out maintainers if the juggling of languages becomes too much of a burden. + +This puts more pressure for the completion of an updated [test framework](https://github.com/holidays/definitions/issues/42) for downstream repositories. + +## Status + +Accepted. diff --git a/vendor/holidays/definitions/doc/architecture/adr-002.md b/vendor/holidays/definitions/doc/architecture/adr-002.md new file mode 100644 index 00000000..ced10e52 --- /dev/null +++ b/vendor/holidays/definitions/doc/architecture/adr-002.md @@ -0,0 +1,64 @@ +# ADR 2: Year ranges syntax update + +## Context + +#### Original year range behavior + +Starting in [v3.2.0](https://github.com/holidays/holidays/releases/tag/v3.2.0) of the ruby gem [\[1\]](#footnote-1) we have had the ability to specify year ranges for specific holidays. This allows for a holiday +to only be considered 'valid' or 'active' based on specific criteria surrounding years. The available criteria were: + +* `before` - holiday only valid if it takes place on the target year or before +* `after` - holiday only valid if it takes place on the target year or after +* `limited` - holiday only valid if it takes place on at least one of an array of target years (e.g. [2002, 2004]) +* `between` - holiday only valid if it takes place between an inclusive year range (e.g. 2002..2004) + +This change added useful functionality and its use has since spread to multiple regions. + +#### Confusion about criteria behavior + +On January 24th, 2019 [an issue was opened](https://github.com/holidays/definitions/issues/117) expressing that the `before` and `after` criteria were named in a confusing manner since it was not clear whether they operated inclusively or exclusively on the target year. + +As an example, the value `after: 2018` could be construed by some to mean the holiday is valid starting in 2019 and onward. In reality the current implementation is that the holiday is valid starting in 2018 itself and onward. + +While this is ultimately up to individual perception it is true that the current names do not provide strong guidance on how the definition will behave. + +## Decision + +The [above issue](https://github.com/holidays/definitions/issues/117) also contained a proposal to make the following changes: + +* Rename `before` to `until` +* Rename `after` to `from` + +These names give a clearer understanding of the desired behavior as `until` and `from` are more generally understood to indicate inclusivity rather than exclusivity. + +If we take the example from above and make the change then the value `from: 2018` would intend for the holiday to be valid/active starting in 2018 and onward. + +#### Additional changes + +While looking into the above issue I noticed two important things that will also be addressed alongside the above changes: + +* The definition validator does not currently prevent users from specifying multiple selectors at a time for a `year_ranges` entry and we perform no validation that these selectors do not conflict with one another. +* The `between` key currently accepts a string representation of a Ruby range (e.g. '2008..2012'). While this was not causing any issues today we would like to remove all Ruby-specific values from our definitions so that other languages could more easily parse them. + +To that end the following changes will also be made: + +* Update the definition validation to only allow a single selector per `year_ranges` entry and update all definitions to match. This will result no behavior changes but will make clear the expected behavior. +* `between` will no longer accept a ruby-like range string but instead require explicit `start` and `end` keys with integer values representing a year. + +## Consequences + +This change will require changing multiple files and wll result in a major semantic version bump for the definitions. In addition we will also need to make a similar breaking change in all consuming apps. + +There are mitigating factors, however. There are only a handful of existing definitions that use the `before`, `after`, or `between` keys and the only consuming app is the [ruby gem](https://github.com/holidays/holidays). This means our affected code is relatively small. + +Additionally there was already a plan in place to perform an unrelated breaking change in the gem. This means that we can bundle these breaking changes together and minimize the amount of version churn. + +## Status + +Accepted. + +## Footnotes + +##### footnote-1 + +In the original `holidays` ruby library all definitions were housed in the same directory. The definitions were split into a separate repository starting with [holidays gem v5.0.0](https://github.com/holidays/holidays/blob/master/CHANGELOG.md#500). diff --git a/vendor/holidays/definitions/ecbtarget.yaml b/vendor/holidays/definitions/ecbtarget.yaml new file mode 100644 index 00000000..636ead0e --- /dev/null +++ b/vendor/holidays/definitions/ecbtarget.yaml @@ -0,0 +1,74 @@ +# ECB TARGET Closing Days +# +# Updated: 2014-01-04. +# Sources: +# - http://www.ecb.europa.eu/home/html/holidays.en.html +# - http://www.ecb.europa.eu/press/pr/date/2000/html/pr001214_4.en.html +--- +months: + 0: + - name: Good Friday + regions: [ecbtarget] + function: easter(year) + function_modifier: -2 + - name: Easter Monday + regions: [ecbtarget] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [ecbtarget] + mday: 1 + 5: + - name: Labour Day + regions: [ecbtarget] + mday: 1 + 12: + - name: Christmas Day + regions: [ecbtarget] + mday: 25 + - name: Christmas Holiday + regions: [ecbtarget] + mday: 26 + +tests: + - given: + date: '2013-01-01' + regions: ["ecbtarget"] + expect: + name: "New Year's Day" + - given: + date: '2013-05-01' + regions: ["ecbtarget"] + expect: + name: "Labour Day" + - given: + date: '2013-03-29' + regions: ["ecbtarget"] + expect: + name: "Good Friday" + - given: + date: '2013-04-01' + regions: ["ecbtarget"] + expect: + name: "Easter Monday" + - given: + date: '2013-12-25' + regions: ["ecbtarget"] + expect: + name: "Christmas Day" + - given: + date: '2013-12-26' + regions: ["ecbtarget"] + expect: + name: "Christmas Holiday" + - given: + date: '2013-03-29' + regions: ["ecbtarget"] + expect: + name: "Good Friday" + - given: + date: '2013-04-01' + regions: ["ecbtarget"] + expect: + name: "Easter Monday" diff --git a/vendor/holidays/definitions/ee.yaml b/vendor/holidays/definitions/ee.yaml new file mode 100644 index 00000000..c5bd5dc3 --- /dev/null +++ b/vendor/holidays/definitions/ee.yaml @@ -0,0 +1,123 @@ +# Estonian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2017-05-25 +# +# Changes 2017-06-08: +# - Use small initial letters +# - Good Friday and Easter Sunday aren't informal +# - New Year's Day is always on January 1st +# - Correct Spring Day definition + +# - Enhance tests +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Estonia +# - https://www.riigiteataja.ee/akt/13276841?leiaKehtiv +--- +months: + 0: + - name: suur reede # Good Friday + regions: [ee] + function: easter(year) + function_modifier: -2 + - name: ülestõusmispühade 1. püha # Easter Sunday + regions: [ee] + function: easter(year) + - name: nelipühade 1. püha + regions: [ee] + function: easter(year) + function_modifier: 49 + 1: + - name: uusaasta # New Year's Day + regions: [ee] + mday: 1 + 2: + - name: iseseisvuspäev # Independence Day + regions: [ee] + mday: 24 + 5: + - name: kevadpüha # Spring Day + regions: [ee] + mday: 1 + 6: + - name: võidupüha ja jaanilaupäev # Victory Day + regions: [ee] + mday: 23 + - name: jaanipäev # Jaan's Day + regions: [ee] + mday: 24 + 8: + - name: taasiseseisvumispäev # Day of Restoration of Independence + regions: [ee] + mday: 20 + 12: + - name: jõululaupäev # Christmas Eve + regions: [ee] + mday: 24 + - name: esimene jõulupüha # Christmas Day + regions: [ee] + mday: 25 + - name: teine jõulupüha # Boxing Day + regions: [ee] + mday: 26 + +tests: + - given: + date: '2017-01-01' + regions: ["ee"] + expect: + name: "uusaasta" + - given: + date: '2017-2-24' + regions: ["ee"] + expect: + name: "iseseisvuspäev" + - given: + date: '2017-5-1' + regions: ["ee"] + expect: + name: "kevadpüha" + - given: + date: '2017-6-23' + regions: ["ee"] + expect: + name: "võidupüha ja jaanilaupäev" + - given: + date: '2017-6-24' + regions: ["ee"] + expect: + name: "jaanipäev" + - given: + date: '2017-8-20' + regions: ["ee"] + expect: + name: "taasiseseisvumispäev" + - given: + date: '2017-12-24' + regions: ["ee"] + expect: + name: "jõululaupäev" + - given: + date: '2017-12-25' + regions: ["ee"] + expect: + name: "esimene jõulupüha" + - given: + date: '2017-12-26' + regions: ["ee"] + expect: + name: "teine jõulupüha" + - given: + date: ['2017-4-14', '2018-3-30', '2019-4-19'] + regions: ["ee"] + expect: + name: "suur reede" + - given: + date: ['2017-4-16', '2018-4-1', '2019-4-21'] + regions: ["ee"] + expect: + name: "ülestõusmispühade 1. püha" + - given: + date: ['2017-6-4', '2018-5-20', '2019-6-9'] + regions: ["ee"] + expect: + name: "nelipühade 1. püha" diff --git a/vendor/holidays/definitions/el.yaml b/vendor/holidays/definitions/el.yaml new file mode 100644 index 00000000..79b30661 --- /dev/null +++ b/vendor/holidays/definitions/el.yaml @@ -0,0 +1,158 @@ +# Greek holiday definitions for the Ruby Holiday gem. +# +# Created: 2011-05-11. +# Sources: + # http://www.assa.org.au/edm.html + # http://fotios.org/node/1104 + # http://www.faqs.org/faqs/calendars/faq/ + # http://5dspace-time.org/Calendar/Algorithm.html - for offsets + # http://el.wikipedia.org/wiki/Επίσημες_αργίες_στην_Ελλάδα - for holidays + # http://www.eortologio.gr/arthra/pasxa.php - for holidays +--- +months: + 0: + - name: Μεγάλη Παρασκευή + regions: [el] + function: orthodox_easter(year) + function_modifier: -2 + - name: Μεγάλο Σάββατο + regions: [el] + function: orthodox_easter(year) + function_modifier: -1 + - name: Κυριακή του Πάσχα + regions: [el] + function: orthodox_easter(year) + - name: Δευτέρα του Πάσχα + regions: [el] + function: orthodox_easter(year) + function_modifier: 1 + - name: Καθαρά Δευτέρα + regions: [el] + function: orthodox_easter(year) + function_modifier: -48 + - name: Αγίου Πνεύματος + regions: [el] + function: orthodox_easter(year) + function_modifier: 50 + 1: + - name: Πρωτοχρονιά + regions: [el] + mday: 1 + - name: Θεοφάνεια + regions: [el] + mday: 6 + 3: + - name: Επέτειος της Επανάστασης του 1821 + regions: [el] + mday: 25 + 5: + - name: Πρωτομαγιά + regions: [el] + mday: 1 + 8: + - name: Κοίμηση της Θεοτόκου + regions: [el] + mday: 15 + 10: + - name: Επέτειος του Όχι + regions: [el] + mday: 28 + 12: + - name: Χριστούγεννα + regions: [el] + mday: 25 + - name: Δεύτερη ημέρα των Χριστουγέννων + regions: [el] + mday: 26 + +tests: + - given: + date: '2011-01-01' + regions: ["el"] + options: ["informal"] + expect: + name: "Πρωτοχρονιά" + - given: + date: '2011-01-06' + regions: ["el"] + options: ["informal"] + expect: + name: "Θεοφάνεια" + - given: + date: '2011-04-22' + regions: ["el"] + options: ["informal"] + expect: + name: "Μεγάλη Παρασκευή" + - given: + date: '1970-04-25' + regions: ["el"] + options: ["informal"] + expect: + name: "Μεγάλο Σάββατο" + - given: + date: '1985-04-14' + regions: ["el"] + options: ["informal"] + expect: + name: "Κυριακή του Πάσχα" + - given: + date: '2011-04-24' + regions: ["el"] + options: ["informal"] + expect: + name: "Κυριακή του Πάσχα" + - given: + date: '2027-05-02' + regions: ["el"] + options: ["informal"] + expect: + name: "Κυριακή του Πάσχα" + - given: + date: '2046-04-30' + regions: ["el"] + options: ["informal"] + expect: + name: "Δευτέρα του Πάσχα" + - given: + date: '2011-05-01' + regions: ["el"] + options: ["informal"] + expect: + name: "Πρωτομαγιά" + - given: + date: '2011-06-13' + regions: ["el"] + options: ["informal"] + expect: + name: "Αγίου Πνεύματος" + - given: + date: '2012-06-04' + regions: ["el"] + options: ["informal"] + expect: + name: "Αγίου Πνεύματος" + - given: + date: '2011-03-07' + regions: ["el"] + options: ["informal"] + expect: + name: "Καθαρά Δευτέρα" + - given: + date: '2012-02-27' + regions: ["el"] + options: ["informal"] + expect: + name: "Καθαρά Δευτέρα" + - given: + date: '2011-12-25' + regions: ["el"] + options: ["informal"] + expect: + name: "Χριστούγεννα" + - given: + date: '2011-12-26' + regions: ["el"] + options: ["informal"] + expect: + name: "Δεύτερη ημέρα των Χριστουγέννων" diff --git a/vendor/holidays/definitions/es.yaml b/vendor/holidays/definitions/es.yaml new file mode 100644 index 00000000..263c4f7a --- /dev/null +++ b/vendor/holidays/definitions/es.yaml @@ -0,0 +1,495 @@ +# Spanish holiday definitions for the Ruby Holiday gem. +# +# Including the Balearic Islands and the Canary Islands. +# +# Updated: 2008-11-29. +# +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Spain +# - http://www.timeanddate.com/calendar/index.html?country=16 +# +# Notes: +# - Valencia is encoded as both es_v and es_vc +months: + 0: + - name: Jueves Santo + regions: [es_pv, es_na, es_an, es_ib, es_cm, es_mu, es_m, es_ar, es_cl, es_cn, es_lo, es_ga, es_ce, es_o, es_ex] + function: easter(year) + function_modifier: -3 + - name: Viernes Santo + regions: [es] + function: easter(year) + function_modifier: -2 + - name: Lunes de Pascua + regions: [es_pv, es_ct, es_na, es_v, es_vc] + function: easter(year) + function_modifier: 1 + - name: Lunes de Pascua Granada + regions: [es_ct] + function: easter(year) + function_modifier: 50 + 1: + - name: Año Nuevo + regions: [es] + mday: 1 + observed: to_monday_if_sunday(date) + - name: Día de Reyes + regions: [es] + mday: 6 + observed: to_monday_if_sunday(date) + 2: + - name: Día de Andalucía + regions: [es_an] + mday: 28 + observed: to_monday_if_sunday(date) + 3: + - name: Día de las Islas Baleares + regions: [es_ib] + mday: 1 + observed: to_monday_if_sunday(date) + - name: San José + regions: [es_v, es_vc, es_cm, es_mu, es_m] + mday: 19 + observed: to_monday_if_sunday(date) + 4: + - name: Día de Castilla y León + regions: [es_cl] + mday: 23 + observed: to_monday_if_sunday(date) + - name: San Jorge, Día de Aragón + regions: [es_ar] + mday: 23 + observed: to_monday_if_sunday(date) + 5: + - name: Día del Trabajador + regions: [es] + mday: 1 + observed: to_monday_if_sunday(date) + - name: Fiesta de la Comunidad + regions: [es_m] + mday: 2 + observed: to_monday_if_sunday(date) + - name: Día de las Canarias + regions: [es_cn] + mday: 30 + observed: to_monday_if_sunday(date) + - name: Día de la Región Castilla-La Mancha + regions: [es_cm] + mday: 31 + observed: to_monday_if_sunday(date) + 6: + - name: Día de la Región de Murcia + regions: [es_mu] + mday: 9 + observed: to_monday_if_sunday(date) + - name: Día de La Rioja + regions: [es_lo] + mday: 9 + observed: to_monday_if_sunday(date) + - name: San Juan + regions: [es_ct, es_vc] + mday: 24 + 7: + - name: Santiago Apostol + regions: [es_ga] + mday: 23 + observed: to_monday_if_sunday(date) + 8: + - name: Asunción + regions: [es] + mday: 15 + observed: to_monday_if_sunday(date) + 9: + - name: Día de Ceuta + regions: [es_ce] + mday: 2 + observed: to_monday_if_sunday(date) + - name: Día de Asturias + regions: [es_o] + mday: 8 + observed: to_monday_if_sunday(date) + - name: Día de Extremadura + regions: [es_ex] + mday: 8 + - name: Fiesta Nacional de Cataluña + regions: [es_ct] + mday: 11 + observed: to_monday_if_sunday(date) + - name: La Mercè + regions: [es_ct] + mday: 24 + 10: + - name: Día de Valencia + regions: [es_vc, es_v] + mday: 9 + observed: to_monday_if_sunday(date) + - name: Día de la Hispanidad + regions: [es] + mday: 12 + observed: to_monday_if_sunday(date) + 11: + - name: Todos los Santos + regions: [es] + mday: 1 + observed: to_monday_if_sunday(date) + 12: + - name: Día de la Constitución + regions: [es] + mday: 6 + observed: to_monday_if_sunday(date) + - name: Inmaculada Concepción + regions: [es] + mday: 8 + observed: to_monday_if_sunday(date) + - name: Navidad del Señor + regions: [es] + mday: 25 + observed: to_monday_if_sunday(date) + - name: San Esteban + regions: [es_ib, es_ct] + mday: 26 + observed: to_monday_if_sunday(date) + +tests: + - given: + date: '2009-01-01' + regions: ["es"] + options: ["informal"] + expect: + name: "Año Nuevo" + - given: + date: '2009-01-06' + regions: ["es"] + options: ["informal"] + expect: + name: "Día de Reyes" + - given: + date: '2009-04-10' + regions: ["es"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2009-05-01' + regions: ["es"] + options: ["informal"] + expect: + name: "Día del Trabajador" + - given: + date: '2009-08-15' + regions: ["es"] + options: ["informal"] + expect: + name: "Asunción" + - given: + date: '2009-10-12' + regions: ["es"] + options: ["informal"] + expect: + name: "Día de la Hispanidad" + - given: + date: '2009-11-01' + regions: ["es"] + options: ["informal"] + expect: + name: "Todos los Santos" + - given: + date: '2009-12-06' + regions: ["es"] + options: ["informal"] + expect: + name: "Día de la Constitución" + - given: + date: '2009-12-08' + regions: ["es"] + options: ["informal"] + expect: + name: "Inmaculada Concepción" + - given: + date: '2009-12-25' + regions: ["es"] + options: ["informal"] + expect: + name: "Navidad del Señor" + - given: + date: '2009-04-09' + regions: ["es_pv"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_na"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_an"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_ib"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_cm"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_mu"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_m"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_ar"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_cl"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_cn"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_lo"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_ga"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_ce"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_o"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_ex"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-09' + regions: ["es_"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2009-04-13' + regions: ["es_pv"] + expect: + name: "Lunes de Pascua" + - given: + date: '2009-04-13' + regions: ["es_ct"] + expect: + name: "Lunes de Pascua" + - given: + date: '2009-04-13' + regions: ["es_na"] + expect: + name: "Lunes de Pascua" + - given: + date: '2009-04-13' + regions: ["es_v"] + expect: + name: "Lunes de Pascua" + - given: + date: '2009-04-13' + regions: ["es_vc"] + expect: + name: "Lunes de Pascua" + - given: + date: '2009-04-13' + regions: ["es_"] + expect: + name: "Lunes de Pascua" + - given: + date: '2009-04-09' + regions: ["es_an"] + expect: + name: "Jueves Santo" + - given: + date: '2009-03-19' + regions: ["es_v"] + expect: + name: "San José" + - given: + date: '2009-03-19' + regions: ["es_vc"] + expect: + name: "San José" + - given: + date: '2009-03-19' + regions: ["es_cm"] + expect: + name: "San José" + - given: + date: '2009-03-19' + regions: ["es_mu"] + expect: + name: "San José" + - given: + date: '2009-03-19' + regions: ["es_m"] + expect: + name: "San José" + - given: + date: '2009-03-19' + regions: ["es_"] + expect: + name: "San José" + - given: + date: '2009-04-23' + regions: ["es_cl"] + expect: + name: "Día de Castilla y León" + - given: + date: '2009-04-23' + regions: ["es_ar"] + expect: + name: "San Jorge, Día de Aragón" + - given: + date: '2009-04-23' + regions: ["es_"] + expect: + name: "Día de Castilla y León" + - given: + date: '2009-10-09' + regions: ["es_vc"] + expect: + name: "Día de Valencia" + - given: + date: '2009-10-09' + regions: ["es_v"] + expect: + name: "Día de Valencia" + - given: + date: '2009-10-09' + regions: ["es_"] + expect: + name: "Día de Valencia" + - given: + date: '2009-12-26' + regions: ["es_ib"] + expect: + name: "San Esteban" + - given: + date: '2009-12-26' + regions: ["es_ct"] + expect: + name: "San Esteban" + - given: + date: '2009-12-26' + regions: ["es_"] + expect: + name: "San Esteban" + - given: + date: '2012-01-01' + regions: ["es"] + expect: + name: "Año Nuevo" + - given: + date: '2012-01-02' + regions: ["es"] + options: ["observed"] + expect: + name: "Año Nuevo" + - given: + date: '2009-02-28' + regions: ["es_an"] + expect: + name: "Día de Andalucía" + - given: + date: '2009-03-01' + regions: ["es_ib"] + expect: + name: "Día de las Islas Baleares" + - given: + date: '2006-05-02' + regions: ["es_m"] + expect: + name: "Fiesta de la Comunidad" + - given: + date: '2006-05-30' + regions: ["es_cn"] + expect: + name: "Día de las Canarias" + - given: + date: '2009-05-31' + regions: ["es_cm"] + expect: + name: "Día de la Región Castilla-La Mancha" + - given: + date: '2009-06-09' + regions: ["es_mu"] + expect: + name: "Día de la Región de Murcia" + - given: + date: '2009-06-09' + regions: ["es_lo"] + expect: + name: "Día de La Rioja" + - given: + date: '2009-07-23' + regions: ["es_ga"] + expect: + name: "Santiago Apostol" + - given: + date: '2009-09-02' + regions: ["es_ce"] + expect: + name: "Día de Ceuta" + - given: + date: '2009-09-08' + regions: ["es_o"] + expect: + name: "Día de Asturias" + - given: + date: '2009-09-08' + regions: ["es_ex"] + expect: + name: "Día de Extremadura" + - given: + date: '2009-09-11' + regions: ["es_ct"] + expect: + name: "Fiesta Nacional de Cataluña" + - given: + date: '2020-06-01' + regions: ["es_ct"] + expect: + name: "Lunes de Pascua Granada" diff --git a/vendor/holidays/definitions/federalreserve.yaml b/vendor/holidays/definitions/federalreserve.yaml new file mode 100644 index 00000000..03312d3b --- /dev/null +++ b/vendor/holidays/definitions/federalreserve.yaml @@ -0,0 +1,364 @@ +# Federal reserve holidays definition for the Ruby Holiday gem. +# +# Updated: 2018-04-09 +# +# Sources: +# - http://www.federalreserve.gov/aboutthefed/k8.htm +--- +months: + 1: + - name: New Year's Day + regions: [federalreserve] + mday: 1 + observed: to_weekday_if_weekend(date) + - name: Birthday of Martin Luther King, Jr + week: 3 + wday: 1 + regions: [federalreserve] + 2: + - name: Washington's Birthday + week: 3 + wday: 1 + regions: [federalreserve] + 5: + - name: Memorial Day + week: -1 + wday: 1 + regions: [federalreserve] + 7: + - name: Independence Day + regions: [federalreserve] + mday: 4 + observed: to_weekday_if_weekend(date) + 9: + - name: Labor Day + week: 1 + regions: [federalreserve] + wday: 1 + 10: + - name: Columbus Day + week: 2 + regions: [federalreserve] + wday: 1 + 11: + - name: Veterans Day + regions: [federalreserve] + mday: 11 + observed: to_weekday_if_weekend(date) + - name: Thanksgiving Day + week: 4 + wday: 4 + regions: [federalreserve] + 12: + - name: Christmas Day + regions: [federalreserve] + mday: 25 + observed: to_weekday_if_weekend(date) + +tests: + - given: + date: '2012-01-02' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2012-01-16' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2012-02-20' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2012-05-28' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2012-07-04' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2020-07-03' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2012-09-03' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2012-10-08' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2012-11-12' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2012-11-22' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2012-12-25' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2013-01-01' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2013-01-21' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2013-02-18' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2013-05-27' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2013-07-04' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2013-09-02' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2013-10-14' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2013-11-11' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2013-11-28' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2013-12-25' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2014-01-01' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2014-01-20' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2014-02-17' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2014-05-26' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2014-07-04' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2014-09-01' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2014-10-13' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2014-11-11' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2014-11-27' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2014-12-25' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2015-01-01' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2015-01-19' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2015-02-16' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2015-05-25' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2015-07-03' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2015-09-07' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2015-10-12' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2015-11-11' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2015-11-26' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2015-12-25' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2016-01-01' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2016-01-18' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2016-02-15' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2016-05-30' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2016-07-04' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2016-09-05' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2016-10-10' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2016-11-11' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2016-11-24' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2016-12-26' + regions: ["federalreserve"] + options: ["observed"] + expect: + name: "Christmas Day" diff --git a/vendor/holidays/definitions/federalreservebanks.yaml b/vendor/holidays/definitions/federalreservebanks.yaml new file mode 100644 index 00000000..7055c5ae --- /dev/null +++ b/vendor/holidays/definitions/federalreservebanks.yaml @@ -0,0 +1,802 @@ +# Federal reserve holidays definition for the Ruby Holiday gem. +# Observed option applies to when banks are open: +# +# * If the holiday falls on a Saturday, it is not observed +# * If the holiday falls on a Sunday, it is observed on Monday +# +# Updated: 2019-01-31 +# +# Sources: +# - http://www.federalreserve.gov/aboutthefed/k8.htm +--- +months: + 1: + - name: New Year's Day + regions: [federalreservebanks] + mday: 1 + observed: to_monday_if_sunday(date) + - name: Birthday of Martin Luther King, Jr + week: 3 + wday: 1 + regions: [federalreservebanks] + 2: + - name: Washington's Birthday + week: 3 + wday: 1 + regions: [federalreservebanks] + 5: + - name: Memorial Day + week: -1 + wday: 1 + regions: [federalreservebanks] + 7: + - name: Independence Day + regions: [federalreservebanks] + mday: 4 + observed: to_monday_if_sunday(date) + 9: + - name: Labor Day + week: 1 + regions: [federalreservebanks] + wday: 1 + 10: + - name: Columbus Day + week: 2 + regions: [federalreservebanks] + wday: 1 + 11: + - name: Veterans Day + regions: [federalreservebanks] + mday: 11 + observed: to_monday_if_sunday(date) + - name: Thanksgiving Day + week: 4 + wday: 4 + regions: [federalreservebanks] + 12: + - name: Christmas Day + regions: [federalreservebanks] + mday: 25 + observed: to_monday_if_sunday(date) + +tests: + - given: + date: '2012-01-02' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2012-01-16' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2012-02-20' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2012-05-28' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2012-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2012-09-03' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2012-10-08' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2012-11-12' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2012-11-22' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2012-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2013-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2013-01-21' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2013-02-18' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2013-05-27' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2013-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2013-09-02' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2013-10-14' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2013-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2013-11-28' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2013-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2014-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2014-01-20' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2014-02-17' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2014-05-26' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2014-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2014-09-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2014-10-13' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2014-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2014-11-27' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2014-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2015-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2015-01-19' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2015-02-16' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2015-05-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + # Friday + date: '2015-07-03' + regions: ["federalreservebanks"] + options: ["observed"] + # 2015-07-04 is a Saturday, not observed + expect: + holiday: false + - given: + # Monday + date: '2015-07-06' + regions: ["federalreservebanks"] + options: ["observed"] + # 2015-07-04 is a Saturday, not observed + expect: + holiday: false + - given: + date: '2015-09-07' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2015-10-12' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2015-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2015-11-26' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2015-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2016-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2016-01-18' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2016-02-15' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2016-05-30' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2016-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2016-09-05' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2016-10-10' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2016-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2016-11-24' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2016-12-26' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2019-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2019-01-21' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2019-02-18' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2019-05-27' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2019-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2019-09-02' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2019-10-14' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2019-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2019-11-28' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2019-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2020-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2020-01-20' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2020-02-17' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2020-05-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + # Friday + date: '2020-07-03' + regions: ["federalreservebanks"] + options: ["observed"] + # 2020-07-04 is a Saturday, not observed + expect: + holiday: false + - given: + # Monday + date: '2020-07-06' + regions: ["federalreservebanks"] + options: ["observed"] + # 2020-07-04 is a Saturday, not observed + expect: + holiday: false + - given: + date: '2020-09-07' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2020-10-12' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2020-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2020-11-26' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2020-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2021-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2021-01-18' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2021-02-15' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2021-05-31' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + # Friday + date: '2021-07-02' + regions: ["federalreservebanks"] + options: ["observed"] + # 2021-07-04 is a Sunday, observed on Monday + expect: + holiday: false + - given: + # Monday + date: '2021-07-05' + regions: ["federalreservebanks"] + options: ["observed"] + # 2021-07-04 is a Sunday, observed on Monday + expect: + name: "Independence Day" + - given: + date: '2021-09-06' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2021-10-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2021-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2021-11-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + # Friday + date: '2021-12-24' + regions: ["federalreservebanks"] + options: ["observed"] + # 2021-12-25 is a Saturday, not observed + expect: + holiday: false + - given: + # Monday + date: '2021-12-27' + regions: ["federalreservebanks"] + options: ["observed"] + # 2021-12-25 is a Saturday, not observed + expect: + holiday: false + - given: + # Friday + date: '2021-12-31' + regions: ["federalreservebanks"] + options: ["observed"] + # 2022-01-01 is a Saturday, not observed + expect: + holiday: false + - given: + # Monday + date: '2022-01-03' + regions: ["federalreservebanks"] + options: ["observed"] + # 2022-01-01 is a Saturday, not observed + expect: + holiday: false + - given: + date: '2022-01-17' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2022-02-21' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2022-05-30' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2022-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2022-09-05' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2022-10-10' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2022-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2022-11-24' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + # Friday + date: '2022-12-23' + regions: ["federalreservebanks"] + options: ["observed"] + # 2022-12-25 is a Sunday, observed on Monday + expect: + holiday: false + - given: + # Monday + date: '2022-12-26' + regions: ["federalreservebanks"] + options: ["observed"] + # 2022-12-25 is a Sunday, observed on Monday + expect: + name: "Christmas Day" + - given: + # Friday + date: '2022-12-30' + regions: ["federalreservebanks"] + options: ["observed"] + # 2023-01-01 is a Sunday, observed on Monday + expect: + holiday: false + - given: + # Monday + date: '2023-01-02' + regions: ["federalreservebanks"] + options: ["observed"] + # 2023-01-01 is a Sunday, observed on Monday + expect: + name: "New Year's Day" + - given: + date: '2023-01-16' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2023-02-20' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2023-05-29' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2023-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2023-09-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2023-10-09' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + # Friday + date: '2023-11-10' + regions: ["federalreservebanks"] + options: ["observed"] + # 2023-11-11 is a Saturday, not observed + expect: + holiday: false + - given: + # Monday + date: '2023-11-13' + regions: ["federalreservebanks"] + options: ["observed"] + # 2023-11-11 is a Saturday, not observed + expect: + holiday: false + - given: + date: '2023-11-23' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2023-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2024-01-01' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2024-01-15' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Birthday of Martin Luther King, Jr" + - given: + date: '2024-02-19' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Washington's Birthday" + - given: + date: '2024-05-27' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2024-07-04' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2024-09-02' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2024-10-14' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Columbus Day" + - given: + date: '2024-11-11' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: '2024-11-28' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Thanksgiving Day" + - given: + date: '2024-12-25' + regions: ["federalreservebanks"] + options: ["observed"] + expect: + name: "Christmas Day" diff --git a/vendor/holidays/definitions/fedex.yaml b/vendor/holidays/definitions/fedex.yaml new file mode 100644 index 00000000..4b70880f --- /dev/null +++ b/vendor/holidays/definitions/fedex.yaml @@ -0,0 +1,102 @@ +# FedEx holiday definitions for the Ruby Holiday gem. +# +# By Adam Runner +# +# Updated: 2015-03-09. +# Source: http://www.fedex.com/us/service-guide/holiday-schedule.html +--- +months: + 1: + - name: New Year's Day + regions: [fedex] + mday: 1 + observed: to_weekday_if_weekend(date) + 5: + - name: Memorial Day + week: -1 + regions: [fedex] + wday: 1 + 7: + - name: Independence Day + regions: [fedex] + mday: 4 + observed: to_weekday_if_weekend(date) + 9: + - name: Labor Day + week: 1 + regions: [fedex] + wday: 1 + 11: + - name: Thanksgiving + week: 4 + regions: [fedex] + wday: 4 + - name: Day After Thanksgiving + function: day_after_thanksgiving(year) + regions: [fedex] + 12: + - name: Christmas Day + regions: [fedex] + mday: 25 + observed: to_weekday_if_weekend(date) + - name: New Year's Eve + regions: [fedex] + mday: 31 + +methods: + day_after_thanksgiving: + arguments: year + ruby: | + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1 + +tests: + - given: + date: '2015-01-01' + regions: ["ups"] + expect: + name: "New Year's Day" + - given: + date: '2015-05-25' + regions: ["ups"] + expect: + name: "Memorial Day" + - given: + date: '2015-07-04' + regions: ["ups"] + expect: + name: "Independence Day" + - given: + date: '2015-09-07' + regions: ["ups"] + expect: + name: "Labor Day" + - given: + date: '2015-11-26' + regions: ["ups"] + expect: + name: "Thanksgiving" + - given: + date: '2015-11-27' + regions: ["ups"] + expect: + name: "Day After Thanksgiving" + - given: + date: '2013-11-28' + regions: ["ups"] + expect: + name: "Thanksgiving" + - given: + date: '2013-11-29' + regions: ["ups"] + expect: + name: "Day After Thanksgiving" + - given: + date: '2015-12-25' + regions: ["ups"] + expect: + name: "Christmas Day" + - given: + date: '2015-12-31' + regions: ["ups"] + expect: + name: "New Year's Eve" diff --git a/vendor/holidays/definitions/fi.yaml b/vendor/holidays/definitions/fi.yaml new file mode 100644 index 00000000..0a7447f3 --- /dev/null +++ b/vendor/holidays/definitions/fi.yaml @@ -0,0 +1,234 @@ +# Finnish holiday definitions for the Ruby Holiday gem. +# +# Updated: 2010-12-28. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Finland +--- +months: + 0: + - name: Pitkäperjantai + regions: [fi] + function: easter(year) + function_modifier: -2 + - name: Pääsiäispäivä + regions: [fi] + function: easter(year) + - name: 2. Pääsiäispäivä + regions: [fi] + function: easter(year) + function_modifier: 1 + - name: Helatorstai # Ascension Day + regions: [fi] + function: easter(year) + function_modifier: 39 + - name: Helluntaipäivä # Whitsunday + regions: [fi] + function: easter(year) + function_modifier: 49 + - name: Pyhäinpäivä # All Saint's Day + regions: [fi] + function: fi_pyhainpaiva(year) + 1: + - name: Uudenvuodenpäivä + regions: [fi] + mday: 1 + - name: Loppiainen + regions: [fi] + mday: 6 + 5: + - name: Vappu + regions: [fi] + mday: 1 + 6: + - name: Juhannusaatto + regions: [fi] + function: fi_juhannusaatto(year) + - name: Juhannuspäivä + regions: [fi] + function: fi_juhannuspaiva(year) + 12: + - name: Itsenäisyyspäivä + regions: [fi] + mday: 6 + - name: Jouluaatto + regions: [fi] + mday: 24 + - name: Joulupäivä + regions: [fi] + mday: 25 + - name: Tapaninpäivä + regions: [fi] + mday: 26 + +methods: + fi_juhannusaatto: + # Finland: Mid-summer eve (Friday between June 19–25) + arguments: year + ruby: | + date = Date.civil(year,6,19) + if date.wday > 5 #if 19.6 is saturday + date += 6 + else + date += (5 - date.wday) + end + date + fi_juhannuspaiva: + # Finland: Mid-summer (Saturday between June 20–26) + arguments: year + ruby: | + date = Date.civil(year,6,20) + date += (6 - date.wday) + date + fi_pyhainpaiva: + # Finland: All Saint's Day (Saturday between Oct 31 and Nov 6) + arguments: year + ruby: | + date = Date.civil(year,10,31) + date += (6 - date.wday) + date + +tests: + - given: + date: '2008-01-01' + regions: ["fi"] + options: ["informal"] + expect: + name: "Uudenvuodenpäivä" + - given: + date: '2008-01-06' + regions: ["fi"] + options: ["informal"] + expect: + name: "Loppiainen" + - given: + date: '2008-03-21' + regions: ["fi"] + options: ["informal"] + expect: + name: "Pitkäperjantai" + - given: + date: '2008-03-23' + regions: ["fi"] + options: ["informal"] + expect: + name: "Pääsiäispäivä" + - given: + date: '2008-03-24' + regions: ["fi"] + options: ["informal"] + expect: + name: "2. Pääsiäispäivä" + - given: + date: '2008-05-01' + regions: ["fi"] + options: ["informal"] + expect: + name: "Helatorstai" + - given: + date: '2008-05-11' + regions: ["fi"] + options: ["informal"] + expect: + name: "Helluntaipäivä" + - given: + date: '2009-06-19' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannusaatto" + - given: + date: '2010-06-25' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannusaatto" + - given: + date: '2011-06-24' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannusaatto" + - given: + date: '2012-06-22' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannusaatto" + - given: + date: '2013-06-21' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannusaatto" + - given: + date: '2005-06-25' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannuspäivä" + - given: + date: '2006-06-24' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannuspäivä" + - given: + date: '2007-06-23' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannuspäivä" + - given: + date: '2008-06-21' + regions: ["fi"] + options: ["informal"] + expect: + name: "Juhannuspäivä" + - given: + date: '2005-11-05' + regions: ["fi"] + options: ["informal"] + expect: + name: "Pyhäinpäivä" + - given: + date: '2006-11-04' + regions: ["fi"] + options: ["informal"] + expect: + name: "Pyhäinpäivä" + - given: + date: '2007-11-03' + regions: ["fi"] + options: ["informal"] + expect: + name: "Pyhäinpäivä" + - given: + date: '2008-11-01' + regions: ["fi"] + options: ["informal"] + expect: + name: "Pyhäinpäivä" + - given: + date: '2008-12-06' + regions: ["fi"] + options: ["informal"] + expect: + name: "Itsenäisyyspäivä" + - given: + date: '2008-12-24' + regions: ["fi"] + options: ["informal"] + expect: + name: "Jouluaatto" + - given: + date: '2008-12-25' + regions: ["fi"] + options: ["informal"] + expect: + name: "Joulupäivä" + - given: + date: '2008-12-26' + regions: ["fi"] + options: ["informal"] + expect: + name: "Tapaninpäivä" diff --git a/vendor/holidays/definitions/fr.yaml b/vendor/holidays/definitions/fr.yaml new file mode 100644 index 00000000..07f30065 --- /dev/null +++ b/vendor/holidays/definitions/fr.yaml @@ -0,0 +1,157 @@ +# French holiday definitions for the Ruby Holiday gem. +# +# Updated: 2013-10-2*. +# +# Changes 2017-05-31: +# - Add additional holidays for Alsace (fr_a) and Moselle (fr_m) +# +# Sources: +# - http://fr.wikipedia.org/wiki/Jours_f%C3%A9ri%C3%A9s_en_France#Les_f.C3.AAtes_f.C3.A9ri.C3.A9es +# - http://vosdroits.service-public.fr/particuliers/F2405.xhtml +# - https://en.wikipedia.org/wiki/Public_holidays_in_France +--- +months: + 0: + - name: Vendredi saint + regions: [fr_a, fr_m] + function: easter(year) + function_modifier: -2 + - name: Pâques + regions: [fr] + function: easter(year) + type: informal + - name: Lundi de Pâques + regions: [fr] + function: easter(year) + function_modifier: 1 + - name: Ascension + regions: [fr] + function: easter(year) + function_modifier: 39 + - name: Pentecôte + regions: [fr] + function: easter(year) + function_modifier: 49 + type: informal + - name: Lundi de Pentecôte + regions: [fr] + function: easter(year) + function_modifier: 50 + 1: + - name: Jour de l'an + regions: [fr] + mday: 1 + 5: + - name: Fête du travail + regions: [fr] + mday: 1 + - name: Victoire 1945 + regions: [fr] + mday: 8 + 7: + - name: Fête nationale + regions: [fr] + mday: 14 + 8: + - name: Assomption + regions: [fr] + mday: 15 + 11: + - name: Toussaint + regions: [fr] + mday: 1 + - name: Armistice 1918 + regions: [fr] + mday: 11 + 12: + - name: Noël + regions: [fr] + mday: 25 + - name: Saint-Étienne + regions: [fr_a, fr_m] + mday: 26 + +tests: + - given: + date: '2007-01-01' + regions: ["fr"] + expect: + name: "Jour de l'an" + - given: + date: '2007-04-09' + regions: ["fr"] + expect: + name: "Lundi de Pâques" + - given: + date: '2007-05-01' + regions: ["fr"] + expect: + name: "Fête du travail" + - given: + date: '2007-05-08' + regions: ["fr"] + expect: + name: "Victoire 1945" + - given: + date: '2007-05-17' + regions: ["fr"] + expect: + name: "Ascension" + - given: + date: '2007-05-28' + regions: ["fr"] + expect: + name: "Lundi de Pentecôte" + - given: + date: '2007-07-14' + regions: ["fr"] + expect: + name: "Fête nationale" + - given: + date: '2007-08-15' + regions: ["fr"] + expect: + name: "Assomption" + - given: + date: '2007-11-01' + regions: ["fr"] + expect: + name: "Toussaint" + - given: + date: '2007-11-11' + regions: ["fr"] + expect: + name: "Armistice 1918" + - given: + date: '2007-12-25' + regions: ["fr"] + expect: + name: "Noël" + - given: + date: '2007-04-08' + regions: ["fr"] + expect: + holiday: false + - given: + date: '2007-05-27' + regions: ["fr"] + expect: + holiday: false + - given: + date: '2007-04-08' + regions: ["fr"] + options: ["informal"] + expect: + name: "Pâques" + - given: + date: '2007-05-27' + regions: ["fr"] + options: ["informal"] + expect: + name: "Pentecôte" + - given: + date: '2017-12-26' + regions: ["fr_a", "fr_m"] + options: ["informal"] + expect: + name: "Saint-Étienne" diff --git a/vendor/holidays/definitions/gb.yaml b/vendor/holidays/definitions/gb.yaml new file mode 100644 index 00000000..a8688bb5 --- /dev/null +++ b/vendor/holidays/definitions/gb.yaml @@ -0,0 +1,458 @@ +# Great Britain/United Kingdom holiday definitions for the Ruby Holiday gem. +# +# Including England, Wales, Scotland, N. Ireland, the Isle of Man, Guernsey +# and Jersey. +# +# Updated: 2019-02-10 +# Sources: +# - http://en.wikipedia.org/wiki/List_of_holidays_by_country#United_Kingdom_and_Crown_dependencies +# +# Notes: +# - Jersey, Guernsey and the Isle of Man are encode with both their ISO 3166-1 and ISO 3-3166-2 codes. +# - England and Wales together should be encoded as [gb_eng, gb_wls, gb_eaw...] +# - For :gb_sct, St. Andrew's Day is 'informal' 2006 and earlier but a bank holiday from 2007 on. +--- +months: + 0: + - name: Good Friday + regions: [gb] + function: easter(year) + function_modifier: -2 + - name: Easter Sunday + regions: [gb] + function: easter(year) + - name: Easter Monday + regions: [gb_eng, gb_wls, gb_eaw, gb_nir, je, gb_jsy, gg, gb_gsy] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [gb] + mday: 1 + observed: to_monday_if_weekend(date) + - name: 2nd January + regions: [gb_sct] + mday: 2 + observed: to_weekday_if_boxing_weekend(date) + 3: + - name: St. Piran's Day + regions: [gb_con] + mday: 5 + - name: St. Patrick's Day + regions: [gb_nir] + mday: 17 + observed: to_monday_if_weekend(date) + 5: + - name: May Day + regions: [gb] + week: 1 + wday: 1 + year_ranges: + until: 2019 + - name: May Day + regions: [gb] + mday: 8 + year_ranges: + limited: [2020] + - name: May Day + regions: [gb] + week: 1 + wday: 1 + year_ranges: + from: 2021 + - name: Liberation Day + regions: [je, gb_jsy, gg, gb_gsy] + mday: 9 + - name: Bank Holiday + regions: [gb] + week: -1 + wday: 1 + 7: + - name: Tynwald Day + regions: [im, gb_iom] + mday: 5 + - name: Battle of the Boyne + regions: [gb_nir] + mday: 12 + observed: to_monday_if_weekend(date) + 8: + - name: Bank Holiday + regions: [gb_sct] + week: 1 + wday: 1 + - name: Bank Holiday + regions: [gb_eng, gb_wls, gb_eaw, gb_nir, je, gb_jsy, gg, gb_gsy] + week: -1 + wday: 1 + 11: + - name: Guy Fawkes Day + regions: [gb] + mday: 5 + type: informal + - name: St. Andrew's Day + regions: [gb_sct] + mday: 30 + type: informal + observed: to_monday_if_weekend(date) + year_ranges: + until: 2006 + - name: St. Andrew's Day + regions: [gb_sct] + mday: 30 + observed: to_monday_if_weekend(date) + year_ranges: + from: 2007 + 12: + - name: Christmas Day + regions: [gb] + mday: 25 + observed: to_monday_if_weekend(date) + - name: Boxing Day + regions: [gb] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + +tests: + - given: + date: '2008-03-21' + regions: ["gb"] + options: ["informal"] + expect: + name: "Good Friday" + - given: + date: '2008-03-23' + regions: ["gb"] + options: ["informal"] + expect: + name: "Easter Sunday" + - given: + date: '2008-05-05' + regions: ["gb"] + options: ["informal"] + expect: + name: "May Day" + - given: + date: '2008-05-26' + regions: ["gb"] + options: ["informal"] + expect: + name: "Bank Holiday" + - given: + date: '2008-11-05' + regions: ["gb"] + options: ["informal"] + expect: + name: "Guy Fawkes Day" + - given: + date: '2008-12-25' + regions: ["gb"] + options: ["informal"] + expect: + name: "Christmas Day" + - given: + date: '2008-12-26' + regions: ["gb"] + options: ["informal"] + expect: + name: "Boxing Day" + - given: + date: '2008-03-17' + regions: ["gb_nir"] + options: ["informal"] + expect: + name: "St. Patrick's Day" + - given: + date: '2018-03-17' + regions: ["gb_nir"] + options: ["informal"] + expect: + name: "St. Patrick's Day" + - given: + date: '2018-03-19' + regions: ["gb_nir"] + options: ["observed", "informal"] + expect: + name: "St. Patrick's Day" + - given: + date: '2019-03-17' + regions: ["gb_nir"] + options: ["informal"] + expect: + name: "St. Patrick's Day" + - given: + date: '2019-03-18' + regions: ["gb_nir"] + options: ["observed", "informal"] + expect: + name: "St. Patrick's Day" + - given: + date: '2020-07-12' + regions: ["gb_nir"] + expect: + name: "Battle of the Boyne" + - given: + date: '2020-07-12' + regions: ["gb_nir"] + options: ["observed"] + expect: + holiday: false + - given: + date: '2020-07-13' + regions: ["gb_nir"] + options: ["observed"] + expect: + name: "Battle of the Boyne" + - given: + date: '2008-07-12' + regions: ["gb_nir"] + expect: + name: "Battle of the Boyne" + - given: + date: '2008-07-14' + regions: ["gb_nir"] + options: ["observed"] + expect: + name: "Battle of the Boyne" + - given: + date: '2021-07-12' + regions: ["gb_nir"] + expect: + name: "Battle of the Boyne" + - given: + date: '2021-07-12' + regions: ["gb_nir"] + options: ["observed"] + expect: + name: "Battle of the Boyne" + - given: + date: '2021-07-13' + regions: ["gb_nir"] + options: ["observed"] + expect: + holiday: false + - given: + date: '2006-11-30' + regions: ["gb_sct"] + options: ["informal"] + expect: + name: "St. Andrew's Day" + - given: + date: '2006-11-30' + regions: ["gb_sct"] + options: ["informal", "observed"] + expect: + name: "St. Andrew's Day" + - given: + date: '2002-12-02' + regions: ["gb_sct"] + options: ["informal", "observed"] + expect: + name: "St. Andrew's Day" + - given: + date: '2004-11-30' + regions: ["gb_sct"] + expect: + holiday: false + - given: + date: '2005-11-30' + regions: ["gb_sct"] + expect: + holiday: false + - given: + date: '2006-11-30' + regions: ["gb_sct"] + expect: + holiday: false + - given: + date: '2007-11-30' + regions: ["gb_sct"] + expect: + name: "St. Andrew's Day" + - given: + date: '2007-11-30' + regions: ["gb_sct"] + options: ["informal"] + expect: + name: "St. Andrew's Day" + - given: + date: '2007-11-30' + regions: ["gb_sct"] + options: ["informal", "observed"] + expect: + name: "St. Andrew's Day" + - given: + date: '2016-11-30' + regions: ["gb_sct"] + expect: + name: "St. Andrew's Day" + - given: + date: '2019-11-30' + regions: ["gb_sct"] + expect: + name: "St. Andrew's Day" + - given: + date: '2019-11-30' + regions: ["gb_sct"] + expect: + name: "St. Andrew's Day" + - given: + date: '2019-12-2' + regions: ["gb_sct"] + options: ["observed"] + expect: + name: "St. Andrew's Day" + - given: + date: '2008-12-25' + regions: ["gb_"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2009-12-25' + regions: ["gb_"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2010-12-27' + regions: ["gb_"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2008-12-26' + regions: ["gb_"] + options: ["observed"] + expect: + name: "Boxing Day" + - given: + date: '2009-12-28' + regions: ["gb_"] + options: ["observed"] + expect: + name: "Boxing Day" + - given: + date: '2010-12-28' + regions: ["gb_"] + options: ["observed"] + expect: + name: "Boxing Day" + - given: + date: '2011-12-27' + regions: ["gb_"] + options: ["observed"] + expect: + name: "Boxing Day" + - given: + date: '2010-01-01' + regions: ["gb"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2011-01-03' + regions: ["gb"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2012-01-02' + regions: ["gb"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2010-01-04' + regions: ["gb_sct"] + options: ["observed"] + expect: + name: "2nd January" + - given: + date: '2011-01-04' + regions: ["gb_sct"] + options: ["observed"] + expect: + name: "2nd January" + - given: + date: '2012-01-03' + regions: ["gb_sct"] + options: ["observed"] + expect: + name: "2nd January" + - given: + date: '2013-01-02' + regions: ["gb_sct"] + options: ["observed"] + expect: + name: "2nd January" + - given: + date: '2014-01-02' + regions: ["gb_sct"] + options: ["observed"] + expect: + name: "2nd January" + - given: + date: '2008-03-24' + regions: ["gb_wls"] + expect: + name: "Easter Monday" + - given: + date: '2008-08-25' + regions: ["gb_wls"] + expect: + name: "Bank Holiday" + - given: + date: '2008-03-24' + regions: ["gb_eng"] + expect: + name: "Easter Monday" + - given: + date: '2008-08-25' + regions: ["gb_eng"] + expect: + name: "Bank Holiday" + - given: + date: '2008-03-24' + regions: ["gb_nir"] + expect: + name: "Easter Monday" + - given: + date: '2008-08-25' + regions: ["gb_nir"] + expect: + name: "Bank Holiday" + - given: + date: '2008-03-24' + regions: ["gb_eaw"] + expect: + name: "Easter Monday" + - given: + date: '2008-08-25' + regions: ["gb_eaw"] + expect: + name: "Bank Holiday" + - given: + date: '2008-03-24' + regions: ["gb_"] + expect: + name: "Easter Monday" + - given: + date: '2008-08-25' + regions: ["gb_"] + expect: + name: "Bank Holiday" + - given: + date: '2018-05-09' + regions: ["je"] + expect: + name: "Liberation Day" + - given: + date: '2018-04-02' + regions: ["je"] + expect: + name: "Easter Monday" + - given: + date: '2018-08-27' + regions: ["je"] + expect: + name: "Bank Holiday" diff --git a/vendor/holidays/definitions/ge.yaml b/vendor/holidays/definitions/ge.yaml new file mode 100644 index 00000000..cb23e091 --- /dev/null +++ b/vendor/holidays/definitions/ge.yaml @@ -0,0 +1,158 @@ +# Georgian holiday definitions for the Ruby Holiday gem. In Georgian (საქართველო). +# +# Updated: 2017-06-12 +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Georgia +# - https://de.wikipedia.org/wiki/Feiertage_in_Georgien +# - https://translate.yandex.com/?lang=ka-en +--- +months: + 0: + - name: დიდი პარასკევი # Good Friday + regions: [ge] + function: orthodox_easter(year) + function_modifier: -2 + - name: დიდი შაბათი # Holy Saturday + regions: [ge] + function: orthodox_easter(year) + function_modifier: -1 + - name: ბრწყინვალე აღდგომის დღე # Easter Sunday + regions: [ge] + function: orthodox_easter(year) + - name: მიცვალებულთა # Easter Monday + regions: [ge] + function: orthodox_easter(year) + function_modifier: 1 + 1: + - name: ახალი წელი # New Year's Day + regions: [ge] + mday: 1 + - name: ბედობა # Day after New Year's Day + regions: [ge] + mday: 2 + - name: ქრისტეშობა # Christmas Day + regions: [ge] + mday: 7 + - name: ნათლისღება # Baptism Day of our Lord Jesus Christ + regions: [ge] + mday: 19 + 3: + - name: დედის დღე # Mother's Day + regions: [ge] + mday: 3 + - name: ქალთა საერთაშორისო დღე # International Women's Day + regions: [ge] + mday: 8 + 4: + - name: ეროვნული ერთიანობის დღე # Day of National Unity + regions: [ge] + mday: 9 + 5: + - name: ფაშიზმზე გამარჯვების დღე # Victory Day + regions: [ge] + mday: 9 + - name: წმინდა მოციქულის ანდრია პირველწოდებულის საქართველოში შემოსვლის დღე # Saint Andrew the First-Called Day + regions: [ge] + mday: 12 + - name: დამოუკიდებლობის დღე # Independence Day + regions: [ge] + mday: 26 + 8: + - name: მარიამობა # Saint Mary's Day + regions: [ge] + mday: 28 + 10: + - name: სვეტიცხოვლობა # Day of Svetitskhoveli Cathedral (in Mtskheta) + regions: [ge] + mday: 14 + 11: + - name: გიორგობა # Saint George's Day + regions: [ge] + mday: 23 + +tests: + - given: + date: '2017-1-1' + regions: ["ge"] + expect: + name: "ახალი წელი" + - given: + date: '2017-1-2' + regions: ["ge"] + expect: + name: "ბედობა" + - given: + date: '2017-1-7' + regions: ["ge"] + expect: + name: "ქრისტეშობა" + - given: + date: '2017-1-19' + regions: ["ge"] + expect: + name: "ნათლისღება" + - given: + date: '2017-3-3' + regions: ["ge"] + expect: + name: "დედის დღე" + - given: + date: '2017-3-8' + regions: ["ge"] + expect: + name: "ქალთა საერთაშორისო დღე" + - given: + date: '2017-4-9' + regions: ["ge"] + expect: + name: "ეროვნული ერთიანობის დღე" + - given: + date: '2017-5-9' + regions: ["ge"] + expect: + name: "ფაშიზმზე გამარჯვების დღე" + - given: + date: '2017-5-12' + regions: ["ge"] + expect: + name: "წმინდა მოციქულის ანდრია პირველწოდებულის საქართველოში შემოსვლის დღე" + - given: + date: '2017-5-26' + regions: ["ge"] + expect: + name: "დამოუკიდებლობის დღე" + - given: + date: '2017-8-28' + regions: ["ge"] + expect: + name: "მარიამობა" + - given: + date: '2017-10-14' + regions: ["ge"] + expect: + name: "სვეტიცხოვლობა" + - given: + date: '2017-11-23' + regions: ["ge"] + expect: + name: "გიორგობა" + - given: + date: ['2017-4-14', '2018-4-6', '2019-4-26'] + regions: ["ge"] + expect: + name: "დიდი პარასკევი" + - given: + date: ['2017-4-15', '2018-4-7', '2019-4-27'] + regions: ["ge"] + expect: + name: "დიდი შაბათი" + - given: + date: ['2017-4-16', '2018-4-8', '2019-4-28'] + regions: ["ge"] + expect: + name: "ბრწყინვალე აღდგომის დღე" + - given: + date: ['2017-4-17', '2018-4-9', '2019-4-29'] + regions: ["ge"] + expect: + name: "მიცვალებულთა" diff --git a/vendor/holidays/definitions/hk.yaml b/vendor/holidays/definitions/hk.yaml new file mode 100644 index 00000000..a884b98e --- /dev/null +++ b/vendor/holidays/definitions/hk.yaml @@ -0,0 +1,287 @@ +# Hong Kong holiday definitions for the Holidays gem! + +# Days not included in the definitions (yet): +# Ching Ming Festival +# The Birthday of the Buddha +# Tuen Ng Festival +# Chinese Mid-Autumn Festival +# Chung Yeung Festival + +# Source: +# http://www.gov.hk/en/about/abouthk/holiday/ + +months: + 0: + - name: Lunar New Year's Day + regions: [hk] + function: cn_new_lunar_day(year) + observed: to_monday_if_sunday(date) + - name: The second day of Lunar New Year + regions: [hk] + function: cn_new_lunar_day(year) + function_modifier: 1 + observed: to_monday_if_sunday(date) + - name: The third day of Lunar New Year + regions: [hk] + function: cn_new_lunar_day(year) + function_modifier: 2 + observed: to_weekday_if_boxing_weekend(date) + - name: Good Friday + regions: [hk] + function: easter(year) + function_modifier: -2 + - name: The day following Good Friday + regions: [hk] + function: easter(year) + function_modifier: -1 + - name: Easter Monday + regions: [hk] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [hk] + mday: 1 + observed: to_monday_if_sunday(date) + 5: + - name: Labour Day + regions: [hk] + mday: 1 + observed: to_monday_if_sunday(date) + 7: + - name: Hong Kong Special Administrative Region Establishment Day + regions: [hk] + mday: 1 + observed: to_monday_if_sunday(date) + 10: + - name: National Day + regions: [hk] + mday: 1 + observed: to_monday_if_sunday(date) + 12: + - name: Christmas Day + regions: [hk] + mday: 25 + observed: to_monday_if_weekend(date) + - name: Boxing Day + regions: [hk] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + +methods: + cn_new_lunar_day: + arguments: year + ruby: | + month_day = case year + when 1930, 1949, 1987, 2025, 2063, 2082, 2101, 2112, 2131, 2150, 2207, 2245, 2253, 2283, 2321 + [1, 29] + when 1931, 1950, 1969, 1988, 2007, 2026, 2045, 2083, 2091, 2102, 2121, 2159, 2197, 2208, 2216, 2227, 2246, 2265, 2303, 2322, 2341, 2379 + [2, 17] + when 1932, 1951, 1970, 1989, 2027, 2046, 2114, 2179, 2198, 2209, 2247, 2266, 2304, 2323, 2342, 2361, 2399 + [2, 6] + when 1933, 2009, 2028, 2047, 2066, 2085, 2115, 2161, 2199, 2210, 2229, 2267, 2305, 2316, 2324, 2335, 2381 + [1, 26] + when 1934, 1953, 2037, 2048, 2067, 2086, 2105, 2116, 2181, 2189, 2211, 2257, 2268, 2306, 2325, 2336 + [2, 14] + when 1935, 1943, 1992, 2038, 2106, 2144, 2201, 2212, 2258, 2296, 2307, 2326, 2364 + [2, 4] + when 1936, 1955, 2001, 2039, 2058, 2088, 2107, 2164, 2183, 2221, 2259, 2278, 2308, 2327, 2373 + [1, 24] + when 1937, 1975, 2032, 2040, 2051, 2070, 2108, 2127, 2146, 2165, 2252, 2260, 2271, 2290, 2309, 2328, 2347, 2366 + [2, 11] + when 1938, 1957, 1976, 1995, 2014, 2033, 2071, 2109, 2128, 2185, 2272, 2291, 2329, 2348, 2367, 2386 + [1, 31] + when 1939, 1996, 2015, 2053, 2072, 2110, 2129, 2292, 2330, 2368, 2387 + [2, 19] + when 1940, 1959, 2016, 2035, 2081, 2130, 2149, 2187, 2206, 2225, 2236, 2255, 2312, 2350, 2358, 2369 + [2, 8] + when 1941, 1952, 1971, 1990, 2074, 2093, 2123, 2142, 2180, 2248, 2294, 2343, 2351, 2362 + [1, 27] + when 1942, 1961, 1972, 1991, 2056, 2075, 2094, 2124, 2143, 2200, 2276, 2295, 2344, 2363 + [2, 15] + when 1944, 1963, 1982, 2020, 2096, 2134, 2153, 2172, 2191, 2202, 2240, 2286, 2354, 2392 + [1, 25] + when 1945, 1964, 1983, 2010, 2029, 2162, 2192, 2230, 2249, 2317, 2382 + [2, 13] + when 1946, 2003, 2022, 2041, 2052, 2098, 2147, 2155, 2166, 2223, 2242, 2261, 2299, 2310, 2375, 2394 + [2, 1] + when 1947, 2004, 2042, 2050, 2080, 2118, 2137, 2194, 2270, 2289, 2300, 2338, 2376 + [1, 22] + when 1948, 1994, 2013, 2024, 2043, 2089, 2119, 2138, 2157, 2176, 2195, 2214, 2320, 2396 + [2, 10] + when 1954, 1973, 2011, 2057, 2068, 2087, 2125, 2163, 2231, 2277, 2288, 2345, 2383 + [2, 3] + when 1956, 2002, 2021, 2059, 2078, 2097, 2135, 2154, 2173, 2184, 2203, 2222, 2241, 2279, 2287, 2298, 2355, 2374, 2393 + [2, 12] + when 1958, 1977, 2034, 2140, 2178, 2235, 2254, 2273, 2311, 2349, 2360, 2398 + [2, 18] + when 1960, 1979, 1998, 2006, 2017, 2036, 2055, 2104, 2169, 2188, 2218, 2226, 2237, 2256, 2275, 2313, 2332, 2370, 2389 + [1, 28] + when 1962, 1981, 2000, 2019, 2065, 2076, 2084, 2095, 2133, 2152, 2171, 2190, 2220, 2239, 2285, 2315, 2334, 2353, 2372, 2391 + [2, 5] + when 1965, 1984, 2030, 2049, 2060, 2079, 2117, 2136, 2174, 2182, 2193, 2204, 2250, 2269, 2280, 2318, 2337, 2356 + [2, 2] + when 1966, 2023, 2061, 2099, 2186, 2262, 2281, 2357, 2395 + [1, 21] + when 1967, 1986, 2005, 2062, 2100, 2168, 2233, 2244, 2263, 2282, 2301, 2339, 2377, 2385, 2388 + [2, 9] + when 1968, 2044, 2090, 2120, 2139, 2158, 2177, 2196, 2215, 2234, 2264, 2302, 2340, 2359, 2378, 2397 + [1, 30] + when 1974, 1993, 2012, 2031, 2069, 2077, 2126, 2145, 2156, 2175, 2213, 2232, 2251, 2297, 2346, 2365, 2384 + [1, 23] + when 1978, 1997, 2008, 2054, 2073, 2092, 2103, 2111, 2122, 2141, 2160, 2217, 2228, 2274, 2293, 2331, 2380 + [2, 7] + when 1980, 1999, 2018, 2064, 2113, 2132, 2151, 2170, 2219, 2238, 2284, 2314, 2333, 2352, 2371, 2390 + [2, 16] + when 1985, 2148, 2167, 2205, 2224, 2243 + [2, 20] + when 2319 + [2, 21] + end + Date.civil(year, month_day[0], month_day[1]) + +tests: + - given: + date: '2016-01-01' + regions: ["hk"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2016-02-08' + regions: ["hk"] + options: ["observed"] + expect: + name: "Lunar New Year's Day" + - given: + date: '2016-02-09' + regions: ["hk"] + options: ["observed"] + expect: + name: "The second day of Lunar New Year" + - given: + date: '2016-02-10' + regions: ["hk"] + options: ["observed"] + expect: + name: "The third day of Lunar New Year" + - given: + date: '2016-03-25' + regions: ["hk"] + options: ["observed"] + expect: + name: "Good Friday" + - given: + date: '2016-03-26' + regions: ["hk"] + options: ["observed"] + expect: + name: "The day following Good Friday" + - given: + date: '2016-03-28' + regions: ["hk"] + options: ["observed"] + expect: + name: "Easter Monday" + - given: + date: '2016-05-02' + regions: ["hk"] + options: ["observed"] + expect: + name: "Labour Day" + - given: + date: '2016-07-01' + regions: ["hk"] + options: ["observed"] + expect: + name: "Hong Kong Special Administrative Region Establishment Day" + - given: + date: '2016-10-01' + regions: ["hk"] + options: ["observed"] + expect: + name: "National Day" + - given: + date: '2016-12-26' + regions: ["hk"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2016-12-27' + regions: ["hk"] + options: ["observed"] + expect: + name: "Boxing Day" + - given: + date: '2017-01-02' + regions: ["hk"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2017-01-28' + regions: ["hk"] + options: ["observed"] + expect: + name: "Lunar New Year's Day" + - given: + date: '2017-01-30' + regions: ["hk"] + options: ["observed"] + expect: + name: "The second day of Lunar New Year" + - given: + date: '2017-01-31' + regions: ["hk"] + options: ["observed"] + expect: + name: "The third day of Lunar New Year" + - given: + date: '2017-04-14' + regions: ["hk"] + options: ["observed"] + expect: + name: "Good Friday" + - given: + date: '2017-04-15' + regions: ["hk"] + options: ["observed"] + expect: + name: "The day following Good Friday" + - given: + date: '2017-04-17' + regions: ["hk"] + options: ["observed"] + expect: + name: "Easter Monday" + - given: + date: '2017-05-01' + regions: ["hk"] + options: ["observed"] + expect: + name: "Labour Day" + - given: + date: '2017-07-01' + regions: ["hk"] + options: ["observed"] + expect: + name: "Hong Kong Special Administrative Region Establishment Day" + - given: + date: '2017-10-02' + regions: ["hk"] + options: ["observed"] + expect: + name: "National Day" + - given: + date: '2017-12-25' + regions: ["hk"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2017-12-26' + regions: ["hk"] + options: ["observed"] + expect: + name: "Boxing Day" diff --git a/vendor/holidays/definitions/hr.yaml b/vendor/holidays/definitions/hr.yaml new file mode 100644 index 00000000..64d21987 --- /dev/null +++ b/vendor/holidays/definitions/hr.yaml @@ -0,0 +1,171 @@ +# Croatian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2019-11-21. +# Sources: +# http://en.wikipedia.org/wiki/Public_holidays_in_Croatia +--- +months: + 0: + - name: Uskrs + regions: [hr] + function: easter(year) + - name: Uskrsni ponedjeljak + regions: [hr] + function: easter(year) + function_modifier: 1 + - name: Tijelovo + regions: [hr] + function: easter(year) + function_modifier: 60 + 1: + - name: Nova godina + regions: [hr] + mday: 1 + - name: Bogojavljenje ili Sveta tri kralja + regions: [hr] + mday: 6 + 5: + - name: Praznik rada + regions: [hr] + mday: 1 + - name: Dan državnosti + regions: [hr] + mday: 30 + year_ranges: + from: 2020 + 6: + - name: Dan antifašističke borbe + regions: [hr] + mday: 22 + - name: Dan državnosti + regions: [hr] + mday: 25 + year_ranges: + until: 2019 + 8: + - name: Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja + regions: [hr] + mday: 5 + - name: Velika Gospa + regions: [hr] + mday: 15 + 10: + - name: Dan neovisnosti + regions: [hr] + mday: 8 + year_ranges: + until: 2019 + 11: + - name: Svi sveti + regions: [hr] + mday: 1 + - name: Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje + regions: [hr] + mday: 18 + year_ranges: + from: 2020 + 12: + - name: Božić + regions: [hr] + mday: 25 + - name: Sveti Stjepan + regions: [hr] + mday: 26 + +tests: + - given: + date: '2012-01-01' + regions: ["hr"] + options: ["informal"] + expect: + name: "Nova godina" + - given: + date: '2012-01-06' + regions: ["hr"] + options: ["informal"] + expect: + name: "Bogojavljenje ili Sveta tri kralja" + - given: + date: '2012-05-01' + regions: ["hr"] + options: ["informal"] + expect: + name: "Praznik rada" + - given: + date: '2012-06-22' + regions: ["hr"] + options: ["informal"] + expect: + name: "Dan antifašističke borbe" + - given: + date: '2020-05-30' + regions: ["hr"] + options: ["informal"] + expect: + name: "Dan državnosti" + - given: + date: '2012-08-05' + regions: ["hr"] + options: ["informal"] + expect: + name: "Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja" + - given: + date: '2012-08-15' + regions: ["hr"] + options: ["informal"] + expect: + name: "Velika Gospa" + - given: + date: '2020-11-18' + regions: ["hr"] + options: ["informal"] + expect: + name: "Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje" + - given: + date: '2012-11-01' + regions: ["hr"] + options: ["informal"] + expect: + name: "Svi sveti" + - given: + date: '2012-12-25' + regions: ["hr"] + options: ["informal"] + expect: + name: "Božić" + - given: + date: '2012-12-26' + regions: ["hr"] + options: ["informal"] + expect: + name: "Sveti Stjepan" + - given: + date: '2008-05-22' + regions: ["hr"] + expect: + name: "Tijelovo" + - given: + date: '2009-06-11' + regions: ["hr"] + expect: + name: "Tijelovo" + - given: + date: '2010-06-03' + regions: ["hr"] + expect: + name: "Tijelovo" + - given: + date: '2012-06-07' + regions: ["hr"] + expect: + name: "Tijelovo" + - given: + date: '2013-05-30' + regions: ["hr"] + expect: + name: "Tijelovo" + - given: + date: '2014-06-19' + regions: ["hr"] + expect: + name: "Tijelovo" diff --git a/vendor/holidays/definitions/hu.yaml b/vendor/holidays/definitions/hu.yaml new file mode 100644 index 00000000..8721028f --- /dev/null +++ b/vendor/holidays/definitions/hu.yaml @@ -0,0 +1,156 @@ +# Hungarian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2012-03-01 by spap +--- +months: + 0: + - name: Nagypéntek + regions: [hu] + function: easter(year) + function_modifier: -2 + year_ranges: + from: 2017 + - name: Húsvéthétfő + regions: [hu] + function: easter(year) + function_modifier: 1 + - name: Pünkösdhétfő + regions: [hu] + function: easter(year) + function_modifier: 50 + 1: + - name: Újév + regions: [hu] + mday: 1 + 3: + - name: 1848/49-es forradalom és szabadságharc ünnepe + regions: [hu] + mday: 15 + 5: + - name: A munka ünnepe + regions: [hu] + mday: 1 + 8: + - name: Az államalapítás ünnepe + regions: [hu] + mday: 20 + 10: + - name: 1956-os forradalom és szabadságharc ünnepe + regions: [hu] + mday: 23 + 11: + - name: Mindenszentek + regions: [hu] + mday: 1 + 12: + - name: Karácsony + regions: [hu] + mday: 25 + - name: Karácsony + regions: [hu] + mday: 26 + +tests: + - given: + date: '2012-01-01' + regions: ["hu"] + options: ["informal"] + expect: + name: "Újév" + - given: + date: '2011-01-01' + regions: ["hu"] + options: ["informal"] + expect: + name: "Újév" + - given: + date: '2012-03-15' + regions: ["hu"] + options: ["informal"] + expect: + name: "1848/49-es forradalom és szabadságharc ünnepe" + - given: + date: '2011-04-25' + regions: ["hu"] + options: ["informal"] + expect: + name: "Húsvéthétfő" + - given: + date: '2012-04-09' + regions: ["hu"] + options: ["informal"] + expect: + name: "Húsvéthétfő" + - given: + date: '2012-05-01' + regions: ["hu"] + options: ["informal"] + expect: + name: "A munka ünnepe" + - given: + date: '2011-06-13' + regions: ["hu"] + options: ["informal"] + expect: + name: "Pünkösdhétfő" + - given: + date: '2012-05-28' + regions: ["hu"] + options: ["informal"] + expect: + name: "Pünkösdhétfő" + - given: + date: '2012-08-20' + regions: ["hu"] + options: ["informal"] + expect: + name: "Az államalapítás ünnepe" + - given: + date: '2012-10-23' + regions: ["hu"] + options: ["informal"] + expect: + name: "1956-os forradalom és szabadságharc ünnepe" + - given: + date: '2012-11-01' + regions: ["hu"] + options: ["informal"] + expect: + name: "Mindenszentek" + - given: + date: '2012-12-25' + regions: ["hu"] + options: ["informal"] + expect: + name: "Karácsony" + - given: + date: '2012-12-26' + regions: ["hu"] + options: ["informal"] + expect: + name: "Karácsony" + - given: + date: '2012-03-14' + regions: ["hu"] + expect: + holiday: false + - given: + date: '2016-03-28' + regions: ["hu"] + expect: + name: "Húsvéthétfő" + - given: + date: '2016-03-25' + regions: ["hu"] + expect: + holiday: false + - given: + date: '2017-04-17' + regions: ["hu"] + expect: + name: "Húsvéthétfő" + - given: + date: '2017-04-14' + regions: ["hu"] + expect: + name: "Nagypéntek" diff --git a/vendor/holidays/definitions/ie.yaml b/vendor/holidays/definitions/ie.yaml new file mode 100644 index 00000000..793ea3c6 --- /dev/null +++ b/vendor/holidays/definitions/ie.yaml @@ -0,0 +1,172 @@ +# Ireland holiday definitions for the Ruby Holiday gem. +# +# Updated: 2012-03-16. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_the_Republic_of_Ireland +# - http://www.citizensinformation.ie/categories/employment/employment-rights-and-conditions/leave-and-holidays/public-holidays-in-ireland +# While there is mention that Jan 2 2012 was not officially a bank holiday, in reality very few businesses will not observe that date as a bank holiday +--- +months: + 0: + - name: Easter Monday + regions: [ie] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [ie] + mday: 1 + observed: to_monday_if_weekend(date) + 3: + - name: St. Patrick's Day + regions: [ie] + mday: 17 + observed: to_monday_if_weekend(date) + 5: + - name: May Day + regions: [ie] + week: 1 + wday: 1 + 6: + - name: June Bank Holiday + regions: [ie] + week: 1 + wday: 1 + 8: + - name: August Bank Holiday + regions: [ie] + week: 1 + wday: 1 + 10: + - name: October Bank Holiday + regions: [ie] + week: -1 + wday: 1 + 12: + - name: Christmas Day + regions: [ie] + mday: 25 + observed: to_monday_if_weekend(date) + - name: St. Stephen's Day + regions: [ie] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + +tests: + - given: + date: '2008-01-01' + regions: ["ie"] + expect: + name: "New Year's Day" + - given: + date: '2008-03-17' + regions: ["ie"] + expect: + name: "St. Patrick's Day" + - given: + date: '2008-03-24' + regions: ["ie"] + expect: + name: "Easter Monday" + - given: + date: '2008-05-05' + regions: ["ie"] + expect: + name: "May Day" + - given: + date: '2008-06-02' + regions: ["ie"] + expect: + name: "June Bank Holiday" + - given: + date: '2008-08-04' + regions: ["ie"] + expect: + name: "August Bank Holiday" + - given: + date: '2008-10-27' + regions: ["ie"] + expect: + name: "October Bank Holiday" + - given: + date: '2008-12-25' + regions: ["ie"] + expect: + name: "Christmas Day" + - given: + date: '2008-12-26' + regions: ["ie"] + expect: + name: "St. Stephen's Day" + - given: + date: '2012-01-02' + regions: ["ie"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2012-03-19' + regions: ["ie"] + options: ["observed"] + expect: + name: "St. Patrick's Day" + - given: + date: '2012-04-09' + regions: ["ie"] + options: ["observed"] + expect: + name: "Easter Monday" + - given: + date: '2012-05-07' + regions: ["ie"] + options: ["observed"] + expect: + name: "May Day" + - given: + date: '2012-06-04' + regions: ["ie"] + options: ["observed"] + expect: + name: "June Bank Holiday" + - given: + date: '2012-08-06' + regions: ["ie"] + options: ["observed"] + expect: + name: "August Bank Holiday" + - given: + date: '2012-10-29' + regions: ["ie"] + options: ["observed"] + expect: + name: "October Bank Holiday" + - given: + date: '2011-12-26' + regions: ["ie"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2011-12-27' + regions: ["ie"] + options: ["observed"] + expect: + name: "St. Stephen's Day" + - given: + date: '2012-12-25' + regions: ["ie"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2012-12-26' + regions: ["ie"] + options: ["observed"] + expect: + name: "St. Stephen's Day" + - given: + date: '2015-12-28' + regions: ["ie"] + options: ["observed"] + expect: + name: "St. Stephen's Day" diff --git a/vendor/holidays/definitions/index.yaml b/vendor/holidays/definitions/index.yaml new file mode 100644 index 00000000..1727c9a4 --- /dev/null +++ b/vendor/holidays/definitions/index.yaml @@ -0,0 +1,79 @@ +# Definition build list +--- +defs: + AR: ['ar.yaml'] + AT: ['at.yaml'] + AU: ['au.yaml'] + BE_FR: ['be_fr.yaml'] + BE_NL: ['be_nl.yaml'] + BR: ['br.yaml'] + BG: ['bg.yaml'] + CA: ['ca.yaml', 'northamericainformal.yaml'] + CH: ['ch.yaml'] + CL: ['cl.yaml'] + CO: ['co.yaml'] + CR: ['cr.yaml'] + CZ: ['cz.yaml'] + DK: ['dk.yaml'] + DE: ['de.yaml'] + ECBTARGET: ['ecbtarget.yaml'] + EE: ['ee.yaml'] + EL: ['el.yaml'] + ES: ['es.yaml'] + FederalReserve: ['federalreserve.yaml'] + FederalReserveBanks: ['federalreservebanks.yaml'] + FedEx: ['fedex.yaml'] + FI: ['fi.yaml'] + FR: ['fr.yaml'] + GB: ['gb.yaml'] + GE: ['ge.yaml'] + HR: ['hr.yaml'] + HK: ['hk.yaml'] + HU: ['hu.yaml'] + IE: ['ie.yaml'] + IS: ['is.yaml'] + IT: ['it.yaml'] + KR: ['kr.yaml'] + KZ: ['kz.yaml'] + LI: ['li.yaml'] + LT: ['lt.yaml'] + LV: ['lv.yaml'] + MA: ['ma.yaml'] + MT_MT: ['mt_mt.yaml'] + MT_EN: ['mt_en.yaml'] + MX: ['mx.yaml', 'northamericainformal.yaml'] + NERC: ['nerc.yaml'] + NL: ['nl.yaml'] + LU: ['lu.yaml'] + "NO": ['no.yaml'] + NYSE: ['nyse.yaml'] + NZ: ['nz.yaml'] + PE: ['pe.yaml'] + PH: ['ph.yaml'] + PL: ['pl.yaml'] + PT: ['pt.yaml'] + RO: ['ro.yaml'] + RS_CYRL: ['rs_cyrl.yaml'] + RS_LA: ['rs_la.yaml'] + RU: ['ru.yaml'] + SE: ['se.yaml'] + TN: ['tn.yaml'] + TR: ['tr.yaml'] + UA: ['ua.yaml'] + US: ['us.yaml', 'northamericainformal.yaml'] + UnitedNations: ['unitednations.yaml'] + UPS: ['ups.yaml'] + ZA: ['za.yaml'] + NorthAmerica: ['ca.yaml', 'mx.yaml', 'us.yaml', 'northamericainformal.yaml'] + SouthAmerica: ['ar.yaml', 'br.yaml', 'cl.yaml', 'co.yaml', 'pe.yaml', 've.yaml'] + Scandinavia: ['dk.yaml', 'is.yaml', 'no.yaml', 'se.yaml', 'fi.yaml'] + Europe: ['at.yaml', 'be_fr.yaml', 'be_nl.yaml', 'ch.yaml', 'cz.yaml', 'dk.yaml', 'de.yaml', 'el.yaml', 'es.yaml', 'fr.yaml', 'gb.yaml', 'hr.yaml', 'hu.yaml', 'ie.yaml', 'is.yaml', 'it.yaml', 'li.yaml', 'lt.yaml', 'lv.yaml', 'nl.yaml', 'no.yaml', 'pl.yaml', 'pt.yaml', 'ro.yaml', 'sk.yaml', 'si.yaml', 'bg.yaml', 'ua.yaml'] + JP: ['jp.yaml'] + VE: ['ve.yaml'] + VI: ['vi.yaml'] + SK: ['sk.yaml'] + SI: ['si.yaml'] + SG: ['sg.yaml'] + MY: ['my.yaml'] + TH: ['th.yaml'] + NG: ['ng.yaml'] diff --git a/vendor/holidays/definitions/is.yaml b/vendor/holidays/definitions/is.yaml new file mode 100644 index 00000000..cb101a52 --- /dev/null +++ b/vendor/holidays/definitions/is.yaml @@ -0,0 +1,247 @@ +# Icelandic holiday definitions for the Ruby Holiday gem. +# +# Updated: 2008-11-29. +# Sources: +# - http://www.simnet.is/gardarj/folk/days.htm#days +# - http://www.iceland.is/history-and-culture/Traditions/IcelandicHolidays/ +# - http://en.wikipedia.org/wiki/Public_holidays_in_Iceland +# - http://www.qppstudio.net/publicholidays2007/iceland.htm +--- +months: + 0: + - name: Bolludagur + regions: [is] + function: easter(year) + function_modifier: -48 + - name: Sprengidagur + regions: [is] + function: easter(year) + function_modifier: -47 + - name: Öskudagur + regions: [is] + function: easter(year) + function_modifier: -46 + - name: Pálmasunnudagur + regions: [is] + function: easter(year) + function_modifier: -7 + - name: Skírdagur + regions: [is] + function: easter(year) + function_modifier: -3 + - name: Föstudaginn langi + regions: [is] + function: easter(year) + function_modifier: -2 + - name: Páskadagur + regions: [is] + function: easter(year) + - name: Annar í páskum + regions: [is] + function: easter(year) + function_modifier: 1 + - name: Uppstigningardagur + regions: [is] + function: easter(year) + function_modifier: 39 + - name: Hvítasunnudagur + regions: [is] + function: easter(year) + function_modifier: 49 + - name: Annar í hvítasunnu + regions: [is] + function: easter(year) + function_modifier: 50 + 1: + - name: Nýársdagur + regions: [is] + mday: 1 + - name: Þrettándinn + regions: [is] + mday: 6 + - name: Bóndadagur + regions: [is] + mday: 19 + type: informal + 2: + - name: Konudagur + regions: [is] + mday: 18 + type: informal + 4: + - name: Sumardagurinn fyrsti + regions: [is] + function: is_sumardagurinn_fyrsti(year) + 5: + - name: Verkalýðsdagurinn + regions: [is] + mday: 1 + - name: Mæðradagurinn + regions: [is] + mday: 13 + 6: + - name: Sjómannadagurinn + regions: [is] + mday: 3 + type: informal + - name: Lýðveldisdagurinn + regions: [is] + mday: 17 + 8: + - name: Frídagur verslunarmanna + regions: [is] + week: 1 + wday: 1 + 11: + - name: Dagur íslenskrar tungu + regions: [is] + mday: 16 + 12: + - name: Jól + regions: [is] + mday: 24 + - name: Jól + regions: [is] + mday: 25 + - name: Jól + regions: [is] + mday: 26 + - name: Gamlárskvöld + regions: [is] + mday: 31 + +methods: + is_sumardagurinn_fyrsti: + # Iceland: first day of summer (Thursday after 18 April) + arguments: year + ruby: | + date = Date.civil(year,4,18) + if date.wday < 4 + date += (4 - date.wday) + else + date += (11 - date.wday) + end + date + +tests: + - given: + date: '2007-01-01' + regions: ["is"] + options: ["informal"] + expect: + name: "Nýársdagur" + - given: + date: '2007-01-06' + regions: ["is"] + options: ["informal"] + expect: + name: "Þrettándinn" + - given: + date: '2007-01-19' + regions: ["is"] + options: ["informal"] + expect: + name: "Bóndadagur" + - given: + date: '2007-02-18' + regions: ["is"] + options: ["informal"] + expect: + name: "Konudagur" + - given: + date: '2007-04-05' + regions: ["is"] + options: ["informal"] + expect: + name: "Skírdagur" + - given: + date: '2007-04-06' + regions: ["is"] + options: ["informal"] + expect: + name: "Föstudaginn langi" + - given: + date: '2007-04-08' + regions: ["is"] + options: ["informal"] + expect: + name: "Páskadagur" + - given: + date: '2007-04-09' + regions: ["is"] + options: ["informal"] + expect: + name: "Annar í páskum" + - given: + date: '2007-04-19' + regions: ["is"] + options: ["informal"] + expect: + name: "Sumardagurinn fyrsti" + - given: + date: '2007-05-01' + regions: ["is"] + options: ["informal"] + expect: + name: "Verkalýðsdagurinn" + - given: + date: '2007-05-17' + regions: ["is"] + options: ["informal"] + expect: + name: "Uppstigningardagur" + - given: + date: '2007-05-27' + regions: ["is"] + options: ["informal"] + expect: + name: "Hvítasunnudagur" + - given: + date: '2007-05-28' + regions: ["is"] + options: ["informal"] + expect: + name: "Annar í hvítasunnu" + - given: + date: '2007-06-03' + regions: ["is"] + options: ["informal"] + expect: + name: "Sjómannadagurinn" + - given: + date: '2007-06-17' + regions: ["is"] + options: ["informal"] + expect: + name: "Lýðveldisdagurinn" + - given: + date: '2007-08-06' + regions: ["is"] + options: ["informal"] + expect: + name: "Frídagur verslunarmanna" + - given: + date: '2007-12-24' + regions: ["is"] + options: ["informal"] + expect: + name: "Jól" + - given: + date: '2007-12-25' + regions: ["is"] + options: ["informal"] + expect: + name: "Jól" + - given: + date: '2007-12-26' + regions: ["is"] + options: ["informal"] + expect: + name: "Jól" + - given: + date: '2007-12-31' + regions: ["is"] + options: ["informal"] + expect: + name: "Gamlárskvöld" + diff --git a/vendor/holidays/definitions/it.yaml b/vendor/holidays/definitions/it.yaml new file mode 100644 index 00000000..24bd8195 --- /dev/null +++ b/vendor/holidays/definitions/it.yaml @@ -0,0 +1,246 @@ +# Italian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2008-11-23. +# Sources: +# - http://en.wikipedia.org/wiki/Holidays_in_Italy +# +# Changes 2019-03-11 +# - add Rome region (it_rm) +# - add Festa di San Pietro e Paolo for it_rm region +# +# Sources: +# - https://en.wikipedia.org/wiki/Feast_of_Saints_Peter_and_Paul +# - https://www.officeholidays.com/countries/global/st_peter_and_paul.php +# +# Changes 2019-06-28 +# - add Florence region (it_fi) +# - add Genoa region (it_ge) +# - add Turin region (it_to) +# - add Festa di San Giovanni Battista for it_fi, it_ge, it_to regions +# Sources: +# - https://www.officeholidays.com/holidays/italy/st-johns-day +# +# Changes 2019-09-18 +# - add Venetian regions (it_vr, it_vi, it_pd, it_ro, it_tv, it_bl, it_ve) +# - add patron's feast for each venetian region +# Sources: +# - https://it.wikipedia.org/wiki/Santi_patroni_cattolici_delle_citt%C3%A0_capoluogo_di_provincia_italiane +--- +months: + 0: + - name: Pasqua + regions: [it] + function: easter(year) + - name: Lunedì dell'Angelo + regions: [it] + function: easter(year) + function_modifier: 1 + 1: + - name: Capodanno + regions: [it] + mday: 1 + - name: Epifania + regions: [it] + mday: 6 + 4: + - name: Festa della Liberazione + regions: [it] + mday: 25 + - name: Festa di San Marco Evangelista + regions: [it_ve] + mday: 25 + - name: Festa di San Liberale + regions: [it_tv] + mday: 27 + 5: + - name: Festa dei Lavoratori + regions: [it] + mday: 1 + - name: Festa di San Zeno + regions: [it_vr] + mday: 21 + 6: + - name: Festa della Repubblica + regions: [it] + mday: 2 + - name: Festa di Sant'Antonio di Padova + regions: [it_pd] + mday: 13 + - name: Festa di San Giovanni Battista + regions: [it_fi, it_ge, it_to] + mday: 24 + - name: Festa di San Pietro e Paolo + regions: [it_rm] + mday: 29 + 8: + - name: Assunzione + regions: [it] + mday: 15 + 9: + - name: Festa della Madonna di Monte Berico + regions: [it_vi] + mday: 8 + 11: + - name: Ognissanti + regions: [it] + mday: 1 + - name: Festa di San Martino + regions: [it_bl] + mday: 11 + - name: Festa di San Bellino + regions: [it_ro] + mday: 26 + 12: + - name: Immacolata Concezione + regions: [it] + mday: 8 + - name: Natale + regions: [it] + mday: 25 + - name: Santo Stefano + regions: [it] + mday: 26 + +tests: + - given: + date: '2007-01-01' + regions: ["it"] + options: ["informal"] + expect: + name: "Capodanno" + - given: + date: '2007-01-06' + regions: ["it"] + options: ["informal"] + expect: + name: "Epifania" + - given: + date: '2007-04-08' + regions: ["it"] + options: ["informal"] + expect: + name: "Pasqua" + - given: + date: '2007-04-09' + regions: ["it"] + options: ["informal"] + expect: + name: "Lunedì dell'Angelo" + - given: + date: '2007-04-25' + regions: ["it"] + options: ["informal"] + expect: + name: "Festa della Liberazione" + + # This is a valid test but unfortunately we have no way right now to handle two holidays that occur on the same day in tests. + # Allowing for it will require some kind of update to the test def here to say 'I expect this to be the second result returned' + # and this will require ruby updates. + # + #- given: + # date: '2019-04-25' + # regions: ["it_ve"] + # options: ["informal"] + # expect: + # name: "Festa di San Marco Evangelista" + + - given: + date: '2019-04-27' + regions: ["it_tv"] + options: ["informal"] + expect: + name: "Festa di San Liberale" + - given: + date: '2007-05-01' + regions: ["it"] + options: ["informal"] + expect: + name: "Festa dei Lavoratori" + - given: + date: '2019-05-21' + regions: ["it_vr"] + options: ["informal"] + expect: + name: "Festa di San Zeno" + - given: + date: '2007-06-02' + regions: ["it"] + options: ["informal"] + expect: + name: "Festa della Repubblica" + - given: + date: '2019-06-13' + regions: ["it_pd"] + options: ["informal"] + expect: + name: "Festa di Sant'Antonio di Padova" + - given: + date: '2019-06-24' + regions: ["it_fi", "it_ge", "it_to"] + options: ["informal"] + expect: + name: "Festa di San Giovanni Battista" + - given: + date: '2019-06-24' + regions: ["it"] + expect: + holiday: false + - given: + date: '2019-06-29' + regions: ["it_rm"] + options: ["informal"] + expect: + name: "Festa di San Pietro e Paolo" + - given: + date: '2019-06-29' + regions: ["it"] + expect: + holiday: false + - given: + date: '2007-08-15' + regions: ["it"] + options: ["informal"] + expect: + name: "Assunzione" + - given: + date: '2019-09-08' + regions: ["it_vi"] + options: ["informal"] + expect: + name: "Festa della Madonna di Monte Berico" + - given: + date: '2007-11-01' + regions: ["it"] + options: ["informal"] + expect: + name: "Ognissanti" + - given: + date: '2019-11-11' + regions: ["it_bl"] + options: ["informal"] + expect: + name: "Festa di San Martino" + - given: + date: '2019-11-26' + regions: ["it_ro"] + options: ["informal"] + expect: + name: "Festa di San Bellino" + - given: + date: '2007-12-08' + regions: ["it"] + options: ["informal"] + expect: + name: "Immacolata Concezione" + - given: + date: '2007-12-25' + regions: ["it"] + options: ["informal"] + expect: + name: "Natale" + - given: + date: '2007-12-26' + regions: ["it"] + options: ["informal"] + expect: + name: "Santo Stefano" diff --git a/vendor/holidays/definitions/jp.yaml b/vendor/holidays/definitions/jp.yaml new file mode 100644 index 00000000..0e8c06c9 --- /dev/null +++ b/vendor/holidays/definitions/jp.yaml @@ -0,0 +1,761 @@ +# Japanese holiday definitions for Ruby Holiday gem. +# Reference: +# - http://www.h3.dion.ne.jp/~sakatsu/holiday_topic.htm +# - http://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html +# - https://en.wikipedia.org/wiki/Public_holidays_in_Japan +# +# For Japanese/English translations of each holiday: +# - https://kotoritone.com/japanesecalendar/holidays/2019/ +# +# This definition can calculate current Japanese holidays, +# don't compat with past changes of Japan Holiday Act. +# +# CHANGES: +# 2010-12-25: Initial version by Tatsuki Sugiura +# 2014-11-09: Added substitute holiday by Yoshiyuki Hirano +# 2015-05-10: Non-Monday substitute holidays by Shuhei Kagawa +# 2015-12-15: Added mountain day by Tsuyoshi Sano +# 2016-03-26: Updated to match new custom method signature. See below for more. Phil Trimble +# 2019-02-10: Changing usage of 'year_ranges.after' to 'year_ranges.from' and 'year_ranges.before' to 'year_ranges.until', see https://github.com/holidays/definitions/issues/117 +# +# MAINTAINER NOTE: This is the most complex set of custom date methods in the entire +# project, mainly surrounding the idea of 'substitute' holidays. Since this is +# the only one that is this complex I have settled on a less-than-ideal solution. +# It is overly verbose and not easy to follow. It will be a target for refactoring +# in the near future. +--- +months: + 1: + - name: 元日 + regions: [jp] + mday: 1 + - name: 成人の日 + regions: [jp] + wday: 1 + week: 2 + - name: 振替休日 + regions: [jp] + mday: 1 + function: jp_substitute_holiday(year, month, day) + 2: + - name: 建国記念の日 + regions: [jp] + mday: 11 + - name: 振替休日 + regions: [jp] + mday: 11 + function: jp_substitute_holiday(year, month, day) + - name: 天皇誕生日 + regions: [jp] + mday: 23 + year_ranges: + from: 2020 + - name: 振替休日 + regions: [jp] + mday: 23 + function: jp_substitute_holiday(year, month, day) + year_ranges: + from: 2020 + 3: + - name: 春分の日 + regions: [jp] + function: jp_vernal_equinox_day(year) + - name: 振替休日 + regions: [jp] + function: jp_vernal_equinox_day_substitute(year) + 4: + - name: 昭和の日 + regions: [jp] + mday: 29 + - name: 振替休日 + regions: [jp] + mday: 29 + function: jp_substitute_holiday(year, month, day) + - name: 休日 + regions: [jp] + mday: 30 + year_ranges: + limited: [2019] + 5: + - name: 天皇即位 + regions: [jp] + mday: 1 + year_ranges: + limited: [2019] + - name: 休日 + regions: [jp] + mday: 2 + year_ranges: + limited: [2019] + - name: 憲法記念日 + regions: [jp] + mday: 3 + - name: みどりの日 + regions: [jp] + mday: 4 + - name: こどもの日 + regions: [jp] + mday: 5 + - name: 振替休日 + regions: [jp] + mday: 3 + function: jp_substitute_holiday(year, month, day) + - name: 振替休日 + regions: [jp] + mday: 4 + function: jp_substitute_holiday(year, month, day) + - name: 振替休日 + regions: [jp] + mday: 5 + function: jp_substitute_holiday(year, month, day) + 7: + - name: 海の日 + regions: [jp] + mday: 20 + year_ranges: + between: + start: 1996 + end: 2002 + - name: 海の日 + regions: [jp] + wday: 1 + week: 3 + year_ranges: + between: + start: 2003 + end: 2019 + - name: 海の日 + regions: [jp] + mday: 23 + year_ranges: + limited: [2020] + - name: 海の日 + regions: [jp] + mday: 22 + year_ranges: + limited: [2021] + - name: 海の日 + regions: [jp] + wday: 1 + week: 3 + year_ranges: + from: 2022 + - name: 振替休日 + regions: [jp] + function: jp_marine_day_substitute(year) + year_ranges: + between: + start: 1996 + end: 2002 + - name: スポーツの日 + regions: [jp] + mday: 23 + year_ranges: + limited: [2021] + - name: スポーツの日 + regions: [jp] + mday: 24 + year_ranges: + limited: [2020] + 8: + - name: 山の日 + regions: [jp] + year_ranges: + between: + start: 2016 + end: 2019 + function: jp_mountain_holiday(year) + - name: 山の日 + regions: [jp] + mday: 10 + year_ranges: + limited: [2020] + - name: 山の日 + regions: [jp] + mday: 8 + year_ranges: + limited: [2021] + - name: 山の日 + regions: [jp] + year_ranges: + from: 2022 + function: jp_mountain_holiday(year) + - name: 振替休日 + regions: [jp] + year_ranges: + between: + start: 2016 + end: 2020 + function: jp_mountain_holiday_substitute(year) + - name: 振替休日 + regions: [jp] + mday: 9 + year_ranges: + limited: [2021] + - name: 振替休日 + regions: [jp] + year_ranges: + from: 2022 + function: jp_mountain_holiday_substitute(year) + 9: + - name: 敬老の日 + regions: [jp] + wday: 1 + week: 3 + - name: 振替休日 + regions: [jp] + function: jp_respect_for_aged_holiday_substitute(year) + - name: 国民の休日 + regions: [jp] + year_ranges: + from: 2003 + function: jp_citizens_holiday(year) + - name: 秋分の日 + regions: [jp] + function: jp_national_culture_day(year) + - name: 振替休日 + regions: [jp] + function: jp_national_culture_day_substitute(year) + 10: + - name: 体育の日 + regions: [jp] + wday: 1 + week: 2 + year_ranges: + until: 2019 + - name: スポーツの日 + regions: [jp] + wday: 1 + week: 2 + year_ranges: + from: 2022 + - name: 振替休日 + regions: [jp] + function: jp_health_sports_day_substitute(year) + - name: 即位礼正殿の儀 + regions: [jp] + mday: 22 + year_ranges: + limited: [2019] + 11: + - name: 文化の日 + regions: [jp] + mday: 3 + - name: 振替休日 + regions: [jp] + mday: 3 + function: jp_substitute_holiday(year, month, day) + - name: 勤労感謝の日 + regions: [jp] + mday: 23 + - name: 振替休日 + regions: [jp] + mday: 23 + function: jp_substitute_holiday(year, month, day) + 12: + - name: 天皇誕生日 + regions: [jp] + mday: 23 + year_ranges: + until: 2018 + - name: 振替休日 + regions: [jp] + mday: 23 + function: jp_substitute_holiday(year, month, day) + year_ranges: + until: 2018 + +methods: + jp_health_sports_day_substitute: + arguments: year + ruby: | + 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)) + + jp_vernal_equinox_day: + arguments: year + ruby: | + day = + case year + when 1851..1899 + 19.8277 + when 1900..1979 + 20.8357 + when 1980..2099 + 20.8431 + when 2100..2150 + 21.8510 + else + raise IndexError.new("Out of range") + end + day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor + day = day.floor + Date.civil(year, 3, day) + + jp_vernal_equinox_day_substitute: + arguments: year + ruby: | + date = Holidays::Factory::Definition.custom_methods_repository.find("jp_vernal_equinox_day(year)").call(year) + Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday) + + jp_marine_day_substitute: + arguments: year + ruby: | + 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)) + + jp_national_culture_day: + arguments: year + ruby: | + day = + case year + when 1851..1899 + 22.2588 + when 1900..1979 + 23.2588 + when 1980..2099 + 23.2488 + when 2100..2150 + 24.2488 + else + raise IndexError.new("Out of range") + end + day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor + day = day.floor + Date.civil(year, 9, day) + + jp_national_culture_day_substitute: + arguments: year + ruby: | + date = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year) + Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday) + + jp_citizens_holiday: + arguments: year + ruby: | + ncd = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year) + if ncd.wday == 3 + ncd - 1 + else + nil + end + + jp_mountain_holiday: + arguments: year + ruby: | + Date.civil(year, 8, 11) + + jp_mountain_holiday_substitute: + arguments: year + ruby: | + date = Holidays::Factory::Definition.custom_methods_repository.find("jp_mountain_holiday(year)").call(year) + Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday) + + jp_respect_for_aged_holiday_substitute: + arguments: year + ruby: | + 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)) + + jp_substitute_holiday: + arguments: year, month, day + ruby: | + date = Date.civil(year, month, day) + date.wday == 0 ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : nil + jp_next_weekday: + arguments: date + ruby: | + # This suuuucks. I have no idea how to make this not reach into our interal ruby API to do this. + # I'm punting, I'll come back to this. + is_holiday = Holidays::JP.holidays_by_month[date.month].any? do |holiday| + holiday[:mday] == date.day + end + date.wday == 0 || is_holiday ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : date + +tests: + - given: + date: '2008-01-01' + regions: ["jp"] + options: ["informal"] + expect: + name: "元日" + - given: + date: '2010-01-11' + regions: ["jp"] + options: ["informal"] + expect: + name: "成人の日" + - given: + date: '2008-02-11' + regions: ["jp"] + options: ["informal"] + expect: + name: "建国記念の日" + - given: + date: '2008-04-29' + regions: ["jp"] + options: ["informal"] + expect: + name: "昭和の日" + - given: + date: '2008-05-03' + regions: ["jp"] + options: ["informal"] + expect: + name: "憲法記念日" + - given: + date: '2008-05-05' + regions: ["jp"] + options: ["informal"] + expect: + name: "こどもの日" + - given: + date: '2010-07-19' + regions: ["jp"] + options: ["informal"] + expect: + name: "海の日" + - given: + date: '2010-09-20' + regions: ["jp"] + options: ["informal"] + expect: + name: "敬老の日" + - given: + date: '2010-10-11' + regions: ["jp"] + options: ["informal"] + expect: + name: "体育の日" + - given: + date: '2008-11-03' + regions: ["jp"] + options: ["informal"] + expect: + name: "文化の日" + - given: + date: '2008-11-23' + regions: ["jp"] + options: ["informal"] + expect: + name: "勤労感謝の日" + - given: + date: '2008-12-23' + regions: ["jp"] + options: ["informal"] + expect: + name: "天皇誕生日" + - given: + date: '2010-03-22' + regions: ["jp"] + options: ["informal"] + expect: + name: "振替休日" + - given: + date: '2008-11-24' + regions: ["jp"] + options: ["informal"] + expect: + name: "振替休日" + - given: + date: '2012-01-02' + regions: ["jp"] + options: ["informal"] + expect: + name: "振替休日" + - given: + date: '2013-05-06' + regions: ["jp"] + options: ["informal"] + expect: + name: "振替休日" + - given: + date: '2014-05-06' + regions: ["jp"] + options: ["informal"] + expect: + name: "振替休日" + - given: + date: '2015-05-06' + regions: ["jp"] + options: ["informal"] + expect: + name: "振替休日" + - given: + date: '2019-08-12' + regions: ["jp"] + options: ["informal"] + expect: + name: "振替休日" + - given: + date: '2004-03-20' + regions: ["jp"] + expect: + name: "春分の日" + - given: + date: '2005-03-20' + regions: ["jp"] + expect: + name: "春分の日" + - given: + date: '2006-03-21' + regions: ["jp"] + expect: + name: "春分の日" + - given: + date: '2007-03-21' + regions: ["jp"] + expect: + name: "春分の日" + - given: + date: '2008-03-20' + regions: ["jp"] + expect: + name: "春分の日" + - given: + date: '2009-03-20' + regions: ["jp"] + expect: + name: "春分の日" + - given: + date: '2010-03-21' + regions: ["jp"] + expect: + name: "春分の日" + - given: + date: '2004-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2005-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2006-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2007-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2008-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2009-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2010-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2011-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2012-09-22' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2013-09-23' + regions: ["jp"] + expect: + name: "秋分の日" + - given: + date: '2032-09-21' + regions: ["jp"] + expect: + name: "国民の休日" + - given: + date: '2049-09-21' + regions: ["jp"] + expect: + name: "国民の休日" + - given: + date: '2009-09-22' + regions: ["jp"] + expect: + name: "国民の休日" + - given: + date: '2015-09-22' + regions: ["jp"] + expect: + name: "国民の休日" + - given: + date: '2026-09-22' + regions: ["jp"] + expect: + name: "国民の休日" + - given: + date: '1996-07-20' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2002-07-20' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2003-07-21' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2004-07-19' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2005-07-18' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2006-07-17' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2007-07-16' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2009-07-20' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2013-07-15' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2014-07-21' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2019-07-15' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2020-07-20' + regions: ["jp"] + expect: + holiday: false + - given: + date: '2020-07-23' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2021-07-22' + regions: ["jp"] + expect: + name: "海の日" + - given: + date: '2016-08-11' + regions: ["jp"] + expect: + name: "山の日" + - given: + date: '2017-08-11' + regions: ["jp"] + expect: + name: "山の日" + - given: + date: '2018-08-11' + regions: ["jp"] + expect: + name: "山の日" + - given: + date: '2019-08-11' + regions: ["jp"] + expect: + name: "山の日" + - given: + date: '2020-08-10' + regions: ["jp"] + expect: + name: "山の日" + - given: + date: '2020-08-11' + regions: ["jp"] + expect: + holiday: false + - given: + date: '2021-08-08' + regions: ["jp"] + expect: + name: "山の日" + - given: + date: '2021-08-09' + regions: ["jp"] + expect: + name: "振替休日" + - given: + date: '2022-08-11' + regions: ["jp"] + expect: + name: "山の日" + - given: + date: '2015-08-11' + regions: ["jp"] + expect: + holiday: false + - given: + date: '1998-09-22' + regions: ["jp"] + expect: + holiday: false + - given: + date: '2018-12-23' + regions: ["jp"] + expect: + name: "天皇誕生日" + - given: + date: '2019-02-23' + regions: ["jp"] + expect: + holiday: false + - given: + date: '2019-12-23' + regions: ["jp"] + expect: + holiday: false + - given: + date: '2020-02-23' + regions: ["jp"] + expect: + name: "天皇誕生日" + - given: + date: '2019-10-14' + regions: ["jp"] + expect: + name: "体育の日" + - given: + date: '2020-07-24' + regions: ["jp"] + expect: + name: "スポーツの日" + - given: + date: '2020-10-12' + regions: ["jp"] + expect: + holiday: false + - given: + date: '2021-07-23' + regions: ["jp"] + expect: + name: "スポーツの日" diff --git a/vendor/holidays/definitions/kr.yaml b/vendor/holidays/definitions/kr.yaml new file mode 100644 index 00000000..0cf2b7c4 --- /dev/null +++ b/vendor/holidays/definitions/kr.yaml @@ -0,0 +1,166 @@ +# Republic of Korea holiday definitions for the Ruby Holiday gem. +# Provided by Jonathan Pike +# +# Updated: 2017-08-09. +# Sources: +# - https://en.wikipedia.org/wiki/List_of_public_holidays_in_South_Korea +# - http://www.hko.gov.hk/gts/time/conversion.htm (for Lunar Calendar Conversions) +# +# For Korean/English translations of each holiday: +# - https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EA%B3%B5%ED%9C%B4%EC%9D%BC +--- +months: + 1: + - name: 설날 + regions: [kr] + function: lunar_to_solar(year, month, day, region) + mday: 1 + - name: 설날 연휴 + regions: [kr] + function: lunar_to_solar(year, month, day, region) + mday: 2 + - name: 신정 + regions: [kr] + mday: 1 + 3: + - name: 3·1절 + regions: [kr] + mday: 1 + 4: + - name: 석가탄신일 + regions: [kr] + function: lunar_to_solar(year, month, day, region) + mday: 8 + 5: + - name: 어린이날 + regions: [kr] + mday: 5 + 6: + - name: 현충일 + regions: [kr] + mday: 6 + 7: + - name: 제헌절 + regions: [kr] + mday: 17 + type: informal + 8: + - name: 추석 연휴 + regions: [kr] + function: lunar_to_solar(year, month, day, region) + mday: 14 + - name: 추석 + regions: [kr] + function: lunar_to_solar(year, month, day, region) + mday: 15 + - name: 추석 연휴 + regions: [kr] + function: lunar_to_solar(year, month, day, region) + mday: 16 + - name: 광복절 + regions: [kr] + mday: 15 + 10: + - name: 개천절 + regions: [kr] + mday: 3 + - name: 한글날 + regions: [kr] + mday: 9 + 12: + - name: 크리스마스 + regions: [kr] + mday: 25 + - name: 설날 연휴 + regions: [kr] + function: lunar_to_solar(year, month, day, region) + mday: 30 + +tests: + - given: + date: '2016-02-08' + regions: ["kr"] + options: ["informal"] + expect: + name: "설날" + - given: + date: '2017-01-29' + regions: ["kr"] + options: ["informal"] + expect: + name: "설날 연휴" + - given: + date: '2016-05-14' + regions: ["kr"] + options: ["informal"] + expect: + name: "석가탄신일" + - given: + date: '2016-09-15' + regions: ["kr"] + options: ["informal"] + expect: + name: "추석" + - given: + date: '2016-03-01' + regions: ["kr"] + options: ["informal"] + expect: + name: "3·1절" + - given: + date: '2016-05-05' + regions: ["kr"] + options: ["informal"] + expect: + name: "어린이날" + - given: + date: '2016-06-06' + regions: ["kr"] + options: ["informal"] + expect: + name: "현충일" + - given: + date: '2016-07-17' + regions: ["kr"] + options: ["informal"] + expect: + name: "제헌절" + - given: + date: '2016-08-15' + regions: ["kr"] + options: ["informal"] + expect: + name: "광복절" + - given: + date: '2016-10-03' + regions: ["kr"] + options: ["informal"] + expect: + name: "개천절" + - given: + date: '2016-10-09' + regions: ["kr"] + options: ["informal"] + expect: + name: "한글날" + - given: + date: '2016-12-25' + regions: ["kr"] + options: ["informal"] + expect: + name: "크리스마스" + - given: + date: '2017-01-28' + regions: ["kr"] + options: ["informal"] + expect: + name: "설날" + +# These are commented out until I can have a discussion and better understand these holidays. +# Please see [issue 69](https://github.com/holidays/definitions/issues/69) (nice) for more information. +# - given: +# date: '2017-10-04' +# regions: ["kr"] +# options: ["informal"] +# expect: +# name: "추석" diff --git a/vendor/holidays/definitions/kz.yaml b/vendor/holidays/definitions/kz.yaml new file mode 100644 index 00000000..670b185f --- /dev/null +++ b/vendor/holidays/definitions/kz.yaml @@ -0,0 +1,128 @@ +# Kazakh holiday definitions for the Ruby Holiday gem. +# +# Created: 2020-09-18 +# Sources: +# - https://www.officeholidays.com/countries/kazakhstan/2020 +# - https://en.wikipedia.org/wiki/Public_holidays_in_Kazakhstan +--- +months: + 1: + - name: Jańa jyl # New Year's Day + regions: [kz] + mday: 1 + - name: Jańa jyl # 1st New Year holiday + regions: [kz] + mday: 2 + 3: + - name: Halyqaralyq áıelder kúni # International Women's Day + regions: [kz] + mday: 8 + - name: Naýryz Meıramy # Nauryz + regions: [kz] + mday: 21 + - name: Naýryz Meıramy # Nauryz + regions: [kz] + mday: 22 + - name: Naýryz Meıramy # Nauryz + regions: [kz] + mday: 23 + 5: + - name: Qazaqstan halqynyń birligi merekesi # Kazakhstan People's Unity Day + regions: [kz] + mday: 1 + - name: Otan Qorǵaýshy kuni # Defender of the Fatherland day + regions: [kz] + mday: 7 + - name: Jeńis kúni # Victory Day + regions: [kz] + mday: 9 + 7: + - name: Astana kúni # Capital Day + regions: [kz] + mday: 6 + 8: + - name: Qazaqstan Respýblıkasynyń Konstıtýcıyasy kúni # Constitution day + regions: [kz] + mday: 30 + 12: + - name: Túńǵysh Prezıdent kúni # First President Day + regions: [kz] + mday: 1 + - name: Táýelsizdik kúni # Independence day + regions: [kz] + mday: 16 + - name: Táýelsizdik kúni # Independence day + regions: [kz] + mday: 17 + +tests: + - given: + date: ['2020-1-1'] + regions: ["kz"] + expect: + name: "Jańa jyl" + - given: + date: ['2020-1-2'] + regions: ["kz"] + expect: + name: "Jańa jyl" + - given: + date: '2020-3-8' + regions: ["kz"] + expect: + name: "Halyqaralyq áıelder kúni" + - given: + date: '2020-3-21' + regions: ["kz"] + expect: + name: "Naýryz Meıramy" + - given: + date: '2020-3-22' + regions: ["kz"] + expect: + name: "Naýryz Meıramy" + - given: + date: '2020-3-23' + regions: ["kz"] + expect: + name: "Naýryz Meıramy" + - given: + date: '2020-5-1' + regions: ["kz"] + expect: + name: "Qazaqstan halqynyń birligi merekesi" + - given: + date: '2020-5-7' + regions: ["kz"] + expect: + name: "Otan Qorǵaýshy kuni" + - given: + date: '2020-5-9' + regions: ["kz"] + expect: + name: "Jeńis kúni" + - given: + date: '2020-7-6' + regions: ["kz"] + expect: + name: "Astana kúni" + - given: + date: '2020-8-30' + regions: ["kz"] + expect: + name: "Qazaqstan Respýblıkasynyń Konstıtýcıyasy kúni" + - given: + date: '2020-12-1' + regions: ["kz"] + expect: + name: "Túńǵysh Prezıdent kúni" + - given: + date: '2020-12-16' + regions: ["kz"] + expect: + name: "Táýelsizdik kúni" + - given: + date: '2020-12-17' + regions: ["kz"] + expect: + name: "Táýelsizdik kúni" diff --git a/vendor/holidays/definitions/li.yaml b/vendor/holidays/definitions/li.yaml new file mode 100644 index 00000000..59cb4c52 --- /dev/null +++ b/vendor/holidays/definitions/li.yaml @@ -0,0 +1,154 @@ +# Liechtenstein holiday definitions for the Ruby Holiday gem. +# +# Updated: 2011-10-17. +# Sources: +# http://www.tourismus.li/de/navpage-RegionLI-InformationLI-44728.html +--- +months: + 0: + - name: Fasnachtsdienstag + regions: [li] + function: easter(year) + function_modifier: -47 + - name: Karfreitag + regions: [li] + function: easter(year) + function_modifier: -2 + - name: Ostern + regions: [li] + function: easter(year) + type: informal + - name: Ostermontag + regions: [li] + function: easter(year) + function_modifier: 1 + - name: Auffahrt + regions: [li] + function: easter(year) + function_modifier: 39 + - name: Pfingstmontag + regions: [li] + function: easter(year) + function_modifier: 50 + - name: Fronleichnam + regions: [li] + function: easter(year) + function_modifier: 60 + 1: + - name: Neujahrstag + regions: [li] + mday: 1 + - name: Heilige Drei Könige + regions: [li, li] + mday: 6 + 2: + - name: Maria Lichtmess + regions: [li] + mday: 2 + 3: + - name: St. Josef + regions: [li] + mday: 19 + 5: + - name: Tag der Arbeit + regions: [li] + mday: 1 + 8: + - name: Staatsfeiertag + regions: [li] + mday: 15 + 9: + - name: Maria Geburt + regions: [li] + mday: 8 + 11: + - name: Allerheiligen + regions: [li] + mday: 1 + 12: + - name: Maria Empfängnis + regions: [li] + mday: 8 + - name: Heilig Abend + regions: [li] + mday: 24 + - name: Weihnachten + regions: [li] + mday: 25 + - name: Stefanstag + regions: [li] + mday: 26 + - name: Silvester + regions: [li] + mday: 31 + +tests: + - given: + date: '2009-01-01' + regions: ["li"] + options: ["informal"] + expect: + name: "Neujahrstag" + - given: + date: '2011-03-08' + regions: ["li"] + options: ["informal"] + expect: + name: "Fasnachtsdienstag" + - given: + date: '2009-04-10' + regions: ["li"] + options: ["informal"] + expect: + name: "Karfreitag" + - given: + date: '2009-04-12' + regions: ["li"] + options: ["informal"] + expect: + name: "Ostern" + - given: + date: '2009-04-13' + regions: ["li"] + options: ["informal"] + expect: + name: "Ostermontag" + - given: + date: '2009-05-21' + regions: ["li"] + options: ["informal"] + expect: + name: "Auffahrt" + - given: + date: '2009-06-01' + regions: ["li"] + options: ["informal"] + expect: + name: "Pfingstmontag" + - given: + date: '2009-12-25' + regions: ["li"] + options: ["informal"] + expect: + name: "Weihnachten" + - given: + date: '2009-12-26' + regions: ["li"] + options: ["informal"] + expect: + name: "Stefanstag" + - given: + date: '2009-06-11' + regions: ["li"] + expect: + name: "Fronleichnam" + - given: + date: '2009-08-15' + regions: ["li"] + expect: + name: "Staatsfeiertag" + - given: + date: '2009-11-01' + regions: ["li"] + expect: + name: "Allerheiligen" diff --git a/vendor/holidays/definitions/lib/validation/custom_method_validator.rb b/vendor/holidays/definitions/lib/validation/custom_method_validator.rb new file mode 100644 index 00000000..ad643ef7 --- /dev/null +++ b/vendor/holidays/definitions/lib/validation/custom_method_validator.rb @@ -0,0 +1,38 @@ +require_relative 'error' + +module Definitions + module Validation + class CustomMethod + VALID_ARGUMENTS = ["date", "year", "month", "day"] + + def call(methods) + methods.each do |name, method| + raise Errors::InvalidCustomMethod unless + valid_name?(name) && + valid_arguments?(method['arguments']) && + valid_source?(method['ruby']) + end + + true + end + + private + + def valid_name?(name) + !name.nil? && !name.empty? + end + + def valid_arguments?(arguments) + !arguments.nil? && + !arguments.empty? && + arguments.split(",").all? { |arg| + arg == arg.chomp && VALID_ARGUMENTS.include?(arg.strip) + } + end + + def valid_source?(source) + !source.nil? && !source.empty? + end + end + end +end diff --git a/vendor/holidays/definitions/lib/validation/definition_validator.rb b/vendor/holidays/definitions/lib/validation/definition_validator.rb new file mode 100644 index 00000000..247db6de --- /dev/null +++ b/vendor/holidays/definitions/lib/validation/definition_validator.rb @@ -0,0 +1,35 @@ +require_relative 'error' + +module Definitions + module Validation + class Definition + def initialize(custom_method_validator, months_validator, test_validator) + @custom_method_validator = custom_method_validator + @months_validator = months_validator + @test_validator = test_validator + end + + def call(definition) + validate_months!(definition['months']) + validate_methods!(definition['methods']) + validate_tests!(definition['tests']) + + true + end + + private + + def validate_months!(months) + @months_validator.call(months) + end + + def validate_methods!(methods) + @custom_method_validator.call(methods) unless methods.nil? + end + + def validate_tests!(tests) + @test_validator.call(tests) unless tests.nil? + end + end + end +end diff --git a/vendor/holidays/definitions/lib/validation/error.rb b/vendor/holidays/definitions/lib/validation/error.rb new file mode 100644 index 00000000..d3095bef --- /dev/null +++ b/vendor/holidays/definitions/lib/validation/error.rb @@ -0,0 +1,11 @@ +module Definitions + module Errors + class Error < StandardError; end + class NoMonths < Error ; end + class InvalidMonth < Error; end + class InvalidMethod < Error; end + class InvalidRegions < Error; end + class InvalidCustomMethod < Error; end + class InvalidTest < Error; end + end +end diff --git a/vendor/holidays/definitions/lib/validation/month_validator.rb b/vendor/holidays/definitions/lib/validation/month_validator.rb new file mode 100644 index 00000000..71a3232c --- /dev/null +++ b/vendor/holidays/definitions/lib/validation/month_validator.rb @@ -0,0 +1,58 @@ +require_relative 'error' + +module Definitions + module Validation + class Month + def call(months) + raise Errors::NoMonths.new("Months is required, received: '#{months}'") if months.nil? || months.empty? + + months.each do |month, month_defs| + raise Errors::InvalidMonth.new("All months must be an integer, received: #{months}") unless month.is_a?(Integer) + raise Errors::InvalidMonth.new("All months must be between 0 and 12, received: #{months}") if month < 0 || month > 12 + + month_defs.each do |month_def| + raise Errors::InvalidMonth.new("All months must have a name, received: #{months}") if month_def['name'].nil? || month_def['name'].empty? + + raise Errors::InvalidRegions.new("A month must contain at least one region, received: #{months}") if month_def['regions'].nil? || month_def['regions'].empty? + + month_def['regions'].each do |region| + raise Errors::InvalidRegions.new("A month must contain at least one region, received: #{months}") if region.nil? || region.empty? + end + + if month_def.key?("year_ranges") + raise Errors::InvalidMonth.new("year_ranges only supports a single selector at this time, received: #{months}") unless month_def["year_ranges"].is_a?(Hash) && month_def["year_ranges"].size == 1 + + selector = month_def["year_ranges"].keys.first + value = month_def["year_ranges"][selector] + + raise Errors::InvalidMonth.new("The :year_ranges value only accepts the following: :until, :from, :limited, :between, received: #{months}") unless [:until, :from, :limited, :between].include?(selector.to_sym) + + case selector + when "until" + raise Errors::InvalidMonth.new("The year_ranges.until value must contain a single 'year' integer, ex. 2018, received: #{months}") unless value.is_a?(Integer) + when "from" + raise Errors::InvalidMonth.new("The year_ranges.from value must contain a single 'year' integer, ex. 2018, received: #{months}") unless value.is_a?(Integer) + when "limited" + raise Errors::InvalidMonth.new("The year_ranges.limited value must contain an array of 'year' integers, ex. [2018], received: #{months}") unless value.is_a?(Array) + + value.each do |j| + raise Errors::InvalidMonth.new("The year_ranges.limited value must contain an array of 'year' integers, ex. [2018], received: #{months}") unless j.is_a?(Integer) + end + when "between" + raise Errors::InvalidMonth.new("year_ranges.between must contain both a 'start' and 'end' key, received: #{months}") unless value.is_a?(Hash) && value.key?("start") && value.key?("end") + + raise Errors::InvalidMonth.new("The year_ranges.between.start value must contain a single 'year' integer, ex. 2018, received: #{months}") unless value["start"].is_a?(Integer) + raise Errors::InvalidMonth.new("The year_ranges.between.end value must contain a single 'year' integer, ex. 2018, received: #{months}") unless value["end"].is_a?(Integer) + + raise Errors::InvalidMonth.new("The year_ranges.between.end value cannot be before the start value, received: #{months}") if value["end"] < value["start"] + raise Errors::InvalidMonth.new("The year_ranges.between start and end values cannot be the same, received: #{months}") if value["end"] == value["start"] + end + end + end + end + + true + end + end + end +end diff --git a/vendor/holidays/definitions/lib/validation/run.rb b/vendor/holidays/definitions/lib/validation/run.rb new file mode 100644 index 00000000..99e4d1d5 --- /dev/null +++ b/vendor/holidays/definitions/lib/validation/run.rb @@ -0,0 +1,66 @@ +## encoding: utf-8 + +require 'yaml' + +require_relative 'error' +require_relative 'definition_validator' +require_relative 'custom_method_validator' +require_relative 'month_validator' +require_relative 'test_validator' + +definitions_path = '/../../' + +module Definitions + class Validate + def initialize(path, definition_validator) + @path = path + @definition_validator = definition_validator + end + + def call + path = File.expand_path(File.dirname(__FILE__)) + @path + + definition_count = 0 + + Dir.foreach(path) do |item| + next if item == '.' or item == '..' + + target = path+item + next if File.extname(target) != '.yaml' + next if item == 'index.yaml' + + definition_count += 1 + + begin + definition_file = YAML.load(File.open(target)) + validate!(definition_file) + rescue Psych::SyntaxError => e + puts "Failed on file '#{target}', YAML parse error: #{e}" + puts "This means your YAML is somehow invalid. Test your file on something like yamllint.com to find the issue." + exit + rescue => e + puts "Failed on file '#{target}', error: #{e}" + exit + end + end + + puts "Success!" + puts "Definition count: #{definition_count}" + end + + private + + def validate!(definition) + raise StandardError unless @definition_validator.call(definition) + end + end +end + +Definitions::Validate.new( + definitions_path, + Definitions::Validation::Definition.new( + Definitions::Validation::CustomMethod.new, + Definitions::Validation::Month.new, + Definitions::Validation::Test.new, + ), +).call diff --git a/vendor/holidays/definitions/lib/validation/test_validator.rb b/vendor/holidays/definitions/lib/validation/test_validator.rb new file mode 100644 index 00000000..130673eb --- /dev/null +++ b/vendor/holidays/definitions/lib/validation/test_validator.rb @@ -0,0 +1,83 @@ +require 'date' +require_relative 'error' + +module Definitions + module Validation + class Test + def call(tests) + err!("Tests cannot be nil") if tests.nil? + err!("Tests cannot be empty. They are too important to leave out!") if tests.empty? + err!("Tests must be an array") unless tests.is_a?(Array) + + tests.each do |t| + validate!(t) + end + + true + end + + private + + def err!(msg) + raise Errors::InvalidTest.new(msg) + end + + def validate!(t) + validate_given!(t["given"]) + validate_expect!(t["expect"]) + rescue Errors::InvalidTest => e + raise Errors::InvalidTest.new("#{e.message} - #{t.inspect}") + end + + def validate_given!(g) + err!("Test must contain given key") if g.nil? + + validate_regions!(g["regions"]) + validate_options!(g["options"]) + validate_date_values!(g) + end + + def validate_regions!(regions) + err!("Test contains invalid regions (must be an array of strings)") unless regions.is_a?(Array) + err!("Test must contain at least one region") if regions.nil? || regions.empty? + + regions.each do |r| + err!("Test cannot contain empty regions") if r.empty? + end + end + + def validate_options!(opts) + if opts + opts = [ opts ] unless opts.is_a?(Array) + opts.each do |opt| + err!("Test contains invalid option(s)") unless opt == "informal" || opt == "observed" + end + end + end + + def validate_date_values!(given) + err!("Test must contain some date") unless given.has_key?("date") + + given["date"] = [ given["date"] ] unless given["date"].is_a?(Array) + + given["date"].each do |d| + parse_date!(d) + end + end + + def parse_date!(d) + DateTime.parse(d) + rescue TypeError, ArgumentError, NoMethodError + err!("Test must contain valid date, date value was: '#{d}") + end + + def validate_expect!(e) + err!("Test must contain expect key") if e.nil? + + if e.has_key?("holiday") && ![true, false].include?(e["holiday"]) + err!("Test contains invalid holiday value (must be true/false)") + end + end + end + end +end diff --git a/vendor/holidays/definitions/lt.yaml b/vendor/holidays/definitions/lt.yaml new file mode 100644 index 00000000..70d7a18a --- /dev/null +++ b/vendor/holidays/definitions/lt.yaml @@ -0,0 +1,190 @@ +# Lithuanian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2014-10-02 +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Lithuania +# - http://day.lt/sventes/nedarbo +--- +months: + 0: + - name: Šv. Velykos + regions: [lt] + function: easter(year) + - name: Antroji Velykų diena + regions: [lt] + function: easter(year) + function_modifier: 1 + 1: + - name: Naujieji metai + regions: [lt] + mday: 1 + 2: + - name: Valstybės atkūrimo diena + regions: [lt] + mday: 16 + 3: + - name: Nepriklausomybės atkūrimo diena + regions: [lt] + mday: 11 + 5: + - name: Darbininkų diena + regions: [lt] + mday: 1 + 6: + - name: Joninės + regions: [lt] + mday: 24 + 7: + - name: Valstybės diena + regions: [lt] + mday: 6 + 8: + - name: Žolinė + regions: [lt] + mday: 15 + 11: + - name: Visų šventųjų diena + regions: [lt] + mday: 1 + 12: + - name: Šv. Kūčios + regions: [lt] + mday: 24 + - name: Šv. Kalėdos + regions: [lt] + mday: 25 + - name: Antroji Kalėdų diena + regions: [lt] + mday: 26 + +tests: + - given: + date: '2008-01-01' + regions: ["lt"] + expect: + name: "Naujieji metai" + - given: + date: '2008-02-16' + regions: ["lt"] + expect: + name: "Valstybės atkūrimo diena" + - given: + date: '2008-03-11' + regions: ["lt"] + expect: + name: "Nepriklausomybės atkūrimo diena" + - given: + date: '2008-03-23' + regions: ["lt"] + expect: + name: "Šv. Velykos" + - given: + date: '2008-03-24' + regions: ["lt"] + expect: + name: "Antroji Velykų diena" + - given: + date: '2008-05-01' + regions: ["lt"] + expect: + name: "Darbininkų diena" + - given: + date: '2008-06-24' + regions: ["lt"] + expect: + name: "Joninės" + - given: + date: '2008-07-06' + regions: ["lt"] + expect: + name: "Valstybės diena" + - given: + date: '2008-08-15' + regions: ["lt"] + expect: + name: "Žolinė" + - given: + date: '2008-11-01' + regions: ["lt"] + expect: + name: "Visų šventųjų diena" + - given: + date: '2008-12-24' + regions: ["lt"] + expect: + name: "Šv. Kūčios" + - given: + date: '2008-12-25' + regions: ["lt"] + expect: + name: "Šv. Kalėdos" + - given: + date: '2008-12-26' + regions: ["lt"] + expect: + name: "Antroji Kalėdų diena" + - given: + date: '2012-01-01' + regions: ["lt"] + expect: + name: "Naujieji metai" + - given: + date: '2012-02-16' + regions: ["lt"] + expect: + name: "Valstybės atkūrimo diena" + - given: + date: '2012-03-11' + regions: ["lt"] + expect: + name: "Nepriklausomybės atkūrimo diena" + - given: + date: '2012-04-08' + regions: ["lt"] + expect: + name: "Šv. Velykos" + - given: + date: '2012-04-09' + regions: ["lt"] + expect: + name: "Antroji Velykų diena" + - given: + date: '2012-05-01' + regions: ["lt"] + expect: + name: "Darbininkų diena" + - given: + date: '2012-06-24' + regions: ["lt"] + expect: + name: "Joninės" + - given: + date: '2012-07-06' + regions: ["lt"] + expect: + name: "Valstybės diena" + - given: + date: '2012-08-15' + regions: ["lt"] + expect: + name: "Žolinė" + - given: + date: '2012-11-01' + regions: ["lt"] + expect: + name: "Visų šventųjų diena" + - given: + date: '2012-12-24' + regions: ["lt"] + expect: + name: "Šv. Kūčios" + - given: + date: '2012-12-25' + regions: ["lt"] + expect: + name: "Šv. Kalėdos" + - given: + date: '2012-12-26' + regions: ["lt"] + expect: + name: "Antroji Kalėdų diena" diff --git a/vendor/holidays/definitions/lu.yaml b/vendor/holidays/definitions/lu.yaml new file mode 100644 index 00000000..7595e512 --- /dev/null +++ b/vendor/holidays/definitions/lu.yaml @@ -0,0 +1,123 @@ +# Luxembourg holiday definitions for the Ruby Holiday gem. +# +# Updated: 2020-01-21. +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Luxembourg +--- +months: + 0: + - name: Ouschterméindeg + regions: [lu] + function: easter(year) + function_modifier: 1 + - name: Christi Himmelfaart + regions: [lu] + function: easter(year) + function_modifier: 39 + - name: Péngschtméindeg + regions: [lu] + function: easter(year) + function_modifier: 49 + 1: + - name: Neijoerschdag + regions: [lu] + mday: 1 + 5: + - name: Dag vun der Aarbecht + regions: [lu] + mday: 1 + - name: Europadag + regions: [lu] + mday: 9 + year_ranges: + from: 2019 + 6: + - name: Nationalfeierdag + regions: [lu] + mday: 23 + 8: + - name: Léiffrawëschdag + regions: [lu] + mday: 15 + 11: + - name: Allerhellgen + regions: [lu] + mday: 1 + 12: + - name: Chrëschtdag + regions: [lu] + mday: 25 + - name: Stiefesdag + regions: [lu] + mday: 26 + +tests: + - given: + date: '2008-01-01' + regions: ["lu"] + options: ["informal"] + expect: + name: "Neijoerschdag" + - given: + date: '2008-03-24' + regions: ["lu"] + options: ["informal"] + expect: + name: "Ouschterméindeg" + - given: + date: '2008-05-01' + regions: ["lu"] + options: ["informal"] + expect: + name: "Christi Himmelfaart" + - given: + date: '2008-06-23' + regions: ["lu"] + options: ["informal"] + expect: + name: "Nationalfeierdag" + - given: + date: '2008-08-15' + regions: ["lu"] + options: ["informal"] + expect: + name: "Léiffrawëschdag" + - given: + date: '2008-11-01' + regions: ["lu"] + options: ["informal"] + expect: + name: "Allerhellgen" + - given: + date: '2008-12-25' + regions: ["lu"] + options: ["informal"] + expect: + name: "Chrëschtdag" + - given: + date: '2008-12-26' + regions: ["lu"] + options: ["informal"] + expect: + name: "Stiefesdag" + - given: + date: '2008-05-11' + regions: ["lu"] + options: ["informal"] + expect: + name: "Péngschtméindeg" + - given: + date: '2019-05-01' + regions: ["lu"] + expect: + name: "Dag vun der Aarbecht" + - given: + date: '2019-05-09' + regions: ["lu"] + expect: + name: "Europadag" + - given: + date: '2018-05-09' + regions: ["lu"] + expect: + holiday: false \ No newline at end of file diff --git a/vendor/holidays/definitions/lv.yaml b/vendor/holidays/definitions/lv.yaml new file mode 100644 index 00000000..d7e5c180 --- /dev/null +++ b/vendor/holidays/definitions/lv.yaml @@ -0,0 +1,216 @@ +# Latvian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2019-05-01 +# Sources: +# - https://likumi.lv/ta/id/72608 (Likums "Par svētku, atceres un atzīmējamām dienām") +--- +months: + 0: + - name: Lielā Piektdiena # Good Friday + regions: [lv] + function: easter(year) + function_modifier: -2 + - name: Pirmās Lieldienas # Easter Sunday + regions: [lv] + function: easter(year) + - name: Otrās Lieldienas # Easter Monday + regions: [lv] + function: easter(year) + function_modifier: 1 + - name: Vasarsvētki # Summer's Day / Pentecost + regions: [lv] + function: easter(year) + function_modifier: 49 + - name: Vispārējo latviešu Dziesmu un deju svētku noslēguma diena + regions: [lv] + function: lv_song_and_dance_festival_end_date(year) + observed: to_monday_if_weekend(date) + year_ranges: + from: 2018 + 1: + - name: Jaungada diena # New Year's Day + regions: [lv] + mday: 1 + 5: + - name: Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena # Labor day, Anniversary of the Convocation of the Constitutional Assembly of the Republic of Latvia + regions: [lv] + mday: 1 + - name: Latvijas Republikas Neatkarības atjaunošanas diena # Day of the Restoration of Independence of the Republic of Latvia + regions: [lv] + mday: 4 + observed: to_monday_if_weekend(date) + - name: Mātes diena # Mother's Day + regions: [lv] + week: 2 + wday: 0 + 6: + - name: Līgo diena # Midsummer + regions: [lv] + mday: 23 + - name: Jāņu diena # Midsummer + regions: [lv] + mday: 24 + 9: + - name: Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena # Visit of Pope Francis + regions: [lv] + mday: 24 + year_ranges: + limited: [2018] + 11: + - name: Latvijas Republikas Proklamēšanas diena # Proclamation Day of the Republic of Latvia + regions: [lv] + mday: 18 + observed: to_monday_if_weekend(date) + 12: + - name: Ziemassvētku vakars # Christmas Eve + regions: [lv] + mday: 24 + - name: Pirmie Ziemassvētki # Christmas Day + regions: [lv] + mday: 25 + - name: Otrie Ziemassvētki # Boxing Day + regions: [lv] + mday: 26 + - name: Vecgada diena # New Year's Eve + regions: [lv] + mday: 31 + +methods: + lv_song_and_dance_festival_end_date: + arguments: year + ruby: | + case year + when 2018 + # https://likumi.lv/ta/id/281541 (Ministru kabineta rīkojums Nr. 252 "Par XXVI Vispārējo latviešu dziesmu un XVI Deju svētku norises laiku") + Date.new(2018, 7, 8) + when 2023 + # Event's period/next year is known, but precise dates aren't. + # Previously, dates were announced 2 years ahead, so at ~2021-05 this method would need to be revisited. + end + +tests: + - given: + date: ['2018-01-01', '2019-01-01', '2029-01-01'] + regions: ["lv"] + expect: + name: "Jaungada diena" + - given: + date: ['2018-03-30', '2019-04-19', '2039-04-08'] + regions: ["lv"] + expect: + name: "Lielā Piektdiena" + - given: + date: ['2018-04-01', '2019-04-21', '2039-04-10'] + regions: ["lv"] + expect: + name: "Pirmās Lieldienas" + - given: + date: ['2018-04-02', '2019-04-22', '2039-04-11'] + regions: ["lv"] + expect: + name: "Otrās Lieldienas" + - given: + date: ['2018-05-01', '2019-05-01', '2029-05-01'] + regions: ["lv"] + expect: + name: "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena" + - given: + date: ['2018-05-04', '2019-05-04', '2020-05-04'] + regions: ["lv"] + expect: + name: "Latvijas Republikas Neatkarības atjaunošanas diena" + - given: + date: '2019-05-06' + regions: ["lv"] + options: ["observed"] + expect: + name: "Latvijas Republikas Neatkarības atjaunošanas diena" + - given: + date: '2020-05-04' + regions: ["lv"] + options: ["observed"] + expect: + name: "Latvijas Republikas Neatkarības atjaunošanas diena" + - given: + date: ['2019-05-12', '2020-05-10', '2029-05-13'] + regions: ["lv"] + expect: + name: "Mātes diena" + - given: + date: ['2019-06-09', '2020-05-31', '2029-05-20'] + regions: ["lv"] + expect: + name: "Vasarsvētki" + - given: + date: ['2019-06-23', '2020-06-23', '2029-06-23'] + regions: ["lv"] + expect: + name: "Līgo diena" + - given: + date: ['2019-06-24', '2020-06-24', '2029-06-24'] + regions: ["lv"] + expect: + name: "Jāņu diena" + - given: + date: '2018-07-08' + regions: ["lv"] + expect: + name: "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena" + - given: + date: '2018-07-09' + regions: ["lv"] + options: ["observed"] + expect: + name: "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena" + - given: + date: ['2019-07-08', '2019-07-09'] + regions: ["lv"] + expect: + holiday: false + - given: + date: '2018-09-24' + regions: ["lv"] + expect: + name: "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena" + - given: + date: '2019-09-24' + regions: ["lv"] + expect: + holiday: false + - given: + date: ['2019-11-18', '2020-11-18', '2029-11-18'] + regions: ["lv"] + expect: + name: "Latvijas Republikas Proklamēšanas diena" + - given: + date: '2020-11-18' + regions: ["lv"] + options: ["observed"] + expect: + name: "Latvijas Republikas Proklamēšanas diena" + - given: + date: '2029-11-19' + regions: ["lv"] + options: ["observed"] + expect: + name: "Latvijas Republikas Proklamēšanas diena" + - given: + date: ['2019-12-24', '2020-12-24', '2029-12-24'] + regions: ["lv"] + expect: + name: "Ziemassvētku vakars" + - given: + date: ['2019-12-25', '2020-12-25', '2029-12-25'] + regions: ["lv"] + expect: + name: "Pirmie Ziemassvētki" + - given: + date: ['2019-12-26', '2020-12-26', '2029-12-26'] + regions: ["lv"] + expect: + name: "Otrie Ziemassvētki" + - given: + date: ['2019-12-31', '2020-12-31', '2029-12-31'] + regions: ["lv"] + expect: + name: "Vecgada diena" diff --git a/vendor/holidays/definitions/ma.yaml b/vendor/holidays/definitions/ma.yaml new file mode 100644 index 00000000..8f67f6db --- /dev/null +++ b/vendor/holidays/definitions/ma.yaml @@ -0,0 +1,96 @@ +# Morocco holiday (incomplete)definitions for the Ruby Holiday gem. +# +# Updated: 2013-07-01. +# Some dates in Islamic Calendar are missing. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Morocco +--- +months: + 1: + - name: Ras l' âm + regions: [ma] + mday: 1 + - name: Takdim watikat al-istiqlal + regions: [ma] + mday: 11 + 5: + - name: Eid Ash-Shughl + regions: [ma] + mday: 1 + 7: + - name: Eid Al-Ârch + regions: [ma] + mday: 30 + 8: + - name: Zikra Oued Ed-Dahab + regions: [ma] + mday: 14 + - name: Thawrat al malik wa shâab + regions: [ma] + mday: 20 + - name: Eid Al Milad + regions: [ma] + mday: 21 + 11: + - name: Eid Al Massira Al Khadra + regions: [ma] + mday: 6 + - name: Eid Al Istiqulal + regions: [ma] + mday: 18 + +tests: + - given: + date: '2007-01-01' + regions: ["ma"] + options: ["informal"] + expect: + name: "Ras l' âm" + - given: + date: '2007-01-11' + regions: ["ma"] + options: ["informal"] + expect: + name: "Takdim watikat al-istiqlal" + - given: + date: '2007-05-01' + regions: ["ma"] + options: ["informal"] + expect: + name: "Eid Ash-Shughl" + - given: + date: '2007-07-30' + regions: ["ma"] + options: ["informal"] + expect: + name: "Eid Al-Ârch" + - given: + date: '2007-08-14' + regions: ["ma"] + options: ["informal"] + expect: + name: "Zikra Oued Ed-Dahab" + - given: + date: '2007-08-20' + regions: ["ma"] + options: ["informal"] + expect: + name: "Thawrat al malik wa shâab" + - given: + date: '2007-08-21' + regions: ["ma"] + options: ["informal"] + expect: + name: "Eid Al Milad" + - given: + date: '2007-11-06' + regions: ["ma"] + options: ["informal"] + expect: + name: "Eid Al Massira Al Khadra" + - given: + date: '2007-11-18' + regions: ["ma"] + options: ["informal"] + expect: + name: "Eid Al Istiqulal" diff --git a/vendor/holidays/definitions/mt_en.yaml b/vendor/holidays/definitions/mt_en.yaml new file mode 100644 index 00000000..a00f6630 --- /dev/null +++ b/vendor/holidays/definitions/mt_en.yaml @@ -0,0 +1,131 @@ +# Maltese holiday definitions for the Ruby Holiday gem. In English. +# +# Updated: 2017-06-08 +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Malta +--- +months: + 0: + - name: Good Friday # Il-Ġimgħa l-Kbira + regions: [mt_en] + function: easter(year) + function_modifier: -2 + 1: + - name: New Year's Day # L-Ewwel tas-Sena + regions: [mt_en] + mday: 1 + 2: + - name: Feast of Saint Paul's Shipwreck in Malta # Nawfraġju ta' San Pawl + regions: [mt_en] + mday: 10 + 3: + - name: Feast of Saint Joseph # San Ġużepp + regions: [mt_en] + mday: 19 + - name: Freedom Day # Jum il-Ħelsien + regions: [mt_en] + mday: 31 + 5: + - name: Worker's Day # Jum il-Ħaddiem + regions: [mt_en] + mday: 1 + 6: + - name: Sette Giugno + regions: [mt_en] + mday: 7 + - name: Feast of Saint Peter & Saint Paul # L-Imnarja + regions: [mt_en] + mday: 29 + 8: + - name: Feast of the Assumption of Our Lady # Santa Marija + regions: [mt_en] + mday: 15 + 9: + - name: Victory Day # Jum il-Vitorja + regions: [mt_en] + mday: 8 + - name: Independence Day # Jum l-Indipendenza + regions: [mt_en] + mday: 21 + 12: + - name: Feast of the Immaculate Conception # Il-Kunċizzjoni + regions: [mt_en] + mday: 8 + - name: Republic Day # Jum ir-Repubblika + regions: [mt_en] + mday: 13 + - name: Christmas Day # Il-Milied + regions: [mt_en] + mday: 25 + +tests: + - given: + date: '2017-1-1' + regions: ["mt_en"] + expect: + name: "New Year's Day" + - given: + date: '2017-2-10' + regions: ["mt_en"] + expect: + name: "Feast of Saint Paul's Shipwreck in Malta" + - given: + date: '2017-3-19' + regions: ["mt_en"] + expect: + name: "Feast of Saint Joseph" + - given: + date: '2017-3-31' + regions: ["mt_en"] + expect: + name: "Freedom Day" + - given: + date: '2017-5-1' + regions: ["mt_en"] + expect: + name: "Worker's Day" + - given: + date: '2017-6-7' + regions: ["mt_en"] + expect: + name: "Sette Giugno" + - given: + date: '2017-6-29' + regions: ["mt_en"] + expect: + name: "Feast of Saint Peter & Saint Paul" + - given: + date: '2017-8-15' + regions: ["mt_en"] + expect: + name: "Feast of the Assumption of Our Lady" + - given: + date: '2017-9-8' + regions: ["mt_en"] + expect: + name: "Victory Day" + - given: + date: '2017-9-21' + regions: ["mt_en"] + expect: + name: "Independence Day" + - given: + date: '2017-12-8' + regions: ["mt_en"] + expect: + name: "Feast of the Immaculate Conception" + - given: + date: '2017-12-13' + regions: ["mt_en"] + expect: + name: "Republic Day" + - given: + date: '2017-12-25' + regions: ["mt_en"] + expect: + name: "Christmas Day" + - given: + date: ['2017-4-14', '2018-3-30', '2019-4-19'] + regions: ["mt_en"] + expect: + name: "Good Friday" diff --git a/vendor/holidays/definitions/mt_mt.yaml b/vendor/holidays/definitions/mt_mt.yaml new file mode 100644 index 00000000..7d69dc0e --- /dev/null +++ b/vendor/holidays/definitions/mt_mt.yaml @@ -0,0 +1,131 @@ +# Maltese holiday definitions for the Ruby Holiday gem. In Maltese. +# +# Updated: 2017-06-08 +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Malta +--- +months: + 0: + - name: Il-Ġimgħa l-Kbira # Good Friday + regions: [mt_mt] + function: easter(year) + function_modifier: -2 + 1: + - name: L-Ewwel tas-Sena # New Year's Day + regions: [mt_mt] + mday: 1 + 2: + - name: Nawfraġju ta' San Pawl # Feast of Saint Paul's Shipwreck in Malta + regions: [mt_mt] + mday: 10 + 3: + - name: San Ġużepp # Feast of Saint Joseph + regions: [mt_mt] + mday: 19 + - name: Jum il-Ħelsien # Freedom Day + regions: [mt_mt] + mday: 31 + 5: + - name: Jum il-Ħaddiem # Worker's Day + regions: [mt_mt] + mday: 1 + 6: + - name: Sette Giugno + regions: [mt_mt] + mday: 7 + - name: L-Imnarja # Feast of Saint Peter & Saint Paul + regions: [mt_mt] + mday: 29 + 8: + - name: Santa Marija # Feast of the Assumption of Our Lady + regions: [mt_mt] + mday: 15 + 9: + - name: Jum il-Vitorja # Victory Day + regions: [mt_mt] + mday: 8 + - name: Jum l-Indipendenza # Independence Day + regions: [mt_mt] + mday: 21 + 12: + - name: Il-Kunċizzjoni # Feast of the Immaculate Conception + regions: [mt_mt] + mday: 8 + - name: Jum ir-Repubblika # Republic Day + regions: [mt_mt] + mday: 13 + - name: Il-Milied # Christmas Day + regions: [mt_mt] + mday: 25 + +tests: + - given: + date: '2017-1-1' + regions: ["mt_mt"] + expect: + name: "L-Ewwel tas-Sena" + - given: + date: '2017-2-10' + regions: ["mt_mt"] + expect: + name: "Nawfraġju ta' San Pawl" + - given: + date: '2017-3-19' + regions: ["mt_mt"] + expect: + name: "San Ġużepp" + - given: + date: '2017-3-31' + regions: ["mt_mt"] + expect: + name: "Jum il-Ħelsien" + - given: + date: '2017-5-1' + regions: ["mt_mt"] + expect: + name: "Jum il-Ħaddiem" + - given: + date: '2017-6-7' + regions: ["mt_mt"] + expect: + name: "Sette Giugno" + - given: + date: '2017-6-29' + regions: ["mt_mt"] + expect: + name: "L-Imnarja" + - given: + date: '2017-8-15' + regions: ["mt_mt"] + expect: + name: "Santa Marija" + - given: + date: '2017-9-8' + regions: ["mt_mt"] + expect: + name: "Jum il-Vitorja" + - given: + date: '2017-9-21' + regions: ["mt_mt"] + expect: + name: "Jum l-Indipendenza" + - given: + date: '2017-12-8' + regions: ["mt_mt"] + expect: + name: "Il-Kunċizzjoni" + - given: + date: '2017-12-13' + regions: ["mt_mt"] + expect: + name: "Jum ir-Repubblika" + - given: + date: '2017-12-25' + regions: ["mt_mt"] + expect: + name: "Il-Milied" + - given: + date: ['2017-4-14', '2018-3-30', '2019-4-19'] + regions: ["mt_mt"] + expect: + name: "Il-Ġimgħa l-Kbira" diff --git a/vendor/holidays/definitions/mx.yaml b/vendor/holidays/definitions/mx.yaml new file mode 100644 index 00000000..7efae9b5 --- /dev/null +++ b/vendor/holidays/definitions/mx.yaml @@ -0,0 +1,153 @@ +# Mexican holiday definitions for the Ruby Holiday gem. +# Updated 2008-12-05. +# Sources: +# - http://www.britishembassy.gov.uk/servlet/Front?pagename=OpenMarket/Xcelerate/ShowPage&c=Page&cid=1125561634963 +# - http://www.usembassy-mexico.gov/eng/holidays.html +--- +months: + 1: + - name: Año nuevo + regions: [mx] + mday: 1 + - name: Dia de los Santos Reyes + regions: [mx] + mday: 6 + type: informal + 2: + - name: Día de la Constitución + week: 1 + regions: [mx] + wday: 1 + 3: + - name: Natalicio de Benito Juárez + week: 3 + regions: [mx] + wday: 1 + 4: + - name: Día del Niño + regions: [mx] + mday: 30 + type: informal + 5: + - name: Día del Trabajo + regions: [mx] + mday: 1 + - name: Cinco de Mayo + regions: [mx] + mday: 5 + type: informal + - name: La Batalla de Puebla + regions: [mx_pue] + mday: 5 + type: informal + - name: Día de la Madre + regions: [mx] + mday: 10 + type: informal + - name: Día del Maestro + regions: [mx] + mday: 15 + type: informal + 6: + - name: Día del Padre + regions: [mx] + wday: 0 + week: 3 + type: informal + 9: + - name: Grito de Dolores + regions: [mx] + mday: 15 + - name: Día de la Independencia + regions: [mx] + mday: 16 + 10: + - name: Día de la Raza + regions: [mx] + mday: 12 + type: informal + 11: + - name: Todos los Santos + regions: [mx] + mday: 1 + type: informal + - name: Los Fieles Difuntos + regions: [mx] + mday: 2 + type: informal + - name: Día de la Revolución + week: 3 + regions: [mx] + wday: 1 + 12: + - name: Día de la Virgen de Guadalupe + regions: [mx] + mday: 12 + type: informal + - name: Nochebuena + regions: [mx] + mday: 24 + type: informal + - name: Navidad + regions: [mx] + mday: 25 + - name: Los Santos Inocentes + regions: [mx] + mday: 28 + type: informal + +tests: + - given: + date: '2007-01-01' + regions: ["mx"] + options: ["informal"] + expect: + name: "Año nuevo" + - given: + date: '2007-02-05' + regions: ["mx"] + options: ["informal"] + expect: + name: "Día de la Constitución" + - given: + date: '2007-05-01' + regions: ["mx"] + options: ["informal"] + expect: + name: "Día del Trabajo" + - given: + date: '2007-05-05' + regions: ["mx"] + options: ["informal"] + expect: + name: "Cinco de Mayo" + - given: + date: '2007-09-16' + regions: ["mx"] + options: ["informal"] + expect: + name: "Día de la Independencia" + - given: + date: '2007-11-01' + regions: ["mx"] + options: ["informal"] + expect: + name: "Todos los Santos" + - given: + date: '2007-11-02' + regions: ["mx"] + options: ["informal"] + expect: + name: "Los Fieles Difuntos" + - given: + date: '2007-11-19' + regions: ["mx"] + options: ["informal"] + expect: + name: "Día de la Revolución" + - given: + date: '2007-12-25' + regions: ["mx"] + options: ["informal"] + expect: + name: "Navidad" diff --git a/vendor/holidays/definitions/my.yaml b/vendor/holidays/definitions/my.yaml new file mode 100644 index 00000000..d73a2dcf --- /dev/null +++ b/vendor/holidays/definitions/my.yaml @@ -0,0 +1,79 @@ +# Malaysia holiday definitions for the Holidays gem! + +# Days not included in the definitions (yet): +# Vesak Day (falls on the first full moon in May) +# Lunar New Year (falls on the first day of the Lunar Calendar) +# Hari Raya Puasa and Hari Raya Haji (based on moon sightings, Islamic Calendar) +# Deepavali (15th Day of September or October, based on the Hindu Calendar) + +# Source: +# http://publicholidays.com.my/ + +months: + 1: + - name: New Year's Day + regions: [my] + mday: 1 + observed: to_weekday_if_weekend(date) + 5: + - name: Labour Day + regions: [my] + mday: 1 + 6: + - name: Agong's Birthday + regions: [my] + mday: 4 + observed: to_weekday_if_weekend(date) + 8: + - name: Independence Day + regions: [my] + mday: 31 + observed: to_weekday_if_weekend(date) + 9: + - name: Malaysia Day + regions: [my] + mday: 16 + observed: to_weekday_if_weekend(date) + 12: + - name: Christmas Day + regions: [my] + mday: 25 + observed: to_weekday_if_weekend(date) + +tests: + - given: + date: '2016-01-01' + regions: ["my"] + options: ["informal"] + expect: + name: "New Year's Day" + - given: + date: '2016-05-01' + regions: ["my"] + options: ["informal"] + expect: + name: "Labour Day" + - given: + date: '2016-06-04' + regions: ["my"] + options: ["informal"] + expect: + name: "Agong's Birthday" + - given: + date: '2016-08-31' + regions: ["my"] + options: ["informal"] + expect: + name: "Independence Day" + - given: + date: '2016-09-16' + regions: ["my"] + options: ["informal"] + expect: + name: "Malaysia Day" + - given: + date: '2016-12-25' + regions: ["my"] + options: ["informal"] + expect: + name: "Christmas Day" diff --git a/vendor/holidays/definitions/nerc.yaml b/vendor/holidays/definitions/nerc.yaml new file mode 100644 index 00000000..34a1cac3 --- /dev/null +++ b/vendor/holidays/definitions/nerc.yaml @@ -0,0 +1,94 @@ +# NERC holiday definitions for the Ruby Holiday gem. +# +# By Adam Strickland +# Source: www.nerc.com/docs/oc/rs/Additional_Off-peak_Days.doc +# +# Updated 2013-01-03. +--- +months: + 1: + - name: New Year's Day + regions: [nerc] + mday: 1 + observed: to_monday_if_sunday(date) + 5: + - name: Memorial Day + week: -1 + regions: [nerc] + wday: 1 + 7: + - name: Independence Day + regions: [nerc] + mday: 4 + observed: to_monday_if_sunday(date) + 9: + - name: Labor Day + week: 1 + regions: [nerc] + wday: 1 + 11: + - name: Thanksgiving + week: 4 + regions: [nerc] + wday: 4 + 12: + - name: Christmas Day + regions: [nerc] + mday: 25 + observed: to_monday_if_sunday(date) + +tests: + - given: + date: '2013-01-01' + regions: ["nerc"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2017-01-02' + regions: ["nerc"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2013-05-27' + regions: ["nerc"] + options: ["observed"] + expect: + name: "Memorial Day" + - given: + date: '2013-07-04' + regions: ["nerc"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2010-07-05' + regions: ["nerc"] + options: ["observed"] + expect: + name: "Independence Day" + - given: + date: '2013-09-02' + regions: ["nerc"] + options: ["observed"] + expect: + name: "Labor Day" + - given: + date: '2013-11-28' + regions: ["nerc"] + options: ["observed"] + expect: + name: "Thanksgiving" + - given: + date: '2013-12-25' + regions: ["nerc"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: '2011-12-26' + regions: ["nerc"] + options: ["observed"] + expect: + name: "Christmas Day" diff --git a/vendor/holidays/definitions/ng.yaml b/vendor/holidays/definitions/ng.yaml new file mode 100644 index 00000000..4932e58a --- /dev/null +++ b/vendor/holidays/definitions/ng.yaml @@ -0,0 +1,97 @@ +# Nigeria holiday definitions for the Ruby Holiday gem. +# Updated: 2020-04-28 +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Nigeria +--- +months: + 0: + - name: Good Friday + regions: [ng] + function: easter(year) + function_modifier: -2 + - name: Easter Monday + regions: [ng] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [ng] + mday: 1 + observed: to_monday_if_weekend(date) + 5: + - name: Workers' Day + regions: [ng] + mday: 1 + observed: to_monday_if_weekend(date) + - name: Children's Day + regions: [ng] + mday: 27 + type: informal + 6: + - name: Democracy Day + regions: [ng] + mday: 12 + year_ranges: + from: 2018 + 10: + - name: Independence Day + regions: [ng] + mday: 1 + observed: to_monday_if_weekend(date) + 12: + - name: Christmas Day + regions: [ng] + mday: 25 + observed: to_monday_if_weekend(date) + - name: Boxing Day + regions: [ng] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + +tests: + - given: + date: '2008-03-21' + regions: ["ng"] + expect: + name: "Good Friday" + - given: + date: '2008-03-24' + regions: ["ng"] + expect: + name: "Easter Monday" + - given: + date: '2008-01-01' + regions: ["ng"] + expect: + name: "New Year's Day" + - given: + date: '2008-05-01' + regions: ["ng"] + expect: + name: "Workers' Day" + - given: + date: '2008-05-27' + regions: ["ng"] + options: ["informal"] + expect: + name: "Children's Day" + - given: + date: '2019-06-12' + regions: ["ng"] + expect: + name: "Democracy Day" + - given: + date: '2008-10-01' + regions: ["ng"] + expect: + name: "Independence Day" + - given: + date: '2008-12-25' + regions: ["ng"] + expect: + name: "Christmas Day" + - given: + date: '2008-12-26' + regions: ["ng"] + expect: + name: "Boxing Day" \ No newline at end of file diff --git a/vendor/holidays/definitions/nl.yaml b/vendor/holidays/definitions/nl.yaml new file mode 100644 index 00000000..521252f6 --- /dev/null +++ b/vendor/holidays/definitions/nl.yaml @@ -0,0 +1,127 @@ +# Dutch holiday definitions for the Ruby Holiday gem. +# +# Updated: 2014-04-17. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_the_Netherlands +--- +months: + 0: + - name: Goede Vrijdag + regions: [nl] + function: easter(year) + function_modifier: -2 + type: informal + - name: Eerste Paasdag + regions: [nl] + function: easter(year) + - name: Tweede Paasdag + regions: [nl] + function: easter(year) + function_modifier: 1 + - name: Hemelvaartsdag + regions: [nl] + function: easter(year) + function_modifier: 39 + - name: Eerste Pinksterdag + regions: [nl] + function: easter(year) + function_modifier: 49 + - name: Tweede Pinksterdag + regions: [nl] + function: easter(year) + function_modifier: 50 + 1: + - name: Nieuwjaarsdag + regions: [nl] + mday: 1 + 4: + - name: Koningsdag + regions: [nl] + mday: 27 + 5: + - name: Dodenherdenking + regions: [nl] + mday: 4 + type: informal + - name: Bevrijdingsdag + regions: [nl] + mday: 5 + 12: + - name: Sinterklaas + regions: [nl] + mday: 5 + type: informal + - name: Eerste Kerstdag + regions: [nl] + mday: 25 + - name: Tweede Kerstdag + regions: [nl] + mday: 26 + +tests: + - given: + date: '2008-01-01' + regions: ["nl"] + options: ["informal"] + expect: + name: "Nieuwjaarsdag" + - given: + date: '2008-03-21' + regions: ["nl"] + options: ["informal"] + expect: + name: "Goede Vrijdag" + - given: + date: '2008-03-23' + regions: ["nl"] + options: ["informal"] + expect: + name: "Eerste Paasdag" + - given: + date: '2008-03-24' + regions: ["nl"] + options: ["informal"] + expect: + name: "Tweede Paasdag" + - given: + date: '2008-04-27' + regions: ["nl"] + options: ["informal"] + expect: + name: "Koningsdag" + - given: + date: '2008-05-01' + regions: ["nl"] + options: ["informal"] + expect: + name: "Hemelvaartsdag" + - given: + date: '2008-05-05' + regions: ["nl"] + options: ["informal"] + expect: + name: "Bevrijdingsdag" + - given: + date: '2008-05-11' + regions: ["nl"] + options: ["informal"] + expect: + name: "Eerste Pinksterdag" + - given: + date: '2008-05-12' + regions: ["nl"] + options: ["informal"] + expect: + name: "Tweede Pinksterdag" + - given: + date: '2008-12-25' + regions: ["nl"] + options: ["informal"] + expect: + name: "Eerste Kerstdag" + - given: + date: '2008-12-26' + regions: ["nl"] + options: ["informal"] + expect: + name: "Tweede Kerstdag" diff --git a/vendor/holidays/definitions/no.yaml b/vendor/holidays/definitions/no.yaml new file mode 100644 index 00000000..66f640a9 --- /dev/null +++ b/vendor/holidays/definitions/no.yaml @@ -0,0 +1,169 @@ +# Norwegian holiday definitions for the Ruby Holiday gem. +# +# Added: 20010-02-22. +# Sources: +# - http://no.wikipedia.org/wiki/Offentlig_fridag +# - http://www.timeanddate.com/norsk/kalender.html +--- +months: + 0: + - name: Fastelavn + regions: ["no"] + function: easter(year) + function_modifier: -49 + type: informal + - name: Palmesøndag + regions: ["no"] + function: easter(year) + function_modifier: -7 + - name: Skjærtorsdag + regions: ["no"] + function: easter(year) + function_modifier: -3 + - name: Langfredag + regions: ["no"] + function: easter(year) + function_modifier: -2 + - name: 1. påskedag + regions: ["no"] + function: easter(year) + - name: 2. påskedag + regions: ["no"] + function: easter(year) + function_modifier: 1 + - name: Kristi Himmelfartsdag + regions: ["no"] + function: easter(year) + function_modifier: 39 + - name: 1. pinsedag + regions: ["no"] + function: easter(year) + function_modifier: 49 + - name: 2. pinsedag + regions: ["no"] + function: easter(year) + function_modifier: 50 + 1: + - name: Nyttårsdag + regions: ["no"] + mday: 1 + 5: + - name: 1. mai + regions: ["no"] + mday: 1 + - name: 17. mai + regions: ["no"] + mday: 17 + 12: + - name: Julaften + regions: ["no"] + mday: 24 + type: informal + - name: 1. juledag + regions: ["no"] + mday: 25 + - name: 2. juledag + regions: ["no"] + mday: 26 + - name: Nyttårsaften + regions: ["no"] + mday: 31 + type: informal + +tests: + - given: + date: '2010-01-01' + regions: ["no"] + options: ["informal"] + expect: + name: "Nyttårsdag" + - given: + date: '2010-05-01' + regions: ["no"] + options: ["informal"] + expect: + name: "1. mai" + - given: + date: '2010-05-17' + regions: ["no"] + options: ["informal"] + expect: + name: "17. mai" + - given: + date: '2010-12-24' + regions: ["no"] + options: ["informal"] + expect: + name: "Julaften" + - given: + date: '2010-12-25' + regions: ["no"] + options: ["informal"] + expect: + name: "1. juledag" + - given: + date: '2010-12-26' + regions: ["no"] + options: ["informal"] + expect: + name: "2. juledag" + - given: + date: '2010-12-31' + regions: ["no"] + options: ["informal"] + expect: + name: "Nyttårsaften" + - given: + date: '2010-02-14' + regions: ["no"] + options: ["informal"] + expect: + name: "Fastelavn" + - given: + date: '2010-03-28' + regions: ["no"] + options: ["informal"] + expect: + name: "Palmesøndag" + - given: + date: '2010-04-01' + regions: ["no"] + options: ["informal"] + expect: + name: "Skjærtorsdag" + - given: + date: '2010-04-02' + regions: ["no"] + options: ["informal"] + expect: + name: "Langfredag" + - given: + date: '2010-04-04' + regions: ["no"] + options: ["informal"] + expect: + name: "1. påskedag" + - given: + date: '2010-04-05' + regions: ["no"] + options: ["informal"] + expect: + name: "2. påskedag" + - given: + date: '2010-05-13' + regions: ["no"] + options: ["informal"] + expect: + name: "Kristi Himmelfartsdag" + - given: + date: '2010-05-23' + regions: ["no"] + options: ["informal"] + expect: + name: "1. pinsedag" + - given: + date: '2010-05-24' + regions: ["no"] + options: ["informal"] + expect: + name: "2. pinsedag" diff --git a/vendor/holidays/definitions/northamericainformal.yaml b/vendor/holidays/definitions/northamericainformal.yaml new file mode 100644 index 00000000..71d31f6f --- /dev/null +++ b/vendor/holidays/definitions/northamericainformal.yaml @@ -0,0 +1,105 @@ +# Informal North American holiday definitions for the Ruby Holiday gem. +# Updated 2008-11-22. +--- +months: + 2: + - name: Groundhog Day + regions: [us, ca] + mday: 2 + type: informal + - name: Valentine's Day + regions: [us, ca] + mday: 14 + type: informal + 3: + - name: St. Patrick's Day + regions: [us, ca] + mday: 17 + type: informal + 4: + - name: April Fool's Day + regions: [us, ca] + mday: 1 + type: informal + - name: Earth Day + regions: [us, ca] + mday: 22 + type: informal + 5: + - name: Mother's Day + week: 2 + regions: [us, ca] + wday: 0 + type: informal + - name: Armed Forces Day + week: 3 + regions: [us] + wday: 6 + type: informal + 6: + - name: Father's Day + week: 3 + regions: [us, ca] + wday: 0 + type: informal + 10: + - name: Halloween + regions: [us, ca] + mday: 31 + type: informal + +tests: + - given: + date: '2013-02-02' + regions: ["us"] + options: ["informal"] + expect: + name: "Groundhog Day" + - given: + date: '2013-02-14' + regions: ["us"] + options: ["informal"] + expect: + name: "Valentine's Day" + - given: + date: '2013-03-17' + regions: ["us"] + options: ["informal"] + expect: + name: "St. Patrick's Day" + - given: + date: '2013-04-01' + regions: ["us"] + options: ["informal"] + expect: + name: "April Fool's Day" + - given: + date: '2013-04-22' + regions: ["us"] + options: ["informal"] + expect: + name: "Earth Day" + - given: + date: '2013-05-12' + regions: ["us"] + options: ["informal"] + expect: + name: "Mother's Day" + - given: + date: '2013-05-18' + regions: ["us"] + options: ["informal"] + expect: + name: "Armed Forces Day" + - given: + date: '2013-06-16' + regions: ["us"] + options: ["informal"] + expect: + name: "Father's Day" + - given: + date: '2013-10-31' + regions: ["us"] + options: ["informal"] + expect: + name: "Halloween" diff --git a/vendor/holidays/definitions/nyse.yaml b/vendor/holidays/definitions/nyse.yaml new file mode 100644 index 00000000..83b1e7ce --- /dev/null +++ b/vendor/holidays/definitions/nyse.yaml @@ -0,0 +1,116 @@ +# NYSE holiday definitions for the Ruby Holiday gem. +# +# By Alan Larkin +# Source: http://www.nyse.com/about/newsevents/1176373643795.html#earlyclose2008 +# +# Updated 2008-11-19. +# +# Source: https://www.nyse.com/markets/hours-calendars +# Updated 2017-03-14 By Vassilios Liatsos +--- +months: + 0: + - name: Good Friday + regions: [nyse] + function: easter(year) + function_modifier: -2 + 1: + - name: New Year's Day + regions: [nyse] + mday: 1 + observed: to_monday_if_sunday(date) + - name: Martin Luther King, Jr. Day + week: 3 + regions: [nyse] + wday: 1 + 2: + - name: Presidents' Day + week: 3 + regions: [nyse] + wday: 1 + 5: + - name: Memorial Day + week: -1 + regions: [nyse] + wday: 1 + 7: + - name: Independence Day + regions: [nyse] + mday: 4 + observed: to_weekday_if_weekend(date) + 9: + - name: Labor Day + week: 1 + regions: [nyse] + wday: 1 + 11: + - name: Thanksgiving + week: 4 + regions: [nyse] + wday: 4 + 12: + - name: Christmas Day + regions: [nyse] + mday: 25 + observed: to_weekday_if_weekend(date) + +tests: + - given: + date: '2008-01-01' + regions: ["nyse"] + expect: + name: "New Year's Day" + - given: + date: ['2017-01-02', '2012-01-02', '2011-01-01', '2006-01-02'] + regions: ["nyse"] + options: ["observed"] + expect: + name: "New Year's Day" + - given: + date: '2008-01-21' + regions: ["nyse"] + expect: + name: "Martin Luther King, Jr. Day" + - given: + date: '2008-02-18' + regions: ["nyse"] + expect: + name: "Presidents' Day" + - given: + date: '2008-03-21' + regions: ["nyse"] + expect: + name: "Good Friday" + - given: + date: '2008-05-26' + regions: ["nyse"] + expect: + name: "Memorial Day" + - given: + date: '2008-07-04' + regions: ["nyse"] + expect: + name: "Independence Day" + - given: + date: '2008-09-01' + regions: ["nyse"] + expect: + name: "Labor Day" + - given: + date: '2008-11-27' + regions: ["nyse"] + expect: + name: "Thanksgiving" + - given: + date: '2008-12-25' + regions: ["nyse"] + expect: + name: "Christmas Day" + + # Test observed New Year + - given: + date: ['2017-01-02', '2012-01-02', '2011-01-01', '2006-01-02'] + regions: ["nyse"] + options: ["observed"] + expect: + name: "New Year's Day" diff --git a/vendor/holidays/definitions/nz.yaml b/vendor/holidays/definitions/nz.yaml new file mode 100644 index 00000000..95e2b212 --- /dev/null +++ b/vendor/holidays/definitions/nz.yaml @@ -0,0 +1,273 @@ +# New Zealand holiday definitions for the Ruby Holiday gem. +# Updated: 2010-03-28. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_New_Zealand +--- +months: + 0: + - name: Good Friday + regions: [nz] + function: easter(year) + function_modifier: -2 + - name: Easter Monday + regions: [nz] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [nz] + mday: 1 + observed: to_monday_if_weekend(date) + - name: Day after New Year's Day + regions: [nz] + mday: 2 + observed: to_weekday_if_boxing_weekend(date) + - name: Southland Anniversary Day + regions: [nz_sl] + mday: 17 + - name: Wellington Anniversary Day + regions: [nz_we] + mday: 22 + observed: closest_monday(date) + - name: Auckland Anniversary Day + regions: [nz_ak] + mday: 29 + observed: closest_monday(date) + - name: Northland Anniversary Day + regions: [nz_nl] + mday: 29 + observed: closest_monday(date) + 2: + - name: Nelson Anniversary Day + regions: [nz_ne] + mday: 1 + observed: closest_monday(date) + - name: Waitangi Day + regions: [nz] + mday: 6 + observed: to_monday_if_weekend(date) + 3: + - name: Otago Anniversary Day + regions: [nz_ot] + mday: 23 + observed: closest_monday(date) + - name: Taranaki Anniversary Day + regions: [nz_ta] + week: 2 + wday: 1 + observed: closest_monday(date) + 4: + - name: ANZAC Day + regions: [nz] + mday: 25 + observed: to_monday_if_weekend(date) + 6: + - name: Queen's Birthday + regions: [nz] + week: 1 + wday: 1 + 9: + - name: Dominion Day + regions: [nz_sc] + week: 4 + wday: 1 + 10: + - name: Hawke's bay Anniversary Day + regions: [nz_hb] + week: 1 + wday: 1 + observed: previous_friday(date) + - name: Labour Day + regions: [nz] + week: 4 + wday: 1 + - name: Marlborough Anniversary Day + regions: [nz_mb] + week: 4 + wday: 1 + observed: next_week(date) + 11: + - name: Canterbury Anniversary Day + regions: [nz_ca] + week: 2 + wday: 5 + - name: Chatham Island Anniversary Day + regions: [nz_ch] + mday: 30 + observed: closest_monday(date) + 12: + - name: Westland Anniversary Day + regions: [nz_wl] + mday: 1 + observed: closest_monday(date) + - name: Christmas Day + regions: [nz] + mday: 25 + observed: to_monday_if_weekend(date) + - name: Boxing Day + regions: [nz] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + +tests: + - given: + date: '2007-01-01' + regions: ["nz"] + options: ["informal"] + expect: + name: "New Year's Day" + - given: + date: '2007-01-02' + regions: ["nz"] + options: ["informal"] + expect: + name: "Day after New Year's Day" + - given: + date: '2007-02-06' + regions: ["nz"] + options: ["informal"] + expect: + name: "Waitangi Day" + - given: + date: '2007-04-06' + regions: ["nz"] + options: ["informal"] + expect: + name: "Good Friday" + - given: + date: '2007-04-09' + regions: ["nz"] + options: ["informal"] + expect: + name: "Easter Monday" + - given: + date: '2007-04-25' + regions: ["nz"] + options: ["informal"] + expect: + name: "ANZAC Day" + - given: + date: '2007-12-25' + regions: ["nz"] + options: ["informal"] + expect: + name: "Christmas Day" + - given: + date: '2007-12-26' + regions: ["nz"] + options: ["informal"] + expect: + name: "Boxing Day" + - given: + date: '2015-04-25' + regions: ["nz"] + expect: + name: "ANZAC Day" + - given: + date: '2015-04-27' + regions: ["nz"] + options: ["observed"] + expect: + name: "ANZAC Day" + - given: + date: '2016-04-25' + regions: ["nz"] + expect: + name: "ANZAC Day" + - given: + date: '2016-04-25' + regions: ["nz"] + options: ["observed"] + expect: + name: "ANZAC Day" + - given: + date: '2015-02-06' + regions: ["nz"] + expect: + name: "Waitangi Day" + - given: + date: '2015-02-06' + regions: ["nz"] + options: ["observed"] + expect: + name: "Waitangi Day" + - given: + date: '2016-02-06' + regions: ["nz"] + expect: + name: "Waitangi Day" + - given: + date: '2016-02-08' + regions: ["nz"] + options: ["observed"] + expect: + name: "Waitangi Day" + - given: + date: '2016-02-01' + regions: ["nz_ne"] + options: ["observed"] + expect: + name: "Nelson Anniversary Day" + - given: + date: '2017-01-30' + regions: ["nz_ne"] + options: ["observed"] + expect: + name: "Nelson Anniversary Day" + - given: + date: '2018-01-29' + regions: ["nz_ne"] + options: ["observed"] + expect: + name: "Nelson Anniversary Day" + - given: + date: '2019-02-04' + regions: ["nz_ne"] + options: ["observed"] + expect: + name: "Nelson Anniversary Day" + - given: + date: '2016-03-14' + regions: ["nz_ta"] + options: ["observed"] + expect: + name: "Taranaki Anniversary Day" + - given: + date: '2017-03-13' + regions: ["nz_ta"] + options: ["observed"] + expect: + name: "Taranaki Anniversary Day" + - given: + date: '2018-03-12' + regions: ["nz_ta"] + options: ["observed"] + expect: + name: "Taranaki Anniversary Day" + - given: + date: '2019-03-11' + regions: ["nz_ta"] + options: ["observed"] + expect: + name: "Taranaki Anniversary Day" + +methods: + closest_monday: + arguments: date + ruby: | + if [1, 2, 3, 4].include?(date.wday) + date -= (date.wday - 1) + elsif 0 == date.wday + date += 1 + else + date += 8 - date.wday + end + date + previous_friday: + arguments: date + ruby: | + date - 3 + next_week: + arguments: date + ruby: | + date + 7 diff --git a/vendor/holidays/definitions/pe.yaml b/vendor/holidays/definitions/pe.yaml new file mode 100644 index 00000000..2e949f4a --- /dev/null +++ b/vendor/holidays/definitions/pe.yaml @@ -0,0 +1,208 @@ +# Peruvian holiday definitions for the Ruby Holiday gem. +# +# created: 2016-06-18. +# updated: 2016-06-18. +# +# Sources: +# - http://www.timeanddate.com/holidays/peru/ +# - https://en.wikipedia.org/wiki/Public_holidays_in_Peru +# +# Avoided days: +# March equinox +# June Solstice +# September equinox +# All soul's day +# December solstice +# Christmas eve +# Christmas day observed +# New year's eve +# +months: + 0: + - name: Jueves Santo + regions: [pe] + function: easter(year) + function_modifier: -3 + - name: Viernes Santo + regions: [pe] + function: easter(year) + function_modifier: -2 + - name: Pascua + regions: [pe] + function: easter(year) + 1: + - name: Año Nuevo + regions: [pe] + mday: 1 + - name: Día de los Reyes Magos + regions: [pe] + mday: 6 + observed: to_monday_if_sunday(date) + 5: + - name: Día del Trabajador + regions: [pe] + mday: 1 + - name: Día de la Madre + regions: [pe] + week: 2 + wday: 0 + type: informal + 6: + - name: Día de la Bandera + regions: [pe] + mday: 7 + type: informal + - name: Día del Padre + regions: [pe] + week: 3 + wday: 0 + type: informal + - name: Inti Raymi + regions: [pe] + mday: 24 + type: informal + - name: San Pablo y San Pedro + regions: [pe] + mday: 29 + 7: + - name: Primer Día de la Independencia + regions: [pe] + mday: 28 + - name: Segundo Día de la Independencia + regions: [pe] + mday: 29 + 8: + - name: Santa Rosa de Lima + regions: [pe] + mday: 30 + 9: + - name: Día de las Fuerzas Armadas + regions: [pe] + mday: 24 + type: informal + 10: + - name: Batalla de Angamos + regions: [pe] + mday: 8 + 11: + - name: Todos los Santos + regions: [pe] + mday: 1 + 12: + - name: Inmaculada Concepción + regions: [pe] + mday: 8 + observed: to_monday_if_sunday(date) + - name: Navidad del Señor + regions: [pe] + mday: 25 + +tests: + - given: + date: '2016-01-01' + regions: ["pe"] + options: ["informal"] + expect: + name: "Año Nuevo" + - given: + date: '2016-01-06' + regions: ["pe"] + options: ["informal"] + expect: + name: "Día de los Reyes Magos" + - given: + date: '2016-03-24' + regions: ["pe"] + options: ["informal"] + expect: + name: "Jueves Santo" + - given: + date: '2016-03-25' + regions: ["pe"] + options: ["informal"] + expect: + name: "Viernes Santo" + - given: + date: '2016-03-27' + regions: ["pe"] + options: ["informal"] + expect: + name: "Pascua" + - given: + date: '2016-05-01' + regions: ["pe"] + options: ["informal"] + expect: + name: "Día del Trabajador" + - given: + date: '2016-05-08' + regions: ["pe"] + options: ["informal"] + expect: + name: "Día de la Madre" + - given: + date: '2016-06-07' + regions: ["pe"] + options: ["informal"] + expect: + name: "Día de la Bandera" + - given: + date: '2016-06-19' + regions: ["pe"] + options: ["informal"] + expect: + name: "Día del Padre" + - given: + date: '2016-06-29' + regions: ["pe"] + options: ["informal"] + expect: + name: "San Pablo y San Pedro" + - given: + date: '2016-07-28' + regions: ["pe"] + options: ["informal"] + expect: + name: "Primer Día de la Independencia" + - given: + date: '2016-07-29' + regions: ["pe"] + options: ["informal"] + expect: + name: "Segundo Día de la Independencia" + - given: + date: '2016-08-30' + regions: ["pe"] + options: ["informal"] + expect: + name: "Santa Rosa de Lima" + - given: + date: '2016-09-24' + regions: ["pe"] + options: ["informal"] + expect: + name: "Día de las Fuerzas Armadas" + - given: + date: '2016-10-08' + regions: ["pe"] + options: ["informal"] + expect: + name: "Batalla de Angamos" + - given: + date: '2016-11-01' + regions: ["pe"] + options: ["informal"] + expect: + name: "Todos los Santos" + - given: + date: '2016-12-08' + regions: ["pe"] + options: ["informal"] + expect: + name: "Inmaculada Concepción" + - given: + date: '2016-12-25' + regions: ["pe"] + options: ["informal"] + expect: + name: "Navidad del Señor" diff --git a/vendor/holidays/definitions/ph.yaml b/vendor/holidays/definitions/ph.yaml new file mode 100644 index 00000000..2fff251a --- /dev/null +++ b/vendor/holidays/definitions/ph.yaml @@ -0,0 +1,130 @@ +# Philippines holiday definitions for the Ruby Holiday gem. +# +# Updated: 2015-03-25 by itsmechlark +# Sources: +# - http://www.gov.ph/2014/07/23/list-of-nationwide-holidays-for-2015/ +# - http://www.timeanddate.com/holidays/philippines/ +--- +months: + 0: + - name: Maundy Thursday + regions: [ph] + function: easter(year) + function_modifier: -3 + - name: Good Friday + regions: [ph] + function: easter(year) + function_modifier: -2 + - name: Holy Saturday + regions: [ph] + function: easter(year) + function_modifier: -1 + - name: Easter Sunday + regions: [ph] + function: easter(year) + 1: + - name: New Year’s Day + regions: [ph] + mday: 1 + 2: + - name: People Power Anniversary + regions: [ph] + mday: 25 + type: informal + 4: + - name: The Day of Valor + regions: [ph] + mday: 9 + 5: + - name: Labor Day + regions: [ph] + mday: 1 + 6: + - name: Independence Day + regions: [ph] + mday: 12 + 8: + - name: Ninoy Aquino Day + regions: [ph] + mday: 21 + - name: National Heroes Day + regions: [ph] + function: ph_heroes_day(year) + 11: + - name: All Saints Day + regions: [ph] + mday: 1 + type: informal + - name: Bonifacio Day + regions: [ph] + mday: 30 + 12: + - name: Christmas Day + regions: [ph] + mday: 25 + - name: Rizal Day + regions: [ph] + mday: 30 + - name: New Year's Eve + regions: [ph] + mday: 31 + +methods: + ph_heroes_day: + # last Monday of August + arguments: year + ruby: | + date = Date.new(year, 8, -1) + + if date.wday != 1 + date -= date.wday - 1 + end + + date + +tests: + - given: + date: '2015-04-03' + regions: ["ph"] + expect: + name: "Good Friday" + - given: + date: '2015-04-09' + regions: ["ph"] + expect: + name: "The Day of Valor" + - given: + date: '2015-05-01' + regions: ["ph"] + expect: + name: "Labor Day" + - given: + date: '2015-06-12' + regions: ["ph"] + expect: + name: "Independence Day" + - given: + date: '2015-08-21' + regions: ["ph"] + expect: + name: "Ninoy Aquino Day" + - given: + date: '2015-08-31' + regions: ["ph"] + expect: + name: "National Heroes Day" + - given: + date: '2015-11-30' + regions: ["ph"] + expect: + name: "Bonifacio Day" + - given: + date: '2015-12-25' + regions: ["ph"] + expect: + name: "Christmas Day" + - given: + date: '2015-12-30' + regions: ["ph"] + expect: + name: "Rizal Day" diff --git a/vendor/holidays/definitions/pl.yaml b/vendor/holidays/definitions/pl.yaml new file mode 100644 index 00000000..8644e271 --- /dev/null +++ b/vendor/holidays/definitions/pl.yaml @@ -0,0 +1,784 @@ +# Poland holiday definitions for the Ruby Holiday gem. +# +# Updated: 2011-09-12. +# Source: http://pl.wikipedia.org/wiki/Dni_wolne_od_pracy_w_Polsce +--- +months: + 0: + - name: Tłusty Czwartek + regions: [pl] + function: easter(year) + function_modifier: -52 + type: informal + - name: Ostatki + regions: [pl] + function: easter(year) + function_modifier: -47 + type: informal + - name: Środa Popielcowa + regions: [pl] + function: easter(year) + function_modifier: -46 + type: informal + - name: Niedziela Palmowa + regions: [pl] + function: easter(year) + function_modifier: -7 + type: informal + - name: Wielki Czwartek + regions: [pl] + function: easter(year) + function_modifier: -3 + type: informal + - name: Wielki Piątek + regions: [pl] + function: easter(year) + function_modifier: -2 + type: informal + - name: Wielka Sobota + regions: [pl] + function: easter(year) + function_modifier: -1 + type: informal + - name: Niedziela Wielkanocna + regions: [pl] + function: easter(year) + - name: Poniedziałek Wielkanocny (Lany Poniedziałek) + regions: [pl] + function: easter(year) + function_modifier: 1 + - name: Zesłanie Ducha Świętego (Zielone Świątki) + regions: [pl] + function: easter(year) + function_modifier: 49 + - name: Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało) + regions: [pl] + function: easter(year) + function_modifier: 60 + 1: + - name: Nowy Rok + regions: [pl] + mday: 1 + - name: Objawienie Pańskie (święto Trzech Króli) + regions: [pl] + function: pl_trzech_kroli(year) + - name: Objawienie Pańskie (święto Trzech Króli) + regions: [pl] + function: pl_trzech_kroli_informal(year) + type: informal + - name: Dzień Babci + regions: [pl] + mday: 21 + type: informal + - name: Dzień Dziadka + regions: [pl] + mday: 22 + type: informal + 2: + - name: Ofiarowanie Pańskie (Matki Boskiej Gromnicznej) + regions: [pl] + mday: 2 + type: informal + - name: Dzień Zakochanych (Walentynki) + regions: [pl] + mday: 14 + type: informal + 3: + - name: Dzień Kobiet + regions: [pl] + mday: 8 + type: informal + - name: Dzień Mężczyzn + regions: [pl] + mday: 10 + type: informal + 4: + - name: Prima Aprilis + regions: [pl] + mday: 1 + type: informal + - name: Międzynarodowy Dzień Ziemi + regions: [pl] + mday: 22 + type: informal + 5: + - name: Święto Państwowe (Święto Pracy) + regions: [pl] + mday: 1 + - name: Dzień Flagi Rzeczpospolitej Polskiej + regions: [pl] + mday: 2 + type: informal + - name: Święto Narodowe Trzeciego Maja + regions: [pl] + mday: 3 + 6: + - name: Dzień Ojca + regions: [pl] + mday: 23 + type: informal + 8: + - name: Wniebowzięcie Najświętszej Maryi Panny + regions: [pl] + mday: 15 + - name: Święto Wojska Polskiego + regions: [pl] + mday: 15 + 9: + - name: Dzień Chłopaka + regions: [pl] + mday: 30 + type: informal + 10: + - name: Dzień Nauczyciela (Dzień Edukacji Narodowej) + regions: [pl] + mday: 14 + type: informal + 11: + - name: Wszystkich Świętych + regions: [pl] + mday: 1 + - name: Dzień Zaduszny + regions: [pl] + mday: 2 + type: informal + - name: Narodowe Święto Niepodległości + regions: [pl] + mday: 11 + - name: Andrzejki + regions: [pl] + mday: 29 + type: informal + 12: + - name: Barbórka (Dzień Górnika, Naftowca i Gazownika) + regions: [pl] + mday: 4 + type: informal + - name: Mikołajki + regions: [pl] + mday: 6 + type: informal + - name: Wigilia Bożego Narodzenia + regions: [pl] + mday: 24 + type: informal + - name: pierwszy dzień Bożego Narodzenia + regions: [pl] + mday: 25 + - name: drugi dzień Bożego Narodzenia + regions: [pl] + mday: 26 + - name: Sylwester + regions: [pl] + mday: 31 + type: informal + +methods: + pl_trzech_kroli: + # Poland: January 6 is holiday since 2011 + arguments: year + ruby: | + year >= 2011 ? 6 : nil + pl_trzech_kroli_informal: + # Poland: January 6 wasn't holiday before 2011 + arguments: year + ruby: | + year < 2011 ? 6 : nil + +tests: + - given: + date: '2011-01-01' + regions: ["pl"] + expect: + name: "Nowy Rok" + - given: + date: '2011-05-01' + regions: ["pl"] + expect: + name: "Święto Państwowe (Święto Pracy)" + - given: + date: '2011-05-03' + regions: ["pl"] + expect: + name: "Święto Narodowe Trzeciego Maja" + - given: + date: '2011-11-01' + regions: ["pl"] + expect: + name: "Wszystkich Świętych" + - given: + date: '2011-11-11' + regions: ["pl"] + expect: + name: "Narodowe Święto Niepodległości" + - given: + date: '2011-12-25' + regions: ["pl"] + expect: + name: "pierwszy dzień Bożego Narodzenia" + - given: + date: '2011-12-26' + regions: ["pl"] + expect: + name: "drugi dzień Bożego Narodzenia" + - given: + date: '2011-01-21' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Babci" + - given: + date: '2011-01-22' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Dziadka" + - given: + date: '2011-02-02' + regions: ["pl"] + options: ["informal"] + expect: + name: "Ofiarowanie Pańskie (Matki Boskiej Gromnicznej)" + - given: + date: '2011-02-14' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Zakochanych (Walentynki)" + - given: + date: '2010-03-08' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Kobiet" + - given: + date: '2011-03-10' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Mężczyzn" + - given: + date: '2011-04-01' + regions: ["pl"] + options: ["informal"] + expect: + name: "Prima Aprilis" + - given: + date: '2010-04-22' + regions: ["pl"] + options: ["informal"] + expect: + name: "Międzynarodowy Dzień Ziemi" + - given: + date: '2011-05-02' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Flagi Rzeczpospolitej Polskiej" + - given: + date: '2010-06-23' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Ojca" + - given: + date: '2011-09-30' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Chłopaka" + - given: + date: '2011-10-14' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Nauczyciela (Dzień Edukacji Narodowej)" + - given: + date: '2011-11-02' + regions: ["pl"] + options: ["informal"] + expect: + name: "Dzień Zaduszny" + - given: + date: '2011-11-29' + regions: ["pl"] + options: ["informal"] + expect: + name: "Andrzejki" + - given: + date: '2011-12-04' + regions: ["pl"] + options: ["informal"] + expect: + name: "Barbórka (Dzień Górnika, Naftowca i Gazownika)" + - given: + date: '2011-12-06' + regions: ["pl"] + options: ["informal"] + expect: + name: "Mikołajki" + - given: + date: '2011-12-24' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wigilia Bożego Narodzenia" + - given: + date: '2011-12-31' + regions: ["pl"] + options: ["informal"] + expect: + name: "Sylwester" + - given: + date: '2011-01-21' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-01-22' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-02-02' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-02-14' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2010-03-08' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-03-10' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-04-01' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2010-04-22' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-05-02' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2010-06-23' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-09-30' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-10-14' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-11-02' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-11-29' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-12-04' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-12-06' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-12-24' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2011-12-31' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2008-01-06' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2009-01-06' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2010-01-06' + regions: ["pl"] + expect: + holiday: false + - given: + date: '2008-01-06' + regions: ["pl"] + options: ["informal"] + expect: + name: "Objawienie Pańskie (święto Trzech Króli)" + - given: + date: '2009-01-06' + regions: ["pl"] + options: ["informal"] + expect: + name: "Objawienie Pańskie (święto Trzech Króli)" + - given: + date: '2010-01-06' + regions: ["pl"] + options: ["informal"] + expect: + name: "Objawienie Pańskie (święto Trzech Króli)" + - given: + date: '2011-01-06' + regions: ["pl"] + expect: + name: "Objawienie Pańskie (święto Trzech Króli)" + - given: + date: '2012-01-06' + regions: ["pl"] + expect: + name: "Objawienie Pańskie (święto Trzech Króli)" + - given: + date: '2013-01-06' + regions: ["pl"] + expect: + name: "Objawienie Pańskie (święto Trzech Króli)" + - given: + date: '2008-01-31' + regions: ["pl"] + options: ["informal"] + expect: + name: "Tłusty Czwartek" + - given: + date: '2009-02-19' + regions: ["pl"] + options: ["informal"] + expect: + name: "Tłusty Czwartek" + - given: + date: '2010-02-11' + regions: ["pl"] + options: ["informal"] + expect: + name: "Tłusty Czwartek" + - given: + date: '2011-03-03' + regions: ["pl"] + options: ["informal"] + expect: + name: "Tłusty Czwartek" + - given: + date: '2012-02-16' + regions: ["pl"] + options: ["informal"] + expect: + name: "Tłusty Czwartek" + - given: + date: '2008-02-05' + regions: ["pl"] + options: ["informal"] + expect: + name: "Ostatki" + - given: + date: '2009-02-24' + regions: ["pl"] + options: ["informal"] + expect: + name: "Ostatki" + - given: + date: '2010-02-16' + regions: ["pl"] + options: ["informal"] + expect: + name: "Ostatki" + - given: + date: '2011-03-08' + regions: ["pl"] + options: ["informal"] + expect: + name: "Ostatki" + - given: + date: '2012-02-21' + regions: ["pl"] + options: ["informal"] + expect: + name: "Ostatki" + - given: + date: '2008-02-06' + regions: ["pl"] + options: ["informal"] + expect: + name: "Środa Popielcowa" + - given: + date: '2009-02-25' + regions: ["pl"] + options: ["informal"] + expect: + name: "Środa Popielcowa" + - given: + date: '2010-02-17' + regions: ["pl"] + options: ["informal"] + expect: + name: "Środa Popielcowa" + - given: + date: '2011-03-09' + regions: ["pl"] + options: ["informal"] + expect: + name: "Środa Popielcowa" + - given: + date: '2012-02-22' + regions: ["pl"] + options: ["informal"] + expect: + name: "Środa Popielcowa" + - given: + date: '2008-03-16' + regions: ["pl"] + options: ["informal"] + expect: + name: "Niedziela Palmowa" + - given: + date: '2009-04-05' + regions: ["pl"] + options: ["informal"] + expect: + name: "Niedziela Palmowa" + - given: + date: '2010-03-28' + regions: ["pl"] + options: ["informal"] + expect: + name: "Niedziela Palmowa" + - given: + date: '2011-04-17' + regions: ["pl"] + options: ["informal"] + expect: + name: "Niedziela Palmowa" + - given: + date: '2012-04-01' + regions: ["pl"] + options: ["informal"] + expect: + name: "Niedziela Palmowa" + - given: + date: '2008-03-20' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Czwartek" + - given: + date: '2009-04-09' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Czwartek" + - given: + date: '2010-04-01' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Czwartek" + - given: + date: '2011-04-21' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Czwartek" + - given: + date: '2012-04-05' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Czwartek" + - given: + date: '2008-03-21' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Piątek" + - given: + date: '2009-04-10' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Piątek" + - given: + date: '2010-04-02' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Piątek" + - given: + date: '2011-04-22' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Piątek" + - given: + date: '2012-04-06' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielki Piątek" + - given: + date: '2008-03-22' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielka Sobota" + - given: + date: '2009-04-11' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielka Sobota" + - given: + date: '2010-04-03' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielka Sobota" + - given: + date: '2011-04-23' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielka Sobota" + - given: + date: '2012-04-07' + regions: ["pl"] + options: ["informal"] + expect: + name: "Wielka Sobota" + - given: + date: '2008-03-23' + regions: ["pl"] + expect: + name: "Niedziela Wielkanocna" + - given: + date: '2009-04-12' + regions: ["pl"] + expect: + name: "Niedziela Wielkanocna" + - given: + date: '2010-04-04' + regions: ["pl"] + expect: + name: "Niedziela Wielkanocna" + - given: + date: '2011-04-24' + regions: ["pl"] + expect: + name: "Niedziela Wielkanocna" + - given: + date: '2012-04-08' + regions: ["pl"] + expect: + name: "Niedziela Wielkanocna" + - given: + date: '2008-03-24' + regions: ["pl"] + expect: + name: "Poniedziałek Wielkanocny (Lany Poniedziałek)" + - given: + date: '2009-04-13' + regions: ["pl"] + expect: + name: "Poniedziałek Wielkanocny (Lany Poniedziałek)" + - given: + date: '2010-04-05' + regions: ["pl"] + expect: + name: "Poniedziałek Wielkanocny (Lany Poniedziałek)" + - given: + date: '2011-04-25' + regions: ["pl"] + expect: + name: "Poniedziałek Wielkanocny (Lany Poniedziałek)" + - given: + date: '2012-04-09' + regions: ["pl"] + expect: + name: "Poniedziałek Wielkanocny (Lany Poniedziałek)" + - given: + date: '2008-05-11' + regions: ["pl"] + expect: + name: "Zesłanie Ducha Świętego (Zielone Świątki)" + - given: + date: '2009-05-31' + regions: ["pl"] + expect: + name: "Zesłanie Ducha Świętego (Zielone Świątki)" + - given: + date: '2010-05-23' + regions: ["pl"] + expect: + name: "Zesłanie Ducha Świętego (Zielone Świątki)" + - given: + date: '2011-06-12' + regions: ["pl"] + expect: + name: "Zesłanie Ducha Świętego (Zielone Świątki)" + - given: + date: '2012-05-27' + regions: ["pl"] + expect: + name: "Zesłanie Ducha Świętego (Zielone Świątki)" + - given: + date: '2008-05-22' + regions: ["pl"] + expect: + name: "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)" + - given: + date: '2009-06-11' + regions: ["pl"] + expect: + name: "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)" + - given: + date: '2010-06-03' + regions: ["pl"] + expect: + name: "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)" + - given: + date: '2011-06-23' + regions: ["pl"] + expect: + name: "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)" + - given: + date: '2012-06-07' + regions: ["pl"] + expect: + name: "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)" + - given: + date: '2011-08-15' + regions: ["pl"] + expect: + name: "Wniebowzięcie Najświętszej Maryi Panny" diff --git a/vendor/holidays/definitions/pt.yaml b/vendor/holidays/definitions/pt.yaml new file mode 100644 index 00000000..61faa5ad --- /dev/null +++ b/vendor/holidays/definitions/pt.yaml @@ -0,0 +1,187 @@ +# Portugese holiday definitions for the Ruby Holiday gem. +# +# Updated: 2014-03-01. +# Sources: +# - http://thomasallen.home.sapo.pt/travel/hols.htm +# - http://en.wikipedia.org/wiki/Holidays_in_Portugal +# - http://www.kidlink.org/KIDPROJ/MCC/mcc0006.html +# - http://www.worldtravelguide.net/country/227/public_holidays/Europe/Portugal.html +# - http://en.wikipedia.org/wiki/Portugal_Day +# - http://www.timeanddate.com/calendar/custom.html?year=2008&country=15 +# - http://en.wikipedia.org/wiki/Public_holidays_in_Portugal +# +# Changes 2017-05-31: +# - Add additional holidays for Porto (pt_po) and Lisbon (pt_li) +--- +months: + 0: + - name: Carnaval # same as Shrove Tuesday + regions: [pt] + function: easter(year) + function_modifier: -47 + type: informal + - name: Sexta-feira Santa + regions: [pt] + function: easter(year) + function_modifier: -2 + - name: Páscoa + regions: [pt] + function: easter(year) + - name: Corpo de Deus + regions: [pt] + function: easter(year) + function_modifier: 60 + 1: + - name: Ano Novo + regions: [pt] + mday: 1 + 4: + - name: Dia da Liberdade + regions: [pt] + mday: 25 + 5: + - name: Dia do Trabalhador + regions: [pt] + mday: 1 + 6: + - name: Dia de Portugal + regions: [pt] + mday: 10 + - name: Dia de Santo António + regions: [pt_li] + mday: 13 + - name: Dia de São João + regions: [pt_po] + mday: 24 + 8: + - name: Assunção de Nossa Senhora + regions: [pt] + mday: 15 + 10: + - name: Dia da República + regions: [pt] + mday: 5 + 11: + - name: Dia de Todos-os-Santos + regions: [pt] + mday: 1 + 12: + - name: Restauração da Independência + regions: [pt] + mday: 1 + - name: Imaculada Conceição + regions: [pt] + mday: 8 + - name: Natal + regions: [pt] + mday: 25 + +tests: + - given: + date: '2008-01-01' + regions: ["pt"] + options: ["informal"] + expect: + name: "Ano Novo" + - given: + date: '2005-02-08' + regions: ["pt"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2006-02-28' + regions: ["pt"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2007-02-20' + regions: ["pt"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2008-02-05' + regions: ["pt"] + options: ["informal"] + expect: + name: "Carnaval" + - given: + date: '2008-03-21' + regions: ["pt"] + options: ["informal"] + expect: + name: "Sexta-feira Santa" + - given: + date: '2008-03-23' + regions: ["pt"] + options: ["informal"] + expect: + name: "Páscoa" + - given: + date: '2016-03-27' + regions: ["pt"] + options: ["informal"] + expect: + name: "Páscoa" + - given: + date: '2008-04-25' + regions: ["pt"] + options: ["informal"] + expect: + name: "Dia da Liberdade" + - given: + date: '2008-05-01' + regions: ["pt"] + options: ["informal"] + expect: + name: "Dia do Trabalhador" + - given: + date: '2016-05-26' + regions: ["pt"] + options: ["informal"] + expect: + name: "Corpo de Deus" + - given: + date: '2008-06-10' + regions: ["pt"] + options: ["informal"] + expect: + name: "Dia de Portugal" + - given: + date: '2008-08-15' + regions: ["pt"] + options: ["informal"] + expect: + name: "Assunção de Nossa Senhora" + - given: + date: '2008-10-05' + regions: ["pt"] + options: ["informal"] + expect: + name: "Dia da República" + - given: + date: '2008-11-01' + regions: ["pt"] + options: ["informal"] + expect: + name: "Dia de Todos-os-Santos" + - given: + date: '2008-12-01' + regions: ["pt"] + options: ["informal"] + expect: + name: "Restauração da Independência" + - given: + date: '2008-12-08' + regions: ["pt"] + options: ["informal"] + expect: + name: "Imaculada Conceição" + - given: + date: '2008-12-25' + regions: ["pt"] + options: ["informal"] + expect: + name: "Natal" diff --git a/vendor/holidays/definitions/ro.yaml b/vendor/holidays/definitions/ro.yaml new file mode 100644 index 00000000..e02568d7 --- /dev/null +++ b/vendor/holidays/definitions/ro.yaml @@ -0,0 +1,240 @@ +# Romanian holiday definitions for the Ruby Holiday gem. +# +# Created: 2013-07-23 by Mihai Târnovan +# Sources: +# - http://ro.wikipedia.org/wiki/S%C4%83rb%C4%83tori_publice_%C3%AEn_Rom%C3%A2nia +# - http://en.wikipedia.org/wiki/Public_holidays_in_Romania +# +# Changes 2019-03-11 +# - Add Unirea Principatelor Române (since 2017) +# - Add Ziua Copilului (since 2017) +# - Add Vinerea Mare (since 2018) +# +# Sources: +# - https://www.mediafax.ro/politic/legea-prin-care-24-ianuarie-a-fost-declarata-zi-libera-nelucratoare-a-fost-promulgata-de-iohannis-15777292 +# - https://www.avocatnet.ro/articol_43954/Din-2017-salaria%C8%9Bii-vor-sta-acas%C4%83-%C8%99i-de-Ziua-Copilului-1-iunie-inclus%C4%83-de-azi-pe-lista-liberelor-legale.html +# - https://www.mediafax.ro/social/iohannis-a-promulgat-legea-prin-care-vinerea-mare-este-sarbatoare-legala-nelucratoare-17058413 +--- +months: + 0: + - name: Paștele - Vinerea Mare # Good Friday + regions: [ro] + function: orthodox_easter(year) + function_modifier: -2 + year_ranges: + from: 2018 + - name: Paștele - duminică + regions: [ro] + function: orthodox_easter(year) + - name: Paștele - luni + regions: [ro] + function: orthodox_easter(year) + function_modifier: 1 + - name: Rusaliile - 50 + regions: [ro] + function: orthodox_easter(year) + function_modifier: 49 + - name: Rusaliile - 51 + regions: [ro] + function: orthodox_easter(year) + function_modifier: 50 + 1: + - name: Anul nou + regions: [ro] + mday: 1 + - name: Anul nou + regions: [ro] + mday: 2 + - name: Unirea Principatelor Române + regions: [ro] + mday: 24 + year_ranges: + from: 2017 + 5: + - name: Ziua muncii + regions: [ro] + mday: 1 + 6: + - name: Ziua Copilului + regions: [ro] + mday: 1 + year_ranges: + from: 2017 + 8: + - name: Adormirea Maicii Domnului + regions: [ro] + mday: 15 + 11: + - name: Sfântul Apostol Andrei + regions: [ro] + mday: 30 + 12: + - name: Ziua Națională + regions: [ro] + mday: 1 + - name: Sărbătoarea Nașterii Domnului + regions: [ro] + mday: 25 + - name: Sărbătoarea Nașterii Domnului + regions: [ro] + mday: 26 + +tests: + - given: + date: '2017-04-14' + regions: ["ro"] + expect: + holiday: false + - given: + date: '2018-04-06' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - Vinerea Mare" + - given: + date: '2019-04-26' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - Vinerea Mare" + - given: + date: '1961-04-09' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - duminică" + - given: + date: '1961-04-10' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - luni" + - given: + date: '2013-05-05' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - duminică" + - given: + date: '2013-05-06' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - luni" + - given: + date: '2027-05-02' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - duminică" + - given: + date: '2027-05-03' + regions: ["ro"] + options: ["informal"] + expect: + name: "Paștele - luni" + - given: + date: '2012-06-04' + regions: ["ro"] + options: ["informal"] + expect: + name: "Rusaliile - 51" + - given: + date: '2013-06-23' + regions: ["ro"] + options: ["informal"] + expect: + name: "Rusaliile - 50" + - given: + date: '2013-06-24' + regions: ["ro"] + options: ["informal"] + expect: + name: "Rusaliile - 51" + - given: + date: '1986-06-22' + regions: ["ro"] + options: ["informal"] + expect: + name: "Rusaliile - 50" + - given: + date: '1986-06-23' + regions: ["ro"] + options: ["informal"] + expect: + name: "Rusaliile - 51" + - given: + date: '2009-01-01' + regions: ["ro"] + options: ["informal"] + expect: + name: "Anul nou" + - given: + date: '2014-01-02' + regions: ["ro"] + options: ["informal"] + expect: + name: "Anul nou" + - given: + date: '2017-01-24' + regions: ["ro"] + options: ["informal"] + expect: + name: "Unirea Principatelor Române" + - given: + date: '2016-01-24' + regions: ["ro"] + expect: + holiday: false + - given: + date: '2009-05-01' + regions: ["ro"] + options: ["informal"] + expect: + name: "Ziua muncii" + - given: + date: '2017-06-01' + regions: ["ro"] + options: ["informal"] + expect: + name: "Ziua Copilului" + - given: + date: '2016-06-01' + regions: ["ro"] + expect: + holiday: false + - given: + date: '2012-08-15' + regions: ["ro"] + options: ["informal"] + expect: + name: "Adormirea Maicii Domnului" + - given: + date: '2013-11-30' + regions: ["ro"] + options: ["informal"] + expect: + name: "Sfântul Apostol Andrei" + - given: + date: '2013-12-01' + regions: ["ro"] + options: ["informal"] + expect: + name: "Ziua Națională" + - given: + date: '2013-12-25' + regions: ["ro"] + options: ["informal"] + expect: + name: "Sărbătoarea Nașterii Domnului" + - given: + date: '2013-12-26' + regions: ["ro"] + options: ["informal"] + expect: + name: "Sărbătoarea Nașterii Domnului" + - given: + date: '2013-07-23' + regions: ["ro"] + expect: + holiday: false diff --git a/vendor/holidays/definitions/rs_cyrl.yaml b/vendor/holidays/definitions/rs_cyrl.yaml new file mode 100644 index 00000000..9c2c2b93 --- /dev/null +++ b/vendor/holidays/definitions/rs_cyrl.yaml @@ -0,0 +1,127 @@ +# Serbian holiday definitions for the Ruby Holiday gem. In Cyrillic. +# +# Updated: 2017-06-09 +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Serbia +# - https://de.wikipedia.org/wiki/Feiertage_in_Serbien +# - https://www.timeanddate.com/holidays/serbia/ +# - https://www.wko.at/service/aussenwirtschaft/Serbien:-Feiertage-2016.html +# - http://www.lexilogos.com/keyboard/serbian_conversion.htm +--- +months: + 0: + - name: Велики петак # Good Friday + regions: [rs_cyrl] + function: orthodox_easter(year) + function_modifier: -2 + - name: Велика Субота # Holy Saturday + regions: [rs_cyrl] + function: orthodox_easter(year) + function_modifier: -1 + - name: Васкрс # Easter Sunday + regions: [rs_cyrl] + function: orthodox_easter(year) + - name: Васкрсни понедељак # Easter Monday + regions: [rs_cyrl] + function: orthodox_easter(year) + function_modifier: 1 + 1: + - name: Нова Година # New Year's Day + regions: [rs_cyrl] + mday: 1 + - name: Нова Година # Day after New Year's Day + regions: [rs_cyrl] + mday: 2 + - name: Божић # Christmas Day + regions: [rs_cyrl] + mday: 7 + - name: Свети Сава (Савиндан) # Saint Sava Day + regions: [rs_cyrl] + mday: 27 + 2: + - name: Дан државности Србије # Statehood Day + regions: [rs_cyrl] + mday: 15 + - name: Дан државности Србије # Day after Statehood Day + regions: [rs_cyrl] + mday: 16 + 5: + - name: Празник рада # Worker's Day + regions: [rs_cyrl] + mday: 1 + - name: Празник рада # Day after Worker's Day + regions: [rs_cyrl] + mday: 2 + - name: Дан победе над фашизмом # Victory Day + regions: [rs_cyrl] + mday: 9 + 6: + - name: Видовдан # Saint Vitus Day + regions: [rs_cyrl] + mday: 28 + 11: + - name: Дан примирја # Armistice Day + regions: [rs_cyrl] + mday: 11 + +tests: + - given: + date: ['2017-1-1', '2017-1-2'] + regions: ["rs_cyrl"] + expect: + name: "Нова Година" + - given: + date: '2017-1-7' + regions: ["rs_cyrl"] + expect: + name: "Божић" + - given: + date: '2017-1-27' + regions: ["rs_cyrl"] + expect: + name: "Свети Сава (Савиндан)" + - given: + date: ['2017-2-15', '2017-2-16'] + regions: ["rs_cyrl"] + expect: + name: "Дан државности Србије" + - given: + date: ['2017-5-1', '2017-5-2'] + regions: ["rs_cyrl"] + expect: + name: "Празник рада" + - given: + date: '2017-5-9' + regions: ["rs_cyrl"] + expect: + name: "Дан победе над фашизмом" + - given: + date: '2017-6-28' + regions: ["rs_cyrl"] + expect: + name: "Видовдан" + - given: + date: '2017-11-11' + regions: ["rs_cyrl"] + expect: + name: "Дан примирја" + - given: + date: ['2017-4-14', '2018-4-6', '2019-4-26'] + regions: ["rs_cyrl"] + expect: + name: "Велики петак" + - given: + date: ['2017-4-15', '2018-4-7', '2019-4-27'] + regions: ["rs_cyrl"] + expect: + name: "Велика Субота" + - given: + date: ['2017-4-16', '2018-4-8', '2019-4-28'] + regions: ["rs_cyrl"] + expect: + name: "Васкрс" + - given: + date: ['2017-4-17', '2018-4-9', '2019-4-29'] + regions: ["rs_cyrl"] + expect: + name: "Васкрсни понедељак" diff --git a/vendor/holidays/definitions/rs_la.yaml b/vendor/holidays/definitions/rs_la.yaml new file mode 100644 index 00000000..a871b907 --- /dev/null +++ b/vendor/holidays/definitions/rs_la.yaml @@ -0,0 +1,127 @@ +# Serbian holiday definitions for the Ruby Holiday gem. In Latin. +# +# Updated: 2017-06-09 +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Serbia +# - https://de.wikipedia.org/wiki/Feiertage_in_Serbien +# - https://www.timeanddate.com/holidays/serbia/ +# - https://www.wko.at/service/aussenwirtschaft/Serbien:-Feiertage-2016.html +# - http://www.lexilogos.com/keyboard/serbian_conversion.htm +--- +months: + 0: + - name: Veliki Petak # Good Friday + regions: [rs_la] + function: orthodox_easter(year) + function_modifier: -2 + - name: Velika Subota # Holy Saturday + regions: [rs_la] + function: orthodox_easter(year) + function_modifier: -1 + - name: Uskrs # Easter Sunday + regions: [rs_la] + function: orthodox_easter(year) + - name: Vaskrsni ponedeljak # Easter Monday + regions: [rs_la] + function: orthodox_easter(year) + function_modifier: 1 + 1: + - name: Nova Godina # New Year's Day + regions: [rs_la] + mday: 1 + - name: Nova Godina # Day after New Year's Day + regions: [rs_la] + mday: 2 + - name: Božić # Christmas Day + regions: [rs_la] + mday: 7 + - name: Dan Svetog Save # Saint Sava Day + regions: [rs_la] + mday: 27 + 2: + - name: Dan državnosti Srbije # Statehood Day + regions: [rs_la] + mday: 15 + - name: Dan državnosti Srbije # Day after Statehood Day + regions: [rs_la] + mday: 16 + 5: + - name: Praznik rada # Worker's Day + regions: [rs_la] + mday: 1 + - name: Praznik rada # Day after Worker's Day + regions: [rs_la] + mday: 2 + - name: Dan pobede # Victory Day + regions: [rs_la] + mday: 9 + 6: + - name: Vidovdan # Saint Vitus Day + regions: [rs_la] + mday: 28 + 11: + - name: Dan primirja # Armistice Day + regions: [rs_la] + mday: 11 + +tests: + - given: + date: ['2017-1-1', '2017-1-2'] + regions: ["rs_la"] + expect: + name: "Nova Godina" + - given: + date: '2017-1-7' + regions: ["rs_la"] + expect: + name: "Božić" + - given: + date: '2017-1-27' + regions: ["rs_la"] + expect: + name: "Dan Svetog Save" + - given: + date: ['2017-2-15', '2017-2-16'] + regions: ["rs_la"] + expect: + name: "Dan državnosti Srbije" + - given: + date: ['2017-5-1', '2017-5-2'] + regions: ["rs_la"] + expect: + name: "Praznik rada" + - given: + date: '2017-5-9' + regions: ["rs_la"] + expect: + name: "Dan pobede" + - given: + date: '2017-6-28' + regions: ["rs_la"] + expect: + name: "Vidovdan" + - given: + date: '2017-11-11' + regions: ["rs_la"] + expect: + name: "Dan primirja" + - given: + date: ['2017-4-14', '2018-4-6', '2019-4-26'] + regions: ["rs_la"] + expect: + name: "Veliki Petak" + - given: + date: ['2017-4-15', '2018-4-7', '2019-4-27'] + regions: ["rs_la"] + expect: + name: "Velika Subota" + - given: + date: ['2017-4-16', '2018-4-8', '2019-4-28'] + regions: ["rs_la"] + expect: + name: "Uskrs" + - given: + date: ['2017-4-17', '2018-4-9', '2019-4-29'] + regions: ["rs_la"] + expect: + name: "Vaskrsni ponedeljak" diff --git a/vendor/holidays/definitions/ru.yaml b/vendor/holidays/definitions/ru.yaml new file mode 100644 index 00000000..d370135e --- /dev/null +++ b/vendor/holidays/definitions/ru.yaml @@ -0,0 +1,108 @@ +# Russian holiday definitions for the Ruby Holiday gem. In official Cyrillic. +# +# Updated: 2017-06-14 +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Russia +# - https://de.wikipedia.org/wiki/Feiertage_in_Russland +# - https://translate.yandex.com/?lang=en-ru +# - https://ru.wikipedia.org/wiki/День_Государственного_флага_Российской_Федерации +--- +months: + 1: + - name: Новый год # New Year's Day + regions: [ru] + mday: 1 + - name: Новогодний праздник # 1st New Year holiday + regions: [ru] + mday: 2 + - name: Новогодний праздник # 2nd New Year holiday + regions: [ru] + mday: 3 + - name: Новогодний праздник # 3rd New Year holiday + regions: [ru] + mday: 4 + - name: Новогодний праздник # 4th New Year holiday + regions: [ru] + mday: 5 + - name: Рождество Христово # Christmas Day + regions: [ru] + mday: 7 + 2: + - name: День защитника Отечества # Defender of the Fatherland Day + regions: [ru] + mday: 23 + 3: + - name: Международный женский день # International Women's Day + regions: [ru] + mday: 8 + 5: + - name: Праздник Весны и Труда # Spring and Labour Day + regions: [ru] + mday: 1 + - name: День Победы # Victory Day + regions: [ru] + mday: 9 + 6: + - name: День России # Russia Day + regions: [ru] + mday: 12 + 8: + - name: День Государственного флага Российской Федерации # National Flag Day (official working holiday) + regions: [ru] + mday: 22 + 11: + - name: День народного единства # Unity Day + regions: [ru] + mday: 4 + +tests: + - given: + date: '2017-1-1' + regions: ["ru"] + expect: + name: "Новый год" + - given: + date: ['2017-1-2', '2017-1-3', '2017-1-4', '2017-1-5'] + regions: ["ru"] + expect: + name: "Новогодний праздник" + - given: + date: '2017-1-7' + regions: ["ru"] + expect: + name: "Рождество Христово" + - given: + date: '2017-2-23' + regions: ["ru"] + expect: + name: "День защитника Отечества" + - given: + date: '2017-3-8' + regions: ["ru"] + expect: + name: "Международный женский день" + - given: + date: '2017-5-1' + regions: ["ru"] + expect: + name: "Праздник Весны и Труда" + - given: + date: '2017-5-9' + regions: ["ru"] + expect: + name: "День Победы" + - given: + date: '2017-6-12' + regions: ["ru"] + expect: + name: "День России" + - given: + date: '2017-8-22' + regions: ["ru"] + expect: + name: "День Государственного флага Российской Федерации" + - given: + date: '2017-11-4' + regions: ["ru"] + expect: + name: "День народного единства" diff --git a/vendor/holidays/definitions/se.yaml b/vendor/holidays/definitions/se.yaml new file mode 100644 index 00000000..33e8e9f8 --- /dev/null +++ b/vendor/holidays/definitions/se.yaml @@ -0,0 +1,238 @@ +# Swedish holiday definitions for the Ruby Holiday gem. +# +# Updated: 2008-11-28. +# Sources: +# - http://en.wikipedia.org/wiki/Holidays_in_Sweden +# - http://www.worldtravelguide.net/country/269/public_holidays/Europe/Sweden.html +# - http://hem.passagen.se/farila/midsum.htm +# - http://www.timeanddate.com/calendar/?country=21 +--- +months: + 0: + - name: Långfredagen + regions: [se] + function: easter(year) + function_modifier: -2 + - name: Påskafton + regions: [se] + function: easter(year) + function_modifier: -1 + type: informal + - name: Påskdagen + regions: [se] + function: easter(year) + - name: Annandag påsk + regions: [se] + function: easter(year) + function_modifier: 1 + - name: Kristi himmelsfärdsdag # Ascension Day + regions: [se] + function: easter(year) + function_modifier: 39 + - name: Pingstdagen # Whitsunday + regions: [se] + function: easter(year) + function_modifier: 49 + - name: Alla helgons dag # All Saint's Day + regions: [se] + function: se_alla_helgons_dag(year) + 1: + - name: Nyårsdagen + regions: [se] + mday: 1 + - name: Trettondedag jul + regions: [se] + mday: 6 + 5: + - name: Första maj + regions: [se] + mday: 1 + 6: + - name: Nationaldagen + regions: [se] + mday: 6 + - name: Midsommardagen + regions: [se] + function: se_midsommardagen(year) + - name: Midsommarafton + regions: [se] + function: se_midsommardagen(year) + function_modifier: -1 + type: informal + 12: + - name: Julafton + regions: [se] + mday: 24 + type: informal + - name: Juldagen + regions: [se] + mday: 25 + - name: Annandag jul + regions: [se] + mday: 26 + - name: Nyårsafton + regions: [se] + mday: 31 + type: informal + +methods: + se_midsommardagen: + # Sweden: Mid-summer (Saturday between June 20–26) + arguments: year + ruby: | + date = Date.civil(year,6,20) + date += (6 - date.wday) + date + se_alla_helgons_dag: + # Sweden: All Saint's Day (Saturday between Oct 31 and Nov 6) + arguments: year + ruby: | + date = Date.civil(year,10,31) + date += (6 - date.wday) + date + +tests: + - given: + date: '2008-01-01' + regions: ["se"] + options: ["informal"] + expect: + name: "Nyårsdagen" + - given: + date: '2008-01-06' + regions: ["se"] + options: ["informal"] + expect: + name: "Trettondedag jul" + - given: + date: '2008-03-21' + regions: ["se"] + options: ["informal"] + expect: + name: "Långfredagen" + - given: + date: '2008-03-22' + regions: ["se"] + options: ["informal"] + expect: + name: "Påskafton" + - given: + date: '2008-03-23' + regions: ["se"] + options: ["informal"] + expect: + name: "Påskdagen" + - given: + date: '2008-03-24' + regions: ["se"] + options: ["informal"] + expect: + name: "Annandag påsk" + - given: + date: '2008-05-01' + regions: ["se"] + options: ["informal"] + expect: + name: "Kristi himmelsfärdsdag" + - given: + date: '2008-05-11' + regions: ["se"] + options: ["informal"] + expect: + name: "Pingstdagen" + - given: + date: '2008-06-06' + regions: ["se"] + options: ["informal"] + expect: + name: "Nationaldagen" + - given: + date: '2005-06-25' + regions: ["se"] + options: ["informal"] + expect: + name: "Midsommardagen" + - given: + date: '2006-06-24' + regions: ["se"] + options: ["informal"] + expect: + name: "Midsommardagen" + - given: + date: '2006-06-23' + regions: ["se"] + options: ["informal"] + expect: + name: "Midsommarafton" + - given: + date: '2007-06-23' + regions: ["se"] + options: ["informal"] + expect: + name: "Midsommardagen" + - given: + date: '2007-06-22' + regions: ["se"] + options: ["informal"] + expect: + name: "Midsommarafton" + - given: + date: '2008-06-21' + regions: ["se"] + options: ["informal"] + expect: + name: "Midsommardagen" + - given: + date: '2008-06-20' + regions: ["se"] + options: ["informal"] + expect: + name: "Midsommarafton" + - given: + date: '2005-11-05' + regions: ["se"] + options: ["informal"] + expect: + name: "Alla helgons dag" + - given: + date: '2006-11-04' + regions: ["se"] + options: ["informal"] + expect: + name: "Alla helgons dag" + - given: + date: '2007-11-03' + regions: ["se"] + options: ["informal"] + expect: + name: "Alla helgons dag" + - given: + date: '2008-11-01' + regions: ["se"] + options: ["informal"] + expect: + name: "Alla helgons dag" + - given: + date: '2008-12-24' + regions: ["se"] + options: ["informal"] + expect: + name: "Julafton" + - given: + date: '2008-12-25' + regions: ["se"] + options: ["informal"] + expect: + name: "Juldagen" + - given: + date: '2008-12-26' + regions: ["se"] + options: ["informal"] + expect: + name: "Annandag jul" + - given: + date: '2008-12-31' + regions: ["se"] + options: ["informal"] + expect: + name: "Nyårsafton" diff --git a/vendor/holidays/definitions/sg.yaml b/vendor/holidays/definitions/sg.yaml new file mode 100644 index 00000000..8fcaf4ba --- /dev/null +++ b/vendor/holidays/definitions/sg.yaml @@ -0,0 +1,90 @@ +# Singapore holiday definitions for the Holidays gem! + +# Days not included in the definitions (yet): +# Vesak Day (falls on the first full moon in May) +# Lunar New Year (falls on the first day of the Lunar Calendar) +# Hari Raya Puasa and Hari Raya Haji (based on moon sightings, Islamic Calendar) +# Deepavali (15th Day of September or October, based on the Hindu Calendar) + +# Source: +# http://publicholidays.sg/ + +months: + 0: + - name: Good Friday + regions: [sg] + function: easter(year) + function_modifier: -2 + 1: + - name: New Year's Day + regions: [sg] + mday: 1 + observed: to_weekday_if_weekend(date) + 2: + - name: Valentine's Day + regions: [sg] + mday: 14 + type: informal + - name: Total Defence Day + regions: [sg] + mday: 15 + type: informal + + 5: + - name: Labour Day + regions: [sg] + mday: 1 + 8: + - name: National Day + regions: [sg] + mday: 9 + observed: to_weekday_if_weekend(date) + 12: + - name: Christmas Day + regions: [sg] + mday: 25 + observed: to_weekday_if_weekend(date) + +tests: + - given: + date: '2014-01-01' + regions: ["sg"] + options: ["informal"] + expect: + name: "New Year's Day" + - given: + date: '2014-02-14' + regions: ["sg"] + options: ["informal"] + expect: + name: "Valentine's Day" + - given: + date: '2014-02-15' + regions: ["sg"] + options: ["informal"] + expect: + name: "Total Defence Day" + - given: + date: '2014-04-18' + regions: ["sg"] + options: ["informal"] + expect: + name: "Good Friday" + - given: + date: '2014-05-01' + regions: ["sg"] + options: ["informal"] + expect: + name: "Labour Day" + - given: + date: '2014-08-09' + regions: ["sg"] + options: ["informal"] + expect: + name: "National Day" + - given: + date: '2014-12-25' + regions: ["sg"] + options: ["informal"] + expect: + name: "Christmas Day" diff --git a/vendor/holidays/definitions/si.yaml b/vendor/holidays/definitions/si.yaml new file mode 100644 index 00000000..aaeee54b --- /dev/null +++ b/vendor/holidays/definitions/si.yaml @@ -0,0 +1,159 @@ +# Slovenia holiday definitions for the Ruby Holiday gem. +# +# Updated: 2014-04-09. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_Slovenia + +months: + 0: + - name: velikonočna nedelja + regions: [si] + function: easter(year) + - name: velikonočni ponedeljek + regions: [si] + function: easter(year) + function_modifier: 1 + - name: binkošti + regions: [si] + function: easter(year) + function_modifier: 49 + 1: + - name: novo leto + regions: [si] + mday: 1 + 2: + - name: Prešernov dan, slovenski kulturni praznik + regions: [si] + mday: 8 + 4: + - name: dan upora proti okupatorju + regions: [si] + mday: 27 + 5: + - name: praznik dela + regions: [si] + mday: 1 + - name: praznik dela + regions: [si] + mday: 2 + 6: + - name: dan državnosti + regions: [si] + mday: 25 + 8: + - name: Marijino vnebovzetje + regions: [si] + mday: 15 + 10: + - name: dan reformacije + regions: [si] + mday: 31 + 11: + - name: dan spomina na mrtve + regions: [si] + mday: 1 + 12: + - name: božič + regions: [si] + mday: 25 + - name: dan samostojnosti in enotnosti + regions: [si] + mday: 26 + +tests: + - given: + date: '2015-04-05' + regions: ["si"] + expect: + name: "velikonočna nedelja" + - given: + date: '2016-03-27' + regions: ["si"] + expect: + name: "velikonočna nedelja" + - given: + date: '2015-04-06' + regions: ["si"] + expect: + name: "velikonočni ponedeljek" + - given: + date: '2016-03-28' + regions: ["si"] + expect: + name: "velikonočni ponedeljek" + - given: + date: '2015-05-24' + regions: ["si"] + expect: + name: "binkošti" + - given: + date: '2016-05-15' + regions: ["si"] + expect: + name: "binkošti" + - given: + date: ["2014-01-01", "2015-01-01", "2016-01-01", "2017-01-01", "2018-01-01", "2019-01-01", "2020-01-01"] + regions: ["si"] + options: ["informal"] + expect: + name: "novo leto" + - given: + date: ["2014-02-08", "2015-02-08", "2016-02-08", "2017-02-08", "2018-02-08", "2019-02-08", "2020-02-08"] + regions: ["si"] + options: ["informal"] + expect: + name: "Prešernov dan, slovenski kulturni praznik" + - given: + date: ["2014-04-27", "2015-04-27", "2016-04-27", "2017-04-27", "2018-04-27", "2019-04-27", "2020-04-27"] + regions: ["si"] + options: ["informal"] + expect: + name: "dan upora proti okupatorju" + - given: + date: ["2014-05-01", "2015-05-01", "2016-05-01", "2017-05-01", "2018-05-01", "2019-05-01", "2020-05-01"] + regions: ["si"] + options: ["informal"] + expect: + name: "praznik dela" + - given: + date: ["2014-05-02", "2015-05-02", "2016-05-02", "2017-05-02", "2018-05-02", "2019-05-02", "2020-05-02"] + regions: ["si"] + options: ["informal"] + expect: + name: "praznik dela" + - given: + date: ["2014-06-25", "2015-06-25", "2016-06-25", "2017-06-25", "2018-06-25", "2019-06-25", "2020-06-25"] + regions: ["si"] + options: ["informal"] + expect: + name: "dan državnosti" + - given: + date: ["2014-08-15", "2015-08-15", "2016-08-15", "2017-08-15", "2018-08-15", "2019-08-15", "2020-08-15"] + regions: ["si"] + options: ["informal"] + expect: + name: "Marijino vnebovzetje" + - given: + date: ["2014-10-31", "2015-10-31", "2016-10-31", "2017-10-31", "2018-10-31", "2019-10-31", "2020-10-31"] + regions: ["si"] + options: ["informal"] + expect: + name: "dan reformacije" + - given: + date: ["2014-11-01", "2015-11-01", "2016-11-01", "2017-11-01", "2018-11-01", "2019-11-01", "2020-11-01"] + regions: ["si"] + options: ["informal"] + expect: + name: "dan spomina na mrtve" + - given: + date: ["2014-12-25", "2015-12-25", "2016-12-25", "2017-12-25", "2018-12-25", "2019-12-25", "2020-12-25"] + regions: ["si"] + options: ["informal"] + expect: + name: "božič" + - given: + date: '2008-12-26' + regions: ["si"] + options: ["informal"] + expect: + name: "dan samostojnosti in enotnosti" diff --git a/vendor/holidays/definitions/sk.yaml b/vendor/holidays/definitions/sk.yaml new file mode 100644 index 00000000..39fdf5cb --- /dev/null +++ b/vendor/holidays/definitions/sk.yaml @@ -0,0 +1,154 @@ +# Slovak holiday definitions for the Ruby Holiday gem. +# +# Updated: 2013-12-26. +# Sources: +# - http://sk.wikipedia.org/wiki/Slovensk%C3%A9_%C5%A1t%C3%A1tne_sviatky +--- +months: + 0: + - name: Veľkonočný pondelok + regions: [sk] + function: easter(year) + function_modifier: 1 + - name: Veľký piatok + regions: [sk] + function: easter(year) + function_modifier: -2 + 1: + - name: Nový rok + regions: [sk] + mday: 1 + - name: Zjavenie Pána (Traja králi) + regions: [sk] + mday: 6 + 5: + - name: Sviatok práce + regions: [sk] + mday: 1 + - name: Deň víťazstva nad fašizmom + regions: [sk] + mday: 8 + 7: + - name: Sviatok svätého Cyrila a svätého Metoda + regions: [sk] + mday: 5 + 8: + - name: Výročie Slovenského národného povstania + regions: [sk] + mday: 29 + 9: + - name: Deň Ústavy Slovenskej republiky + regions: [sk] + mday: 1 + - name: Sedembolestná Panna Mária + regions: [sk] + mday: 15 + 11: + - name: Sviatok všetkých svätých + regions: [sk] + mday: 1 + - name: Deň boja za slobodu a demokraciu + regions: [sk] + mday: 17 + 12: + - name: Štedrý deň + regions: [sk] + mday: 24 + - name: 1. sviatok vianočný + regions: [sk] + mday: 25 + - name: 2. sviatok vianočný + regions: [sk] + mday: 26 + +tests: + - given: + date: '2013-01-01' + regions: ["sk"] + options: ["informal"] + expect: + name: "Nový rok" + - given: + date: '2013-01-06' + regions: ["sk"] + options: ["informal"] + expect: + name: "Zjavenie Pána (Traja králi)" + - given: + date: '2013-03-29' + regions: ["sk"] + options: ["informal"] + expect: + name: "Veľký piatok" + - given: + date: '2013-04-01' + regions: ["sk"] + options: ["informal"] + expect: + name: "Veľkonočný pondelok" + - given: + date: '2013-05-01' + regions: ["sk"] + options: ["informal"] + expect: + name: "Sviatok práce" + - given: + date: '2013-05-08' + regions: ["sk"] + options: ["informal"] + expect: + name: "Deň víťazstva nad fašizmom" + - given: + date: '2013-07-05' + regions: ["sk"] + options: ["informal"] + expect: + name: "Sviatok svätého Cyrila a svätého Metoda" + - given: + date: '2013-08-29' + regions: ["sk"] + options: ["informal"] + expect: + name: "Výročie Slovenského národného povstania" + - given: + date: '2013-09-01' + regions: ["sk"] + options: ["informal"] + expect: + name: "Deň Ústavy Slovenskej republiky" + - given: + date: '2013-09-15' + regions: ["sk"] + options: ["informal"] + expect: + name: "Sedembolestná Panna Mária" + - given: + date: '2013-11-01' + regions: ["sk"] + options: ["informal"] + expect: + name: "Sviatok všetkých svätých" + - given: + date: '2013-11-17' + regions: ["sk"] + options: ["informal"] + expect: + name: "Deň boja za slobodu a demokraciu" + - given: + date: '2013-12-24' + regions: ["sk"] + options: ["informal"] + expect: + name: "Štedrý deň" + - given: + date: '2013-12-25' + regions: ["sk"] + options: ["informal"] + expect: + name: "1. sviatok vianočný" + - given: + date: '2013-12-26' + regions: ["sk"] + options: ["informal"] + expect: + name: "2. sviatok vianočný" diff --git a/vendor/holidays/definitions/spec/coverage_report.rb b/vendor/holidays/definitions/spec/coverage_report.rb new file mode 100644 index 00000000..22ac9dd7 --- /dev/null +++ b/vendor/holidays/definitions/spec/coverage_report.rb @@ -0,0 +1,9 @@ +require 'simplecov' +require 'simplecov-rcov' +SimpleCov.minimum_coverage 100 +SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter +SimpleCov.coverage_dir 'reports/coverage' +SimpleCov.start do + add_filter "/spec/" + add_filter "/.bundle/" +end diff --git a/vendor/holidays/definitions/spec/data/invalid/months/malformed/bad.yaml b/vendor/holidays/definitions/spec/data/invalid/months/malformed/bad.yaml new file mode 100644 index 00000000..3282ceac --- /dev/null +++ b/vendor/holidays/definitions/spec/data/invalid/months/malformed/bad.yaml @@ -0,0 +1,15 @@ +--- +months: + 1: + - name: Test Holiday + regions: [test] + mday: 1 + +methods: + test: + arguments: year + source: | + true + +tests: | + test diff --git a/vendor/holidays/definitions/spec/data/invalid/months/missing/no_months.yaml b/vendor/holidays/definitions/spec/data/invalid/months/missing/no_months.yaml new file mode 100644 index 00000000..5130d78b --- /dev/null +++ b/vendor/holidays/definitions/spec/data/invalid/months/missing/no_months.yaml @@ -0,0 +1,9 @@ +--- +methods: + test: + arguments: year + source: | + true + +tests: | + test diff --git a/vendor/holidays/definitions/spec/data/valid/simple.yaml b/vendor/holidays/definitions/spec/data/valid/simple.yaml new file mode 100644 index 00000000..3282ceac --- /dev/null +++ b/vendor/holidays/definitions/spec/data/valid/simple.yaml @@ -0,0 +1,15 @@ +--- +months: + 1: + - name: Test Holiday + regions: [test] + mday: 1 + +methods: + test: + arguments: year + source: | + true + +tests: | + test diff --git a/vendor/holidays/definitions/spec/spec_helper.rb b/vendor/holidays/definitions/spec/spec_helper.rb new file mode 100644 index 00000000..8f75ca9d --- /dev/null +++ b/vendor/holidays/definitions/spec/spec_helper.rb @@ -0,0 +1,7 @@ +$: << '../lib' + +require 'coverage_report' + +RSpec.configure do |c| + c.order = :random +end diff --git a/vendor/holidays/definitions/spec/validation/custom_method_validator_spec.rb b/vendor/holidays/definitions/spec/validation/custom_method_validator_spec.rb new file mode 100644 index 00000000..82f60e89 --- /dev/null +++ b/vendor/holidays/definitions/spec/validation/custom_method_validator_spec.rb @@ -0,0 +1,60 @@ +require 'spec_helper' +require 'validation/custom_method_validator' + +describe Definitions::Validation::CustomMethod do + let(:methods) { + { + 'test' => { + 'arguments' => "date,year,month,day", + 'ruby' => "some source", + } + } + } + + subject { described_class.new } + + context 'success' do + it 'returns true' do + expect(subject.call(methods)).to be true + end + end + + context 'failure' do + context 'name' do + it 'returns false if empty' do + methods = {} + methods[""] = {} + expect { subject.call(methods) }.to raise_error(Definitions::Errors::InvalidCustomMethod) + end + end + + context 'arguments' do + it 'returns false if nil' do + methods['test']['arguments'] = nil + expect { subject.call(methods) }.to raise_error(Definitions::Errors::InvalidCustomMethod) + end + + it 'returns false if empty' do + methods['test']['arguments'] = "" + expect { subject.call(methods) }.to raise_error(Definitions::Errors::InvalidCustomMethod) + end + + it 'returns false if contains unknown variable' do + methods['test']['arguments'] = "unknown" + expect { subject.call(methods) }.to raise_error(Definitions::Errors::InvalidCustomMethod) + end + end + + context 'source' do + it 'returns false if nil' do + methods['test']['ruby'] = nil + expect { subject.call(methods) }.to raise_error(Definitions::Errors::InvalidCustomMethod) + end + + it 'returns false if empty' do + methods['test']['ruby'] = "" + expect { subject.call(methods) }.to raise_error(Definitions::Errors::InvalidCustomMethod) + end + end + end +end diff --git a/vendor/holidays/definitions/spec/validation/definition_validator_spec.rb b/vendor/holidays/definitions/spec/validation/definition_validator_spec.rb new file mode 100644 index 00000000..43ae94e5 --- /dev/null +++ b/vendor/holidays/definitions/spec/validation/definition_validator_spec.rb @@ -0,0 +1,43 @@ +require 'spec_helper' +require 'validation/definition_validator' + +describe Definitions::Validation::Definition do + let(:custom_method_validator) { double(:custom_method_validator, :call => true) } + let(:months_validator) { double(:months_validator, :call => nil) } + let(:test_validator) { double(:test_validator, :call => true) } + + let(:definition) { { + "months" => { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1}] }, + "methods" =>{ "test" => {"arguments"=>"year", "source"=>"true"} }, + "tests" => "test" + } } + + subject { described_class.new(custom_method_validator, months_validator, test_validator) } + + context 'definition is valid' do + it 'reports success' do + expect(subject.call(definition)).to be true + end + end + + context 'invalid months' do + it 'raises error if months validator raises error' do + expect(months_validator).to receive(:call).with(definition['months']).and_raise(StandardError) + expect { subject.call(definition) }.to raise_error(StandardError) + end + end + + context 'no methods' do + it 'returns success' do + definition["methods"] = nil + expect(subject.call(definition)).to be true + end + end + + context 'no tests' do + it 'raises error' do + expect(test_validator).to receive(:call).with(definition['tests']).and_raise(StandardError) + expect { subject.call(definition) }.to raise_error(StandardError) + end + end +end diff --git a/vendor/holidays/definitions/spec/validation/month_validator_spec.rb b/vendor/holidays/definitions/spec/validation/month_validator_spec.rb new file mode 100644 index 00000000..536adea4 --- /dev/null +++ b/vendor/holidays/definitions/spec/validation/month_validator_spec.rb @@ -0,0 +1,175 @@ +require 'spec_helper' +require 'validation/month_validator' + +describe Definitions::Validation::Month do + subject { described_class.new } + + context 'months are valid' do + it 'reports success' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1}] } + expect(subject.call(months)).to be true + end + end + + context 'invalid months' do + it 'returns error if missing' do + expect { subject.call(nil) }.to raise_error(Definitions::Errors::NoMonths) + end + + it 'returns error if empty' do + expect { subject.call({}) }.to raise_error(Definitions::Errors::NoMonths) + expect { subject.call([]) }.to raise_error(Definitions::Errors::NoMonths) + end + + it 'returns error if month not an integer' do + months = { 'january' => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1}] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("All months must be an integer, received: #{months}") + } + end + + it 'returns error if months not 0 through 12' do + months = { -1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1}] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("All months must be between 0 and 12, received: #{months}") + } + + months = { 13 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1}] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("All months must be between 0 and 12, received: #{months}") + } + end + + it 'returns error if month has no name' do + months = { 1 => [{""=>"Test Holiday", "regions"=>["test"], "mday"=>1}] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("All months must have a name, received: #{months}") + } + end + + it 'returns error if month has no regions' do + months = { 1 => [{"name"=>"Test Holiday", "mday"=>1}] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidRegions) { |e| + expect(e.message).to eq("A month must contain at least one region, received: #{months}") + } + end + + it 'returns error if month has empty regions' do + months = { 1 => [{"name"=>"Test Holiday", "regions" => [], "mday"=>1}] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidRegions) { |e| + expect(e.message).to eq("A month must contain at least one region, received: #{months}") + } + end + + it 'returns error if month has empty regions' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>[""], "mday"=>1}] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidRegions) { |e| + expect(e.message).to eq("A month must contain at least one region, received: #{months}") + } + end + + context 'year_ranges' do + it 'returns error if year_ranges contains unknown subkey' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"blah" => [2018]} }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The :year_ranges value only accepts the following: :until, :from, :limited, :between, received: #{months}") + } + end + + it 'returns error if :until value is not a single integer' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"until" => [2018]} }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.until value must contain a single 'year' integer, ex. 2018, received: #{months}") + } + end + + it 'returns error if :from value is not a single integer' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"from" => [2018]} }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.from value must contain a single 'year' integer, ex. 2018, received: #{months}") + } + end + + it 'returns error if :limited value is not an array' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"limited" => 2018} }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.limited value must contain an array of 'year' integers, ex. [2018], received: #{months}") + } + end + + it 'returns error if :limited value is not an array of integers' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"limited" => ["blah"]} }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.limited value must contain an array of 'year' integers, ex. [2018], received: #{months}") + } + end + + context 'between' do + it 'returns error if not a hash' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"between" => "2008..2012" } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("year_ranges.between must contain both a 'start' and 'end' key, received: #{months}") + } + end + + it 'returns error if start is missing' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"between" => {"end" => 2018} } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("year_ranges.between must contain both a 'start' and 'end' key, received: #{months}") + } + end + + it 'returns error if end is missing' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"between" => {"start" => 2016} } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("year_ranges.between must contain both a 'start' and 'end' key, received: #{months}") + } + end + + it 'returns an error if start value is not an integer' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"between" => {"start" => "2016", "end" => 2018} } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.between.start value must contain a single 'year' integer, ex. 2018, received: #{months}") + } + end + + it 'returns an error if end value is not an integer' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"between" => {"start" => 2016, "end" => "2018"} } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.between.end value must contain a single 'year' integer, ex. 2018, received: #{months}") + } + end + + it 'returns an error if end value is before start' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"between" => {"start" => 2016, "end" => 2015} } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.between.end value cannot be before the start value, received: #{months}") + } + end + + it 'returns an error if the start and end values are the same' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"between" => {"start" => 2016, "end" => 2016} } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("The year_ranges.between start and end values cannot be the same, received: #{months}") + } + end + end + + context 'with multiple selectors' do + it 'returns an error if provided an array' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => [{"from" => 2019}, {"between" => {"start" => 2014, "end" => 2016} }] }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("year_ranges only supports a single selector at this time, received: #{months}") + } + end + + it 'returns an error if there is more than 1 sub key' do + months = { 1 => [{"name"=>"Test Holiday", "regions"=>["test"], "mday"=>1, "year_ranges" => {"from" => 2019, "between" => {"start" => 2014, "end" => 2016} } }] } + expect { subject.call(months) }.to raise_error(Definitions::Errors::InvalidMonth) { |e| + expect(e.message).to eq("year_ranges only supports a single selector at this time, received: #{months}") + } + end + end + end + end +end diff --git a/vendor/holidays/definitions/spec/validation/test_validator_spec.rb b/vendor/holidays/definitions/spec/validation/test_validator_spec.rb new file mode 100644 index 00000000..5acaf22d --- /dev/null +++ b/vendor/holidays/definitions/spec/validation/test_validator_spec.rb @@ -0,0 +1,169 @@ +require 'spec_helper' +require 'validation/test_validator' + +describe Definitions::Validation::Test do + subject { described_class.new } + + context 'success' do + it 'returns true if single valid test' do + tests = [{ "given" => { "date" => "2016-01-01", "regions" => ['us'] }, "expect" => { "name" => "Test Holiday" } } ] + expect(subject.call(tests)).to be true + end + + it 'returns true if multiple valid tests' do + tests = [ + { "given" => { "date" => "2016-01-01", "regions" => ['us'] }, "expect" => { "name" => "Test Holiday" } }, + { "given" => { "date" => "2016-02-02", "regions" => ['us'] }, "expect" => { "name" => "Test 2" } } + ] + + expect(subject.call(tests)).to be true + end + + it 'returns true if single test has informal option' do + tests = [{ "given" => { "date" => "2016-01-01", "regions" => ['us'], "options" => "informal" }, "expect" => { "name" => "Test Holiday" } } ] + expect(subject.call(tests)).to be true + end + + it 'returns true if single test has single valid option' do + tests = [{ "given" => { "date" => "2016-01-01", "regions" => ['us'], "options" => "observed" }, "expect" => { "name" => "Test Holiday" } } ] + expect(subject.call(tests)).to be true + end + + it 'returns true if single test has multiple valid options' do + tests = [{ "given" => { "date" => "2016-01-01", "regions" => ['us'], "options" => ["informal", "observed"] }, "expect" => { "name" => "Test Holiday" } } ] + expect(subject.call(tests)).to be true + end + + it 'returns true if regions is an array' do + tests = [{ "given" => { "date" => "2016-01-01", "regions" => ['us', 'us_dc']}, "expect" => { "name" => "Test Holiday" } } ] + expect(subject.call(tests)).to be true + end + + it 'returns true if dates are an array and all are valid dates' do + tests = [{ "given" => { "date" => ["2016-01-01", "2016-01-02", "2017-01-02"], "regions" => ['us', 'us_dc']}, "expect" => { "name" => "Test Holiday" } } ] + expect(subject.call(tests)).to be true + end + end + + context 'failure' do + it 'raises error if tests are nil' do + expect { subject.call(nil) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to eq "Tests cannot be nil" + } + end + + it 'raises error if tests are empty array' do + expect { subject.call([]) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to eq "Tests cannot be empty. They are too important to leave out!" + } + end + + it 'raises error if tests are not an array' do + expect { subject.call("blah") }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to eq "Tests must be an array" + } + end + + context 'single test' do + let(:tests) { + [ + { + "given" => { + "date" => "2016-01-01", + "regions" => ['us', 'us_dc'] + }, + "expect" => { "name" => "Test Holiday" } + } + ] + } + + context 'given' do + it 'raises error if no given value' do + tests.first.delete("given") + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test must contain given key" + } + end + + it 'raises error if nil regions' do + tests.first["given"]["regions"] = nil + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test contains invalid regions (must be an array of strings)" + } + end + + it 'raises error if empty regions' do + tests.first["given"]["regions"] = [] + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test must contain at least one region" + } + end + + it 'raises error if regions not an array' do + tests.first["given"]["regions"] = "invalid" + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test contains invalid regions (must be an array of strings)" + } + end + + it 'raises error if regions is array of empty strings' do + tests.first["given"]["regions"] = [""] + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test cannot contain empty regions" + } + end + + it 'raises error if single invalid option' do + tests.first["given"]["options"] = "blah" + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test contains invalid option(s)" + } + end + + it 'raises error if array of options with single invalid' do + tests.first["given"]["options"] = ["informal", "blah"] + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test contains invalid option(s)" + } + end + + it 'raises error if no date or year range keys' do + tests.first["given"].delete("date") + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test must contain some date" + } + end + + it 'raises error if nil date' do + tests.first["given"]["date"] = nil + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test must contain valid date" + } + end + + it 'raises error if invalid date' do + tests.first["given"]["date"] = "blah" + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test must contain valid date" + } + end + end + + context 'expect' do + it 'raises error if expect key is not present' do + tests.first.delete("expect") + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include "Test must contain expect key" + } + end + + it 'raises error if holiday flag value not valid' do + tests.first["expect"]["holiday"] = "blah" + expect { subject.call(tests) }.to raise_error(Definitions::Errors::InvalidTest) { |e| + expect(e.message).to include"Test contains invalid holiday value (must be true/false)" + } + end + end + end + end +end diff --git a/vendor/holidays/definitions/th.yaml b/vendor/holidays/definitions/th.yaml new file mode 100644 index 00000000..c7bb7a36 --- /dev/null +++ b/vendor/holidays/definitions/th.yaml @@ -0,0 +1,111 @@ +# Thai holiday definitions for the Ruby Holiday gem. +# +# Updated: 2019-01-14. +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Thailand +--- +months: + 1: + - name: วันขึ้นปีใหม่ + regions: [th] + mday: 1 + 4: + - name: วันจักรี + regions: [th] + mday: 6 + - name: วันสงกรานต์ + regions: [th] + mday: 13 + - name: วันสงกรานต์ + regions: [th] + mday: 14 + - name: วันสงกรานต์ + regions: [th] + mday: 15 + 7: + - name: วันเฉลิมพระชนมพรรษาสมเด็จพระเจ้าอยู่หัวมหาวชิราลงกรณ บดินทรเทพยวรางกูร + regions: [th] + mday: 28 + 8: + - name: วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถในรัชกาลที่ ๙ + regions: [th] + mday: 12 + 10: + - name: วันคล้ายวันสวรรคตพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร + regions: [th] + mday: 13 + - name: วันปิยมหาราช + regions: [th] + mday: 23 + 12: + - name: วันคล้ายวันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร + regions: [th] + mday: 5 + - name: วันรัฐธรรมนูญ + regions: [th] + mday: 10 + - name: วันสิ้นปี + regions: [th] + mday: 31 + +tests: + - given: + date: '20019-01-01' + regions: ["th"] + options: ["informal"] + expect: + name: "วันขึ้นปีใหม่" + - given: + date: '2019-04-06' + regions: ["th"] + options: ["informal"] + expect: + name: "วันจักรี" + - given: + date: ['2019-04-13', '2019-04-14', '2019-04-15'] + regions: ["th"] + options: ["informal"] + expect: + name: "วันสงกรานต์" + - given: + date: '2019-07-28' + regions: ["th"] + options: ["informal"] + expect: + name: "วันเฉลิมพระชนมพรรษาสมเด็จพระเจ้าอยู่หัวมหาวชิราลงกรณ บดินทรเทพยวรางกูร" + - given: + date: '2007-08-12' + regions: ["th"] + options: ["informal"] + expect: + name: "วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถในรัชกาลที่ ๙" + - given: + date: '2019-10-13' + regions: ["th"] + options: ["informal"] + expect: + name: "วันคล้ายวันสวรรคตพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร" + - given: + date: '2019-10-23' + regions: ["th"] + options: ["informal"] + expect: + name: "วันปิยมหาราช" + - given: + date: '2019-12-05' + regions: ["th"] + options: ["informal"] + expect: + name: "วันคล้ายวันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร" + - given: + date: '2019-12-10' + regions: ["th"] + options: ["informal"] + expect: + name: "วันรัฐธรรมนูญ" + - given: + date: '2019-12-31' + regions: ["th"] + options: ["informal"] + expect: + name: "วันสิ้นปี" diff --git a/vendor/holidays/definitions/tn.yaml b/vendor/holidays/definitions/tn.yaml new file mode 100644 index 00000000..b192148f --- /dev/null +++ b/vendor/holidays/definitions/tn.yaml @@ -0,0 +1,83 @@ +# Tunisian holiday definitions for the Ruby Holiday gem. +# +# by achr3f https://github.com/achr3f +# +# Updated 12/23/2016 +# Sources: +# - https://fr.wikipedia.org/wiki/Fêtes_et_jours_fériés_en_Tunisie#F.C3.AAtes_officielles +# +--- +months: + 1: + - name: Jour de l'an + regions: [tn] + mday: 1 + - name: Fête de la Révolution et de la Jeunesse + regions: [tn] + mday: 14 + 3: + - name: Fête de l'Indépendance + regions: [tn] + mday: 20 + 4: + - name: Journée des Martyrs + regions: [tn] + mday: 9 + 5: + - name: Fête du travail + regions: [tn] + mday: 1 + 7: + - name: Fête de la République + regions: [tn] + mday: 25 + 8: + - name: Fête de la Femme et de la Famille + regions: [tn] + mday: 13 + 10: + - name: Fête de l'Évacuation + regions: [tn] + mday: 15 + +tests: + - given: + date: '2016-01-01' + regions: ["tn"] + expect: + name: "Jour de l'an" + - given: + date: '2016-01-14' + regions: ["tn"] + expect: + name: "Fête de la Révolution et de la Jeunesse" + - given: + date: '2016-03-20' + regions: ["tn"] + expect: + name: "Fête de l'Indépendance" + - given: + date: '2016-04-09' + regions: ["tn"] + expect: + name: "Journée des Martyrs" + - given: + date: '2016-05-01' + regions: ["tn"] + expect: + name: "Fête du travail" + - given: + date: '2016-07-25' + regions: ["tn"] + expect: + name: "Fête de la République" + - given: + date: '2016-08-13' + regions: ["tn"] + expect: + name: "Fête de la Femme et de la Famille" + - given: + date: '2016-10-15' + regions: ["tn"] + expect: + name: "Fête de l'Évacuation" diff --git a/vendor/holidays/definitions/tr.yaml b/vendor/holidays/definitions/tr.yaml new file mode 100644 index 00000000..e5e0e96f --- /dev/null +++ b/vendor/holidays/definitions/tr.yaml @@ -0,0 +1,174 @@ +# Turkish holiday definitions for the Ruby Holiday gem. +# +# Updated: 2019-02-10 +# +# Note: +# This holiday definition file contains pre-defined dates +# for Ramadan Feast and Sacrifice Feast from 2014 to 2019. +# +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Turkey +# - https://www.timeanddate.com/holidays/turkey/ +# - https://de.wikipedia.org/wiki/Feiertage_in_der_Türkei +# - https://de.wikipedia.org/wiki/Ramadan#Beginn_und_Ende_des_Ramadans +# - https://de.wikipedia.org/wiki/Islamisches_Opferfest#Opferfest-Termine +# - https://translate.yandex.com/?lang=en-tr +# - https://de.wikibooks.org/wiki/Türkisch:_Zahlen +# - https://en.wikipedia.org/wiki/Democracy_and_National_Unity_Day +--- +months: + 0: + - name: Ramazan Bayramı # Ramadan Feast + regions: [tr] + function: ramadan_feast(year) + - name: Ramazan Bayramı (ikinci tatil) # Ramadan Feast, 2nd holiday + regions: [tr] + function: ramadan_feast(year) + function_modifier: 1 + - name: Ramazan Bayramı (üçüncü tatil) # Ramadan Feast, 3rd holiday + regions: [tr] + function: ramadan_feast(year) + function_modifier: 2 + - name: Kurban Bayramı # Sacrifice Feast + regions: [tr] + function: sacrifice_feast(year) + - name: Kurban Bayramı (ikinci tatil) # Sacrifice Feast, 2nd holiday + regions: [tr] + function: sacrifice_feast(year) + function_modifier: 1 + - name: Kurban Bayramı (üçüncü tatil) # Sacrifice Feast, 3rd holiday + regions: [tr] + function: sacrifice_feast(year) + function_modifier: 2 + - name: Kurban Bayramı (dördüncü tatil) # Sacrifice Feast, 4th holiday + regions: [tr] + function: sacrifice_feast(year) + function_modifier: 3 + 1: + - name: Yılbaşı # New Year's Day + regions: [tr] + mday: 1 + 4: + - name: Ulusal Egemenlik ve Çocuk Bayramı # National Sovereignty and Children's Day + regions: [tr] + mday: 23 + 5: + - name: Emek ve Dayanışma Günü # Labour and Solidarity Day + regions: [tr] + mday: 1 + - name: Atatürk'ü Anma Gençlik ve Spor Bayramı # Commemoration of Atatürk, Youth and Sports Day + regions: [tr] + mday: 19 + 7: + - name: Demokrasi ve Milli Birlik Günü # Democracy and National Unity Day + regions: [tr] + mday: 15 + year_ranges: + from: 2016 + 8: + - name: Zafer Bayramı # Victory Day + regions: [tr] + mday: 30 + 10: + - name: Cumhuriyet Bayramı # Republic Day + regions: [tr] + mday: 29 + +methods: + ramadan_feast: + arguments: year + ruby: | + begin_of_ramadan_feast = { + '2014' => Date.civil(2014, 7, 28), + '2015' => Date.civil(2015, 7, 17), + '2016' => Date.civil(2016, 7, 5), + '2017' => Date.civil(2017, 6, 25), + '2018' => Date.civil(2018, 6, 15), + '2019' => Date.civil(2019, 6, 4), + '2020' => Date.civil(2020, 5, 24) + } + begin_of_ramadan_feast[year.to_s] + sacrifice_feast: + arguments: year + ruby: | + begin_of_sacrifice_feast = { + '2014' => Date.civil(2014, 10, 4), + '2015' => Date.civil(2015, 9, 24), + '2016' => Date.civil(2016, 9, 12), + '2017' => Date.civil(2017, 9, 1), + '2018' => Date.civil(2018, 8, 21), + '2019' => Date.civil(2019, 8, 11), + '2020' => Date.civil(2020, 7, 31) + } + begin_of_sacrifice_feast[year.to_s] +tests: + - given: + date: '2017-1-1' + regions: ["tr"] + expect: + name: "Yılbaşı" + - given: + date: '2017-4-23' + regions: ["tr"] + expect: + name: "Ulusal Egemenlik ve Çocuk Bayramı" + - given: + date: '2017-5-1' + regions: ["tr"] + expect: + name: "Emek ve Dayanışma Günü" + - given: + date: '2017-5-19' + regions: ["tr"] + expect: + name: "Atatürk'ü Anma Gençlik ve Spor Bayramı" + - given: + date: '2017-8-30' + regions: ["tr"] + expect: + name: "Zafer Bayramı" + - given: + date: '2017-10-29' + regions: ["tr"] + expect: + name: "Cumhuriyet Bayramı" + - given: + date: ['2017-6-25', '2018-6-15', '2019-6-4', '2020-5-24'] + regions: ["tr"] + expect: + name: "Ramazan Bayramı" + - given: + date: ['2017-6-26', '2018-6-16', '2019-6-5', '2020-5-25'] + regions: ["tr"] + expect: + name: "Ramazan Bayramı (ikinci tatil)" + - given: + date: ['2017-6-27', '2018-6-17', '2019-6-6', '2020-5-26'] + regions: ["tr"] + expect: + name: "Ramazan Bayramı (üçüncü tatil)" + - given: + date: '2017-7-15' + regions: ["tr"] + expect: + name: "Demokrasi ve Milli Birlik Günü" + - given: + date: ['2017-9-1', '2018-8-21', '2019-8-11', '2020-7-31'] + regions: ["tr"] + expect: + name: "Kurban Bayramı" + - given: + date: ['2017-9-2', '2018-8-22', '2019-8-12', '2020-8-01'] + regions: ["tr"] + expect: + name: "Kurban Bayramı (ikinci tatil)" + - given: + date: ['2017-9-3', '2018-8-23', '2019-8-13', '2020-8-02'] + regions: ["tr"] + expect: + name: "Kurban Bayramı (üçüncü tatil)" + - given: + date: ['2017-9-4', '2018-8-24', '2019-8-14', '2020-8-03'] + regions: ["tr"] + expect: + name: "Kurban Bayramı (dördüncü tatil)" diff --git a/vendor/holidays/definitions/ua.yaml b/vendor/holidays/definitions/ua.yaml new file mode 100644 index 00000000..1a14e5b0 --- /dev/null +++ b/vendor/holidays/definitions/ua.yaml @@ -0,0 +1,161 @@ +# Ukrainian holiday definitions for the Ruby Holiday gem. +# +# Updated: 2019-02-10. +# Sources: +# - https://en.wikipedia.org/wiki/Public_holidays_in_Ukraine +# - https://uk.wikipedia.org/wiki/%D0%9D%D0%B5%D1%80%D0%BE%D0%B1%D0%BE%D1%87%D1%96_%D0%B4%D0%BD%D1%96_%D0%B2_%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%96 +--- +months: + 0: + - name: Великдень # Easter Sunday + regions: [ua] + function: orthodox_easter(year) + observed: to_monday_if_weekend(date) + - name: Трійця # (Julian) Pentecost + regions: [ua] + function: orthodox_easter(year) + function_modifier: 49 + observed: to_monday_if_weekend(date) + 1: + - name: Новий Рік # New Year's Day + regions: [ua] + mday: 1 + observed: to_monday_if_weekend(date) + - name: Різдво Христове # Orthodox Christmas Day + regions: [ua] + mday: 7 + observed: to_monday_if_weekend(date) + 3: + - name: Міжнародний жіночий день # International Women's Day + regions: [ua] + mday: 8 + observed: to_monday_if_weekend(date) + 5: + - name: День праці # International Workers' Day + regions: [ua] + mday: 1 + observed: to_monday_if_weekend(date) + - name: День міжнародної солідарності трудящих # International Workers' Day + regions: [ua] + mday: 2 + year_ranges: + until: 2017 + - name: День перемоги над нацизмом у Другій світовій війні # Victory day over Nazism in World War II + regions: [ua] + mday: 9 + observed: to_monday_if_weekend(date) + 6: + - name: День Конституції # Constitution Day + regions: [ua] + mday: 28 + observed: to_monday_if_weekend(date) + year_ranges: + from: 1997 + 7: + - name: День Незалежності України # Independence Day + regions: [ua] + mday: 16 + year_ranges: + limited: [1991] + 8: + - name: День Незалежності # Independence Day + regions: [ua] + mday: 24 + observed: to_monday_if_weekend(date) + year_ranges: + from: 1992 + 10: + - name: День захисника України # Defender of Ukraine Day + regions: [ua] + mday: 14 + observed: to_monday_if_weekend(date) + year_ranges: + from: 2015 + 12: + - name: Різдво Христове # (Gregorian and Revised Julian) Christmas + regions: [ua] + mday: 25 + observed: to_monday_if_weekend(date) + year_ranges: + from: 2017 + +tests: +- given: + date: "2018-01-01" + regions: [ua] + expect: + name: Новий Рік +- given: + date: "2018-01-07" + regions: [ua] + expect: + name: Різдво Христове +- given: + date: "2018-01-08" + regions: [ua] + options: [observed] + expect: + name: Різдво Христове +- given: + date: "2018-03-08" + regions: [ua] + expect: + name: Міжнародний жіночий день +- given: + date: "2018-04-08" + regions: [ua] + expect: + name: Великдень +- given: + date: "2018-04-09" + regions: [ua] + options: [observed] + expect: + name: Великдень +- given: + date: "2018-05-01" + regions: [ua] + expect: + name: День праці +- given: + date: "2018-05-09" + regions: [ua] + expect: + name: День перемоги над нацизмом у Другій світовій війні +- given: + date: "2018-05-27" + regions: [ua] + expect: + name: Трійця +- given: + date: "2018-05-28" + regions: [ua] + options: [observed] + expect: + name: Трійця +- given: + date: "2018-06-28" + regions: [ua] + expect: + name: День Конституції +- given: + date: "2018-08-24" + regions: [ua] + expect: + name: День Незалежності +- given: + date: "2018-10-14" + regions: [ua] + expect: + name: День захисника України +- given: + date: "2018-10-15" + regions: [ua] + options: [observed] + expect: + name: День захисника України +- given: + date: "2018-12-25" + regions: [ua] + expect: + name: Різдво Христове diff --git a/vendor/holidays/definitions/unitednations.yaml b/vendor/holidays/definitions/unitednations.yaml new file mode 100644 index 00000000..43291472 --- /dev/null +++ b/vendor/holidays/definitions/unitednations.yaml @@ -0,0 +1,189 @@ +# United Nationas holiday definitions for the Ruby Holiday gem. +# Updated 2008-11-21. +--- +months: + 2: + - name: International Mother Language Day + regions: [unitednations] + mday: 2 + 3: + - name: United Nations Day for Women's Rights and International Peace + regions: [unitednations] + mday: 8 + - name: International Day for the Elimination of Racial Discrimination + regions: [unitednations] + mday: 21 + - name: Beginning of the Week of Solidarity with the Peoples Struggling against Racism and Racial Discrimination + regions: [unitednations] + mday: 21 + - name: World Day for Water + regions: [unitednations] + mday: 22 + - name: World Meteorological Day + regions: [unitednations] + mday: 23 + 4: + - name: World Health Day + regions: [unitednations] + mday: 7 + - name: World Book and Copyright Day + regions: [unitednations] + mday: 23 + 5: + - name: World Press Freedom Day + regions: [unitednations] + mday: 3 + - name: International Day of Families + regions: [unitednations] + mday: 15 + - name: World Telecommunication Day + regions: [unitednations] + mday: 17 + - name: World Day for Cultural Diversity for Dialogue and Development + regions: [unitednations] + mday: 21 + - name: International Day for Biological Diversity + regions: [unitednations] + mday: 22 + - name: Beginning of the Week of Solidarity with the Peoples of Non-Self-Governing Territories + regions: [unitednations] + mday: 25 + - name: International Day of United Nations Peacekeepers + regions: [unitednations] + mday: 29 + - name: World No-Tobacco Day + regions: [unitednations] + mday: 31 + 6: + - name: International Day of Innocent Children Victims of Aggression + regions: [unitednations] + mday: 4 + - name: World Environment Day + regions: [unitednations] + mday: 5 + - name: World Day to Combat Desertification and Drought + regions: [unitednations] + mday: 17 + - name: World Refugee Day + regions: [unitednations] + mday: 20 + - name: United Nations Public Service Day + regions: [unitednations] + mday: 23 + - name: International Day against Drug Abuse and Illicit Trafficking + regions: [unitednations] + mday: 26 + - name: International Day in Support of Victims of Torture + regions: [unitednations] + mday: 26 + 7: + - name: International Day of Cooperatives + week: 1 + regions: [unitednations] + wday: 6 + - name: World Population Day + regions: [unitednations] + mday: 11 + 8: + - name: International Day of the World's Indigenous People + regions: [unitednations] + mday: 9 + - name: International Youth Day + regions: [unitednations] + mday: 12 + - name: International Day for the Remembrance of the Slave Trade and Its Abolition + regions: [unitednations] + mday: 23 + 9: + - name: International Literacy Day + regions: [unitednations] + mday: 8 + - name: International Day for the Preservation of the Ozone Layer + regions: [unitednations] + mday: 16 + - name: International Day of Peace + regions: [unitednations] + mday: 21 + - name: International Day of Older Persons + regions: [unitednations] + mday: 1 + 10: + - name: World Space Week + regions: [unitednations] + mday: 4 + - name: World Teachers' Day + regions: [unitednations] + mday: 5 + - name: World Habitat Day + week: 1 + regions: [unitednations] + wday: 1 + - name: International Day for Natural Disaster Reduction + week: 2 + regions: [unitednations] + wday: 3 + - name: World Post Day + regions: [unitednations] + mday: 9 + - name: World Mental Health Day + regions: [unitednations] + mday: 10 + - name: World Food Day + regions: [unitednations] + mday: 16 + - name: International Day for the Eradication of Poverty + regions: [unitednations] + mday: 17 + - name: United Nations Day + regions: [unitednations] + mday: 24 + - name: World Development Information Day + regions: [unitednations] + mday: 24 + - name: Disarmament Week + regions: [unitednations] + mday: 24 + 11: + - name: International Day for Preventing the Exploitation of the Environment in War and Armed Conflict + regions: [unitednations] + mday: 6 + - name: International Day for Tolerance + regions: [unitednations] + mday: 16 + - name: Africa Industrialization Day + regions: [unitednations] + mday: 20 + - name: Universal Children's Day + regions: [unitednations] + mday: 20 + - name: World Television Day + regions: [unitednations] + mday: 21 + - name: International Day for the Elimination of Violence against Women + regions: [unitednations] + mday: 25 + - name: International Day of Solidarity with the Palestinian People + regions: [unitednations] + mday: 29 + 12: + - name: World AIDS Day + regions: [unitednations] + mday: 1 + - name: International Day for the Abolition of Slavery + regions: [unitednations] + mday: 2 + - name: International Day of Disabled Persons + regions: [unitednations] + mday: 3 + - name: International Volunteer Day for Economic and Social Development + regions: [unitednations] + mday: 5 + - name: International Civil Aviation Day + regions: [unitednations] + mday: 7 + - name: Human Rights Day + regions: [unitednations] + mday: 10 + - name: International Migrants Day + regions: [unitednations] + mday: 18 diff --git a/vendor/holidays/definitions/ups.yaml b/vendor/holidays/definitions/ups.yaml new file mode 100644 index 00000000..7d324319 --- /dev/null +++ b/vendor/holidays/definitions/ups.yaml @@ -0,0 +1,102 @@ +# UPS holiday definitions for the Ruby Holiday gem. +# +# By Tim Anglade +# +# Updated: 2008-09-23. +# Source: http://www.ups.com/content/us/en/resources/ship/imp_exp/operation.html +--- +months: + 1: + - name: New Year's Day + regions: [ups] + mday: 1 + observed: to_weekday_if_weekend(date) + 5: + - name: Memorial Day + week: -1 + regions: [ups] + wday: 1 + 7: + - name: Independence Day + regions: [ups] + mday: 4 + observed: to_weekday_if_weekend(date) + 9: + - name: Labor Day + week: 1 + regions: [ups] + wday: 1 + 11: + - name: Thanksgiving + week: 4 + regions: [ups] + wday: 4 + - name: Day After Thanksgiving + function: day_after_thanksgiving(year) + regions: [ups] + 12: + - name: Christmas Day + regions: [ups] + mday: 25 + observed: to_weekday_if_weekend(date) + - name: New Year's Eve + regions: [ups] + mday: 31 + +methods: + day_after_thanksgiving: + arguments: year + ruby: | + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1 + +tests: + - given: + date: '2008-01-01' + regions: ["ups"] + expect: + name: "New Year's Day" + - given: + date: '2008-05-26' + regions: ["ups"] + expect: + name: "Memorial Day" + - given: + date: '2008-07-04' + regions: ["ups"] + expect: + name: "Independence Day" + - given: + date: '2008-09-01' + regions: ["ups"] + expect: + name: "Labor Day" + - given: + date: '2008-11-27' + regions: ["ups"] + expect: + name: "Thanksgiving" + - given: + date: '2008-11-28' + regions: ["ups"] + expect: + name: "Day After Thanksgiving" + - given: + date: '2013-11-28' + regions: ["ups"] + expect: + name: "Thanksgiving" + - given: + date: '2013-11-29' + regions: ["ups"] + expect: + name: "Day After Thanksgiving" + - given: + date: '2008-12-25' + regions: ["ups"] + expect: + name: "Christmas Day" + - given: + date: '2008-12-31' + regions: ["ups"] + expect: + name: "New Year's Eve" diff --git a/vendor/holidays/definitions/us.yaml b/vendor/holidays/definitions/us.yaml new file mode 100644 index 00000000..f9799b75 --- /dev/null +++ b/vendor/holidays/definitions/us.yaml @@ -0,0 +1,947 @@ +# United States holiday definitions for the Ruby Holiday gem. +# +# Updated: 2008-11-24. +# +# Changed: 2017-06-15 to 2017-06-20 +# - Add missing holiday information for a whole bunch of US states +# - Correct some existing holiday information +# - Add custom functions for Georgia’s State Holiday, Lee-Jackson Day and Election Day +# - Add custom functions for Rosh Hashanah and Yom Kippur with pre-defined dates from 2014 to 2020 +# - Add missing tests and correct existing tests +# - Add helpful comments +# - Add a lot of used sources +# +# Common Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_of_the_United_States +# - https://www.timeanddate.com/holidays/us/ +# - https://publicholidays.us +# - https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations +# Sources about special state holidays: +# - https://en.wikipedia.org/wiki/Black_Friday_(shopping)#United_States +# - http://www.officeholidays.com/countries/usa/black_friday.php +# - https://publicholidays.us/christmas/ +# - https://publicholidays.us/kansas/ +# - https://publicholidays.us/Wisconsin/ +# - https://publicholidays.us/Arkansas/ +# - https://publicholidays.us/Georgia/ +# - https://publicholidays.us/Maryland/ +# - https://publicholidays.us/Nevada/ +# - https://publicholidays.us/Ohio/ +# - http://www.sos.ms.gov/education-publications/pages/state-holidays.aspx +# - http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&Search_String=&URL=0100-0199/0110/Sections/0110.117.html +# - https://en.wikipedia.org/wiki/Lee–Jackson_Day +# - http://www.statutes.legis.state.tx.us/Docs/GV/htm/GV.662.htm +# - https://en.wikipedia.org/wiki/Lincoln%27s_Birthday +# - https://en.wikipedia.org/wiki/Washington%27s_Birthday +# - https://en.wikipedia.org/wiki/Shrove_Tuesday +# - https://en.wikipedia.org/wiki/Town_meeting#Vermont +# - https://en.wikipedia.org/wiki/Seward%27s_Day +# - https://en.wikipedia.org/wiki/Emancipation_Day +# - https://en.wikipedia.org/wiki/Patriots%27_Day +# - https://georgia.gov/popular-topic/observing-state-holidays +# - https://en.wikipedia.org/wiki/Confederate_Memorial_Day +# - http://www.admin.sc.gov/humanresources/employee-information/benefits-and-leave/holiday-leave +# - http://louisiana.gov/Government/For_State_Employees/ +# - http://www.leg.state.fl.us/statutes/index.cfm?App_mode=Display_Statute&Search_String=&URL=0600-0699/0683/Sections/0683.01.html +# - http://dhrd.hawaii.gov/state-observed-holidays/ +# - https://www.timeanddate.com/holidays/us/kamehameha-day +# - http://www.mass.gov/anf/employment-equal-access-disability/hr-policies/legal-holiday-calendar.html +# - http://www.edd.ca.gov/payroll_taxes/Legal_Holidays.htm +# - https://en.wikipedia.org/wiki/Emancipation_Day#United_States +# - http://www.visuperiorcourt.org/about/holidays.aspx +# - http://www.personnel.wv.gov/employees/benefits/Pages/Holidays.aspx +# - https://www.timeanddate.com/holidays/us/pioneer-day +# - http://sos.ri.gov/divisions/Civics-And-Education/ri-state-holidays +# - http://humanresources.vermont.gov/benefits-wellness/holiday-schedule +# - http://doa.alaska.gov/dop/fileadmin/socc/pdf/bkgrnd_socc10.pdf +# - https://en.wikipedia.org/wiki/Election_Day_(United_States) +# - https://www.timeanddate.com/holidays/us/yom-kippur +# - https://www.timeanddate.com/holidays/us/rosh-hashana +# - http://www.when-is.com/rosh-hashanah-2014.asp +# - https://de.wikipedia.org/wiki/Jom_Kippur#Jom_Kippur-Termine +# - https://de.wikipedia.org/wiki/Rosch_ha-Schana#Zeitpunkt_und_Einbettung_in_den_j.C3.BCdischen_Kalender +# - https://als.wikipedia.org/wiki/Rosch_ha-Schana +# - http://www.kleiner-kalender.de/event/rosch-ha-schana/0651c.html +# - http://www.kaldix.com/united-states/calendar/virginia/holidays/independence-day/year-2017/ +# - https://publicholidays.us/independence-day/ + +--- + +months: + 0: + - name: Shrove Tuesday + regions: [us_fl] + function: easter(year) + function_modifier: -47 + - name: Mardi Gras Day + regions: [us_la] + function: easter(year) + function_modifier: -47 + - name: Good Friday # informal in general + regions: [us] + function: easter(year) + function_modifier: -2 + type: informal + - name: Good Friday # public holiday in the following states + 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] + function: easter(year) + function_modifier: -2 + - name: Easter Sunday + regions: [us] + function: easter(year) + type: informal + 1: + - name: New Year's Day + regions: [us] + mday: 1 + observed: to_weekday_if_weekend(date) + - name: Martin Luther King's and Robert E. Lee's Birthdays # renamed Martin Luther King, Jr. Day + regions: [us_ms] + week: 3 + wday: 1 + - name: Idaho Human Rights Day # renamed Martin Luther King, Jr. Day + regions: [us_id] + week: 3 + wday: 1 + - name: Civil Rights Day # renamed Martin Luther King, Jr. Day + regions: [us_ar] + week: 3 + wday: 1 + - name: Martin Luther King, Jr. Day # Third Monday in January + regions: [us] + week: 3 + wday: 1 + - name: Inauguration Day + function: us_inauguration_day(year) + regions: [us_tx, us_dc, us_la, us_md, us_va] + - name: Lee-Jackson Day + regions: [us_va] + function: lee_jackson_day(year, month) + - name: Confederate Heroes Day # fixed + regions: [us_tx] + mday: 19 + 2: + - name: Presidents' Day # Note: Several states are using another name for this holiday, there are 12 notations for it + week: 3 + regions: [us] + wday: 1 + 3: + - name: Town Meeting Day # First Tuesday in March + regions: [us_vt] + week: 1 + wday: 2 + - name: Texas Independence Day # fixed + regions: [us_tx] + mday: 2 + - name: Prince Jonah Kuhio Kalanianaole Day + regions: [us_hi] + observed: to_weekday_if_weekend(date) + mday: 26 + - name: Seward's Day # Last Monday in March + regions: [us_ak] + week: -1 + wday: 1 + - name: César Chávez Day # fixed + regions: [us_ca] + mday: 31 + 4: + - name: Emancipation Day + regions: [us_dc] + observed: to_weekday_if_weekend(date) + mday: 16 + - name: Patriots' Day # Third Monday in April + regions: [us_me, us_ma] + week: 3 + wday: 1 + - name: San Jacinto Day # fixed + regions: [us_tx] + mday: 21 + - name: Confederate Memorial Day # Last Monday in April + regions: [us_al, us_ms] + week: -1 + wday: 1 + - name: Confederate Memorial Day + regions: [us_fl] + mday: 26 + observed: to_monday_if_sunday(date) + - name: State Holiday # April 20 or April 26 + regions: [us_ga] + function: georgia_state_holiday(year, month) + - name: Arbor Day # fixed + regions: [us_ne] + mday: 28 + 5: + - name: Truman Day # fixed + regions: [us_mo] + mday: 8 + - name: Confederate Memorial Day # fixed + regions: [us_sc] + mday: 10 + - name: Memorial Day # Note: full name in Mississippi is National Memorial Day/Jefferson Davis' Birthday + regions: [us] + week: -1 + wday: 1 + 6: + - name: Jefferson Davis' Birthday # First Monday in June + regions: [us_al] + week: 1 + wday: 1 + - name: Birthday of Jefferson Davis # fixed + regions: [us_fl] + mday: 3 + - name: King Kamehameha I Day + regions: [us_hi] + observed: to_weekday_if_weekend(date) + mday: 11 + - name: Emancipation Day in Texas # fixed + regions: [us_tx] + mday: 19 + - name: West Virginia Day + regions: [us_wv] + mday: 20 + observed: to_weekday_if_weekend(date) + 7: + - name: Emancipation Day # fixed + regions: [us_vi] + mday: 3 + - name: Independence Day # fixed + regions: [us] + mday: 4 + - name: Independence Day (Holiday) + regions: [us_va] + mday: 4 + function: to_weekday_if_weekend(date) # Note: Always if Independence Day don't match + - name: Pioneer Day # fixed + regions: [us_ut] + mday: 24 + 8: + - name: Victory Day # Second Monday in August + regions: [us_ri] + week: 2 + wday: 1 + - name: Bennington Battle Day + regions: [us_vt] + mday: 16 + observed: to_weekday_if_weekend(date) + - name: Statehood Day # Third Friday in August + regions: [us_hi] + week: 3 + wday: 5 + - name: Lyndon Baines Johnson Day # fixed + regions: [us_tx] + mday: 27 + 9: + - name: Labor Day + week: 1 + regions: [us] + wday: 1 + - name: Rosh Hashanah + regions: [us_tx] + function: rosh_hashanah(year) + - name: Yom Kippur + regions: [us_tx] + function: yom_kippur(year) + 10: + - name: Columbus Day + week: 2 + 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] + wday: 1 + - name: Columbus Day + week: 2 + 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] + type: informal + wday: 1 + - name: Alaska Day # fixed + regions: [us_ak] + mday: 18 + - name: Nevada Day # Last Friday in October + regions: [us_nv] + week: -1 + wday: 5 + 11: + - name: Election Day + regions: [us_de, us_hi, us_in, us_mt, us_nj, us_ny, us_pa, us_ri] + function: election_day(year) + - name: Veterans Day + regions: [us] + mday: 11 + observed: to_weekday_if_weekend(date) + - name: Thanksgiving + regions: [us] + week: 4 + wday: 4 + - name: Family Day + function: day_after_thanksgiving(year) + regions: [us_nv] + - name: State Holiday + function: day_after_thanksgiving(year) + regions: [us_ga] + - name: Presidents' Day + function: day_after_thanksgiving(year) + regions: [us_nm] + - name: Lincoln's Birthday + function: day_after_thanksgiving(year) + regions: [us_in] + - name: American Indian Heritage Day + function: day_after_thanksgiving(year) + regions: [us_md] + - name: Day after Thanksgiving (Black Friday) + function: day_after_thanksgiving(year) + 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] + 12: + - name: Christmas Eve + regions: [us_ar, us_mi, us_nc, us_sc, us_tx, us_wi] + mday: 24 + - name: Christmas Eve (Holiday) # Note: Always if Christmas Eve don't match + regions: [us_mi, us_sc, us_va] + mday: 24 + function: christmas_eve_holiday(date) + - name: Christmas Day + regions: [us] + mday: 25 + observed: to_weekday_if_weekend(date) + - name: Day after Christmas + regions: [us_ar, us_nc, us_ok, us_sc, us_tn, us_tx] + mday: 26 + - name: New Year's Eve + regions: [us_mi, us_wi] + mday: 31 + +methods: + christmas_eve_holiday: + arguments: date + ruby: | + beginning_of_month = Date.civil(date.year, date.month, 1) + (date.saturday? || date.sunday?) ? date.downto(beginning_of_month).find {|d| d if d.wday == 5} : date + rosh_hashanah: + arguments: year + ruby: | + rosh_hashanah_dates = { + '2014' => Date.civil(2014, 9, 25), + '2015' => Date.civil(2015, 9, 14), + '2016' => Date.civil(2016, 10, 3), + '2017' => Date.civil(2017, 9, 21), + '2018' => Date.civil(2018, 9, 10), + '2019' => Date.civil(2019, 9, 30), + '2020' => Date.civil(2020, 9, 19) + } + rosh_hashanah_dates[year.to_s] + yom_kippur: + arguments: year + ruby: | + yom_kippur_dates = { + '2014' => Date.civil(2014, 10, 4), + '2015' => Date.civil(2015, 9, 23), + '2016' => Date.civil(2016, 10, 12), + '2017' => Date.civil(2017, 9, 30), + '2018' => Date.civil(2018, 9, 19), + '2019' => Date.civil(2019, 10, 9), + '2020' => Date.civil(2020, 9, 28) + } + yom_kippur_dates[year.to_s] + georgia_state_holiday: + # Monday before that holiday + arguments: year, month + ruby: | + beginning_of_month = Date.civil(year, month, 1) + state_holiday = Date.civil(year, month, 26) + state_holiday.downto(beginning_of_month).find {|date| date if date.wday == 1 } + lee_jackson_day: + # Friday before Martin Luther King, Jr. Day + arguments: year, month + ruby: | + day_of_holiday = Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, month, 3, 1) + beginning_of_month = Date.civil(year, month, 1) + king_day = Date.civil(year, month, day_of_holiday) + king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 } + election_day: + # Tuesday after the first Monday of November + arguments: year + ruby: | + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1 + us_inauguration_day: + # January 20, every fourth year, following Presidential election + arguments: year + ruby: | + year % 4 == 1 ? 20 : nil + day_after_thanksgiving: + arguments: year + ruby: | + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1 + +tests: + - given: + date: ['2017-2-28', '2018-2-13', '2019-3-5'] + regions: ["us_fl"] + expect: + name: 'Shrove Tuesday' + - given: + date: ['2017-2-28', '2018-2-13', '2019-3-5'] + regions: ["us_la"] + expect: + name: 'Mardi Gras Day' + - given: + date: ['2017-2-28', '2018-2-13', '2019-3-5'] + regions: ["us"] + expect: + holiday: false + + - given: + date: ['2017-4-14', '2018-3-30', '2019-4-19'] + 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"] + expect: + name: 'Good Friday' + - given: + date: ['2017-4-14', '2018-3-30', '2019-4-19'] + regions: ["us"] + options: ["informal"] + expect: + name: 'Good Friday' + - given: + date: ['2017-2-28', '2018-2-13', '2019-3-5'] + regions: ["us"] + expect: + holiday: false + + - given: + date: ['2017-4-16', '2018-4-1', '2019-4-21'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-4-16', '2018-4-1', '2019-4-21'] + regions: ["us"] + options: ["informal"] + expect: + name: "Easter Sunday" + + - given: + date: '2017-1-1' + regions: ["us"] + expect: + name: "New Year's Day" + - given: + date: '2017-1-2' + regions: ["us"] + options: ["observed"] + expect: + name: "New Year's Day" + + - given: + date: ['2017-1-16', '2018-1-15', '2019-1-21'] + regions: ["us"] + expect: + name: "Martin Luther King, Jr. Day" + + - given: + date: ['2016-1-18', '2017-1-16', '2018-1-15'] + regions: ["us"] + expect: + name: "Martin Luther King, Jr. Day" + - given: + date: ['2016-1-18', '2017-1-16', '2018-1-15'] + regions: ["us_ms"] + expect: + name: "Martin Luther King's and Robert E. Lee's Birthdays" + - given: + date: ['2016-1-18', '2017-1-16', '2018-1-15'] + regions: ["us_id"] + expect: + name: "Idaho Human Rights Day" + - given: + date: ['2016-1-18', '2017-1-16', '2018-1-15'] + regions: ["us_ar"] + expect: + name: "Civil Rights Day" + + - given: + date: ['2017-1-20', '2021-1-20'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-1-20', '2021-1-20'] + regions: ["us_tx", "us_dc", "us_la", "us_md", "us_va"] + expect: + name: "Inauguration Day" + + - given: + date: ['2017-1-13', '2018-1-12', '2019-1-18'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-1-13', '2018-1-12', '2019-1-18'] + regions: ["us_va"] + expect: + name: "Lee-Jackson Day" + + - given: + date: ['2017-1-19'] + regions: ["us_tx"] + expect: + name: "Confederate Heroes Day" + + - given: + date: ['2008-2-18', '2017-2-20', '2018-2-19'] + regions: ["us"] + expect: + name: "Presidents' Day" + + - given: + date: ['2017-3-6', '2018-3-5', '2019-3-4'] + regions: ["us"] + expect: + holiday: false + + - given: + date: ['2017-3-7', '2018-3-6', '2019-3-5'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-3-7', '2018-3-6', '2019-3-5'] + regions: ["us_vt"] + expect: + name: "Town Meeting Day" + + - given: + date: ['2017-3-2'] + regions: ["us_tx"] + expect: + name: "Texas Independence Day" + + - given: + date: ['2017-3-27', '2018-3-26', '2022-3-25'] + regions: ["us"] + options: ["observed"] + expect: + holiday: false + - given: + date: ['2017-3-27', '2018-3-26', '2022-3-25'] + regions: ["us_hi"] + options: ["observed"] + expect: + name: "Prince Jonah Kuhio Kalanianaole Day" + - given: + date: ['2017-3-26'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-3-26'] + regions: ["us_hi"] + expect: + name: "Prince Jonah Kuhio Kalanianaole Day" + + - given: + date: ['2017-3-27', '2018-3-26', '2019-3-25'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-3-27', '2018-3-26', '2019-3-25'] + regions: ["us_ak"] + expect: + name: "Seward's Day" + + - given: + date: ['2017-3-31'] + regions: ["us_ca"] + expect: + name: "César Chávez Day" + + - given: + date: ['2023-4-17', '2022-4-15', '2028-4-17'] + regions: ["us_dc", "us_ca"] + options: ["observed"] + expect: + name: "Emancipation Day" + - given: + date: ['2017-4-16'] + regions: ["us_dc"] + expect: + name: "Emancipation Day" + + - given: + date: ['2017-4-17', '2018-4-16', '2019-4-15'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-4-17', '2018-4-16', '2019-4-15'] + regions: ["us_me", "us_ma"] + expect: + name: "Patriots' Day" + + - given: + date: ['2017-4-21'] + regions: ["us_tx"] + expect: + name: "San Jacinto Day" + + - given: + date: ['2017-4-24', '2018-4-30', '2019-4-29'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-4-24', '2018-4-30', '2019-4-29'] + regions: ["us_al", "us_ms"] + expect: + name: "Confederate Memorial Day" + + - given: + date: ['2015-4-27', '2020-4-27', '2026-4-27'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2015-4-27', '2020-4-27', '2026-4-27'] + regions: ["us_fl"] + options: ["observed"] + expect: + name: "Confederate Memorial Day" + + - given: + date: ['2017-4-26'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-4-26'] + regions: ["us_fl"] + expect: + name: "Confederate Memorial Day" + + - given: + date: ['2015-4-20', '2021-4-26'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2015-4-20', '2021-4-26'] + regions: ["us_ga"] + expect: + name: "State Holiday" + + - given: + date: ['2017-4-28'] + regions: ["us_ne"] + expect: + name: "Arbor Day" + - given: + date: ['2017-5-8'] + regions: ["us_mo"] + expect: + name: "Truman Day" + - given: + date: ['2017-5-10'] + regions: ["us_sc"] + expect: + name: "Confederate Memorial Day" + - given: + date: ['2017-5-29', '2018-5-28', '2019-5-27'] + regions: ["us"] + expect: + name: "Memorial Day" + + - given: + date: ['2017-6-5', '2018-6-4', '2019-6-3'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-6-5', '2018-6-4', '2019-6-3'] + regions: ["us_al"] + expect: + name: "Jefferson Davis' Birthday" + - given: + date: ['2017-6-3'] + regions: ["us_fl"] + expect: + name: "Birthday of Jefferson Davis" + + - given: + date: ['2017-6-12', '2018-6-11', '2022-6-10'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-6-12', '2018-6-11', '2022-6-10'] + regions: ["us_hi"] + options: ["observed"] + expect: + name: "King Kamehameha I Day" + + - given: + date: ['2017-6-11'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-6-11'] + regions: ["us_hi"] + expect: + name: "King Kamehameha I Day" + - given: + date: ['2017-6-19'] + regions: ["us_tx"] + expect: + name: "Emancipation Day in Texas" + + - given: + date: ['2017-6-20', '2020-6-19', '2021-6-21'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-6-20', '2020-6-19', '2021-6-21'] + regions: ["us_wv"] + options: ["observed"] + expect: + name: "West Virginia Day" + - given: + date: ['2017-6-20'] + regions: ["us_wv"] + expect: + name: "West Virginia Day" + + - given: + date: ['2017-7-3'] + regions: ["us_vi"] + expect: + name: "Emancipation Day" + + - given: + date: ['2020-7-4', '2021-7-4', '2026-7-4'] + regions: ["us", "us_va"] + expect: + name: "Independence Day" + + - given: + date: ['2020-7-3', '2021-7-5', '2026-7-3'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2020-7-3', '2021-7-5', '2026-7-3'] + regions: ["us_va"] + expect: + name: "Independence Day (Holiday)" + - given: + date: ['2020-7-24'] + regions: ["us_ut"] + expect: + name: "Pioneer Day" + + - given: + date: ['2017-8-14', '2020-8-10', '2021-8-9'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-8-14', '2020-8-10', '2021-8-9'] + regions: ["us_ri"] + expect: + name: "Victory Day" + + - given: + date: ['2017-8-16', '2020-8-17', '2025-8-15'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-8-16', '2020-8-17', '2025-8-15'] + regions: ["us_vt"] + options: ["observed"] + expect: + name: "Bennington Battle Day" + - given: + date: ['2017-8-16'] + regions: ["us_vt"] + expect: + name: "Bennington Battle Day" + + - given: + date: ['2017-8-18', '2020-8-21', '2025-8-15'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-8-18', '2020-8-21', '2025-8-15'] + regions: ["us_hi"] + expect: + name: "Statehood Day" + - given: + date: ['2017-8-27'] + regions: ["us_tx"] + expect: + name: "Lyndon Baines Johnson Day" + - given: + date: ['2017-9-4', '2018-9-3', '2019-9-2'] + regions: ["us"] + expect: + name: "Labor Day" + + - given: + date: ['2017-9-21', '2018-9-10', '2019-9-30'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-9-21', '2018-9-10', '2019-9-30'] + regions: ["us_tx"] + expect: + name: "Rosh Hashanah" + + - given: + date: ['2017-9-30', '2018-9-19', '2019-10-9'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-9-30', '2018-9-19', '2019-10-9'] + regions: ["us_tx"] + expect: + name: "Yom Kippur" + + - given: + date: ['2017-10-9', '2018-10-8', '2019-10-14'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-10-9', '2018-10-8', '2019-10-14'] + 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"] + expect: + name: "Columbus Day" + - given: + date: ['2017-10-9', '2018-10-8', '2019-10-14'] + 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"] + options: ["informal"] + expect: + name: "Columbus Day" + - given: + date: ['2017-10-9', '2018-10-8', '2019-10-14'] + 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"] + expect: + holiday: false + + - given: + date: ['2017-10-18'] + regions: ["us_ak"] + expect: + name: "Alaska Day" + + - given: + date: ['2017-10-27', '2018-10-26', '2019-10-25'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-10-27', '2018-10-26', '2019-10-25'] + regions: ["us_nv"] + expect: + name: "Nevada Day" + + - given: + date: ['2017-11-7', '2018-11-6', '2021-11-2'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-11-7', '2018-11-6', '2021-11-2'] + regions: ["us_de", "us_hi", "us_in", "us_mt", "us_nj", "us_ny", "us_pa", "us_ri"] + expect: + name: "Election Day" + - given: + date: ['2017-11-10', '2018-11-12', '2019-11-11'] + regions: ["us"] + options: ["observed"] + expect: + name: "Veterans Day" + - given: + date: ['2017-11-11'] + regions: ["us"] + expect: + name: "Veterans Day" + - given: + date: ['2017-11-23', '2018-11-22', '2019-11-28'] + regions: ["us"] + expect: + name: "Thanksgiving" + + - given: + date: ['2017-11-24', '2018-11-23', '2019-11-29'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2017-11-24', '2018-11-23', '2019-11-29'] + regions: ["us_nv"] + expect: + name: "Family Day" + - given: + date: ['2017-11-24', '2018-11-23', '2019-11-29'] + regions: ["us_ga"] + expect: + name: "State Holiday" + - given: + date: ['2017-11-24', '2018-11-23', '2019-11-29'] + regions: ["us_nm"] + expect: + name: "Presidents' Day" + - given: + date: ['2017-11-24', '2018-11-23', '2019-11-29'] + regions: ["us_in"] + expect: + name: "Lincoln's Birthday" + - given: + date: ['2017-11-24', '2018-11-23', '2019-11-29'] + regions: ["us_md"] + expect: + name: "American Indian Heritage Day" + - given: + date: ['2017-11-24', '2018-11-23', '2019-11-29'] + 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"] + expect: + name: "Day after Thanksgiving (Black Friday)" + + - given: + date: ['2022-12-23', '2023-12-22', '2028-12-22'] + regions: ["us_mi", "us_sc", "us_va"] + expect: + name: "Christmas Eve (Holiday)" + - given: + date: ['2017-12-24'] + regions: ["us_ar", "us_mi", "us_nc", "us_va", "us_sc", "us_tx", "us_wi"] + expect: + name: "Christmas Eve" + + - given: + date: ['2021-12-27', '2022-12-26', '2027-12-27'] + regions: ["us"] + expect: + holiday: false + - given: + date: ['2021-12-24', '2022-12-26', '2027-12-24'] + regions: ["us"] + options: ["observed"] + expect: + name: "Christmas Day" + - given: + date: ['2017-12-25'] + regions: ["us"] + expect: + name: "Christmas Day" + - given: + date: ['2017-12-26'] + regions: ["us_ar", "us_nc", "us_ok", "us_sc", "us_tn", "us_tx"] + expect: + name: "Day after Christmas" + - given: + date: ['2017-12-31'] + regions: ["us_mi", "us_wi"] + expect: + name: "New Year's Eve" diff --git a/vendor/holidays/definitions/ve.yaml b/vendor/holidays/definitions/ve.yaml new file mode 100644 index 00000000..18268821 --- /dev/null +++ b/vendor/holidays/definitions/ve.yaml @@ -0,0 +1,118 @@ +# Venezuela holiday definitions for the Ruby Holiday gem. +# +# Just including nonworking days nationally +# +# Updated: 2012-09-14. +# Source: http://venciclopedia.com/index.php?title=D%C3%ADas_feriados_de_Venezuela +--- +months: + 0: + - name: Lunes Carnaval + regions: [ve] + function: easter(year) + function_modifier: -48 + - name: Martes Carnaval + regions: [ve] + function: easter(year) + function_modifier: -47 + - name: Jueves Santo + regions: [ve] + function: easter(year) + function_modifier: -3 + - name: Viernes Santo + regions: [ve] + function: easter(year) + function_modifier: -2 + 1: + - name: Año Nuevo + regions: [ve] + mday: 1 + 4: + - name: Declaración Independencia + regions: [ve] + mday: 19 + 5: + - name: Día del Trabajador + regions: [ve] + mday: 1 + 6: + - name: Aniversario Batalla de Carabobo + regions: [ve] + mday: 24 + 7: + - name: Día de la Independencia + regions: [ve] + mday: 5 + - name: Natalicio de Simón Bolívar + regions: [ve] + mday: 24 + 10: + - name: Día de la Resistencia Indígena + regions: [ve] + mday: 12 + 12: + - name: Día de Navidad + regions: [ve] + mday: 25 + +tests: + - given: + date: '2013-01-01' + regions: ["ve"] + expect: + name: "Año Nuevo" + - given: + date: '2013-02-11' + regions: ["ve"] + expect: + name: "Lunes Carnaval" + - given: + date: '2013-02-12' + regions: ["ve"] + expect: + name: "Martes Carnaval" + - given: + date: '2013-03-28' + regions: ["ve"] + expect: + name: "Jueves Santo" + - given: + date: '2013-03-29' + regions: ["ve"] + expect: + name: "Viernes Santo" + - given: + date: '2013-04-19' + regions: ["ve"] + expect: + name: "Declaración Independencia" + - given: + date: '2013-05-01' + regions: ["ve"] + expect: + name: "Día del Trabajador" + - given: + date: '2013-06-24' + regions: ["ve"] + expect: + name: "Aniversario Batalla de Carabobo" + - given: + date: '2013-07-05' + regions: ["ve"] + expect: + name: "Día de la Independencia" + - given: + date: '2013-07-24' + regions: ["ve"] + expect: + name: "Natalicio de Simón Bolívar" + - given: + date: '2013-10-12' + regions: ["ve"] + expect: + name: "Día de la Resistencia Indígena" + - given: + date: '2013-12-25' + regions: ["ve"] + expect: + name: "Día de Navidad" diff --git a/vendor/holidays/definitions/vi.yaml b/vendor/holidays/definitions/vi.yaml new file mode 100644 index 00000000..d3f88538 --- /dev/null +++ b/vendor/holidays/definitions/vi.yaml @@ -0,0 +1,54 @@ +# Vietnam holiday definitions for the Ruby Holiday gem. +# +# Updated: 2014-07-17. +# Source: http://en.wikipedia.org/wiki/Public_holidays_in_Vietnam +--- +months: + 1: + - name: Tết dương lịch + regions: [vi] + mday: 1 + 3: + - name: Giỗ tổ Hùng Vương + regions: [vi] + function: lunar_to_solar(year, month, day, region) + mday: 10 + 4: + - name: Ngày Giải phóng miền Nam, thống nhất đất nước + regions: [vi] + mday: 30 + 5: + - name: Ngày Quốc tế Lao động + regions: [vi] + mday: 1 + 9: + - name: Quốc khánh + regions: [vi] + mday: 2 + +tests: + - given: + date: '2014-01-01' + regions: ["vi"] + expect: + name: "Tết dương lịch" + - given: + date: '2014-04-30' + regions: ["vi"] + expect: + name: "Ngày Giải phóng miền Nam, thống nhất đất nước" + - given: + date: '2014-05-01' + regions: ["vi"] + expect: + name: "Ngày Quốc tế Lao động" + - given: + date: '2014-09-02' + regions: ["vi"] + expect: + name: "Quốc khánh" + - given: + date: ['2017-04-06', '2018-03-27'] + regions: ["vi"] + expect: + name: "Giỗ tổ Hùng Vương" diff --git a/vendor/holidays/definitions/za.yaml b/vendor/holidays/definitions/za.yaml new file mode 100644 index 00000000..8c5ccff9 --- /dev/null +++ b/vendor/holidays/definitions/za.yaml @@ -0,0 +1,139 @@ +# South African holiday definitions for the Ruby Holiday gem. +# +# Updated: 2008-11-29. +# Sources: +# - http://en.wikipedia.org/wiki/Public_holidays_in_South_Africa +# - http://www.info.gov.za/aboutsa/holidays.htm +--- +months: + 0: + - name: Good Friday + regions: [za] + function: easter(year) + function_modifier: -2 + - name: Family Day + regions: [za] + function: easter(year) + function_modifier: 1 + 1: + - name: New Year's Day + regions: [za] + mday: 1 + observed: to_monday_if_sunday(date) + 3: + - name: Human Rights Day + regions: [za] + mday: 21 + observed: to_monday_if_sunday(date) + 4: + - name: Freedom Day + regions: [za] + mday: 27 + observed: to_monday_if_sunday(date) + 5: + - name: Workers Day + regions: [za] + mday: 1 + observed: to_monday_if_sunday(date) + 6: + - name: Youth Day + regions: [za] + mday: 16 + observed: to_monday_if_sunday(date) + 8: + - name: National Women's Day + regions: [za] + mday: 9 + observed: to_monday_if_sunday(date) + 9: + - name: Heritage Day + regions: [za] + mday: 24 + observed: to_monday_if_sunday(date) + 12: + - name: Day of Reconciliation + regions: [za] + mday: 16 + observed: to_monday_if_sunday(date) + - name: Christmas Day + regions: [za] + mday: 25 + observed: to_monday_if_sunday(date) + - name: Day of Goodwill + regions: [za] + mday: 26 + observed: to_weekday_if_boxing_weekend(date) + +tests: + - given: + date: '2007-01-01' + regions: ["za"] + options: ["informal"] + expect: + name: "New Year's Day" + - given: + date: '2007-03-21' + regions: ["za"] + options: ["informal"] + expect: + name: "Human Rights Day" + - given: + date: '2007-04-06' + regions: ["za"] + options: ["informal"] + expect: + name: "Good Friday" + - given: + date: '2007-04-09' + regions: ["za"] + options: ["informal"] + expect: + name: "Family Day" + - given: + date: '2007-04-27' + regions: ["za"] + options: ["informal"] + expect: + name: "Freedom Day" + - given: + date: '2007-05-01' + regions: ["za"] + options: ["informal"] + expect: + name: "Workers Day" + - given: + date: '2007-06-16' + regions: ["za"] + options: ["informal"] + expect: + name: "Youth Day" + - given: + date: '2007-08-09' + regions: ["za"] + options: ["informal"] + expect: + name: "National Women's Day" + - given: + date: '2007-09-24' + regions: ["za"] + options: ["informal"] + expect: + name: "Heritage Day" + - given: + date: '2007-12-16' + regions: ["za"] + options: ["informal"] + expect: + name: "Day of Reconciliation" + - given: + date: '2007-12-25' + regions: ["za"] + options: ["informal"] + expect: + name: "Christmas Day" + - given: + date: '2007-12-26' + regions: ["za"] + options: ["informal"] + expect: + name: "Day of Goodwill" diff --git a/vendor/holidays/doc/CONTRIBUTING.md b/vendor/holidays/doc/CONTRIBUTING.md new file mode 100644 index 00000000..fb8ad413 --- /dev/null +++ b/vendor/holidays/doc/CONTRIBUTING.md @@ -0,0 +1,72 @@ +# How to contribute + +There are multiple ways to help! We rely on users around the world to help keep our definitions accurate and up to date. In addition, pull requests to address bugs or implement new features are always welcome. + +## Code of Conduct + +Please read our [Code of Conduct](../CODE_OF_CONDUCT.md) before contributing. Everyone interacting with this project (or associated projects) is expected to abide by its terms. + +## General note + +The definitions for this project are housed in a submodule. When pulling this repo please make sure to run `git clone --recursive git@github.com/holidays/holidays` +or, if you forgot to do so, run `make update-defs` so that all of the submodule data is pulled correctly. + +## For definition updates + +Our definitions are written in YAML. They are housed in a [separate repository](https://github.com/holidays/definitions) so that they can be used by tools written in other languages. You can find a complete guide to our format in the [definitions SYNTAX guide](https://github.com/holidays/definitions/blob/master/doc/SYNTAX.md). + +In this ruby project we take the YAML definitions and generate final ruby classes that are loaded at runtime for fast calculations. + +Once you have a good idea on what you want to change, please see the [CONTRIBUTING guide](https://github.com/holidays/definitions/blob/master/doc/CONTRIBUTING.md) in the `definitions` repository. + +The idea is that if the validation passes on the other repo then you shouldn't have to worry about generating and testing here. We'll see how that goes! + +Once that PR is accepted the maintainers of this project will be responsible for generating the updated definitions here and releasing a new gem. Don't worry about versioning, we'll take care of it! + +#### Testing out your definitions locally + +As mentioned above we use a git submodule for the definitions. Sometimes you might want to manually test out how this ruby project will behave with your changes. To facilitate that we provide some commands for pointing the definitions submodule to your fork/branch. + +To point at your fork/branch: + +```sh +make clean-defs +BRANCH= USER= make point-to-defs-branch +``` + +Example: + +```sh +make clean-defs +BRANCH=issue-24 USER=ppeble make point-to-defs-branch +``` + +This will pull everything down for the latest commit on that fork/branch. When you are done testing and want to point back at the master definitions: + +```sh +make clean-defs +make point-to-defs-master +``` + +## For non-definition functionality + +* Fork this repository +* Make your changes. Don't forget to run `make test` to execute the test suite! +* Create a PR pointing back to `master` + +Don't worry about versioning, we'll handle it on our end. + +*Tests are required*. If your PR results in lower test coverage then it will not be accepted. + +## Local development helpers + +We have included a few handy tasks to help you troubleshoot and test: + +* `make test` - runs the entire suite +* `bundle exec ruby ` - runs just the tests in the specified file +* `REGION= make test-region` - runs the tests for just that region +* `make console` - launches an IRB session with the 'holidays' gem loaded for quick testing +* `make update-defs` - runs the appropriate git submodule commands to pull the latest definitions +* `make clean-defs` - removes the definitions submodule, useful for switching between a fork and the main definitions repository +* `BRANCH= USER= make point-to-defs-branch` - updates your definitions submodule to point at a fork/branch +* `make point-to-defs-master` - updates your definitions submodule to point back at the `holidays/definitions` repo and master branch diff --git a/vendor/holidays/doc/MAINTAINERS.md b/vendor/holidays/doc/MAINTAINERS.md new file mode 100644 index 00000000..5abb5391 --- /dev/null +++ b/vendor/holidays/doc/MAINTAINERS.md @@ -0,0 +1,81 @@ +# Maintainers guide + +This document outlines the process of releasing an update to the `holidays` gem. This update could +include any (or a combination of) the following: + +* definition updates from the [definitions](https://github.com/holidays/definitions) repository +* bug fixes +* additional functionality + +### semver + +This gem operates under the rules of [semver](http://semver.org/). The decisions on what constitutes a major, +minor, or patch version update fall on the maintainer. If in doubt, follow these rules: + +* Will this change mean that users will be REQUIRED to make a code change? If so then it is a major version bump. This includes dropping supported versions of ruby! +* Will this change mean that users might see a definition/behavior change but won't need to modify their own code? If so then it is as minor version bump +* Will this change mean that a bug, either in code or definitions, will be fixed? If so then it is a patch version bump + +*@ppeble editor note*: I am pretty aggressive when it comes to version bumps! If the slightest functionality has changed then +I consider it a minor version bump, if ANY consumer code has to change then I consider it a major version bump. I don't care +if we get up to version 250, the version number doesn't matter. Communicating the effort required in updating is what matters! + +### Who this document is for + +This document is for maintainers that have merge access to this repository. These maintainers may or may not have access to the upstream +[definitions](https://github.com/holidays/definitions) repository. + +Please note that a core contributor must provide the relevant Github access so that you can perform merges. If you have any issues +please contact the [core members](https://github.com/orgs/holidays/teams/core/members) for assistance. + +### Setup + +This guide assumes that you have forked the repository in Github. If you require assistance in this please contact the core members listed above. + +You will need upload access to rubygems.org in order to publish gems. Contact a [core member](https://github.com/orgs/holidays/teams/core/members) for assistance. + +### Release Overview + +A release could contain one or more of the following: + +* definition updates - these are rule updates pulled from https://github.com/holidays/definitions. These changes are not +language specific and will most likely require local regeneration of compiled rules. +* functionality additions - this is new functionality in this repository that uses the existing definitions +* bug fixes - these are bug fixes in this repository + +It is up to the maintainer to determine what needs to be updated. We will attempt to outline the various scenarios in the +sections below. + +### Release flow + +* Does this update require definition updates? If YES, then: + * Pull the latest `master` version of this ruby repository and run `make update-defs`. This will grab the latest version from the [definitions](https://github.com/holidays/definitions) repository. Run `git diff` to verify that the version of the submodule for the definitions matches the latest commit in the [definitions](https://github.com/holidays/definitions) repo. + * Run the `make generate` command. This will 'recompile' the ruby sources with the latest definitions. + * Run `make test` and ensure that all of the tests pass. If any tests fail then do *not* merge and contact a [core member](https://github.com/orgs/holidays/teams/core/members) for assistance. + * If all of the tests pass, update the `lib/holidays/version.rb` file to the new version. Reference the above [semver](http://semver.org/) rules for how to update versions. + * Make a branch on your fork and update the [CHANGELOG](../CHANGELOG.md) to reflect the latest changes. You do not need to put in all of the definition changes in this update, you can simply reference the other repository. See other entries in the CHANGELOG for examples. + * Open a PR against the new branch and merge it (another maintainer will need to review before you can merge) + * Once the branch is merged, pull down the latest master from Github and run `make build`. This will generate a new `gem` file with the new version. The new version number is pulled from the above `version.rb` update. + * If the build was successful then you can run the following to push up to rubygems.org: `GEM= make push`. Example: `GEM=holidays-6.2.0.gem make push` +* Does this update require functionality additions or bug fixes? If YES, then: + * Run `make test` and ensure that all of the tests pass. If any tests fail then do *not* merge and contact a [core member](https://github.com/orgs/holidays/teams/core/members) for assistance. + * If all of the tests pass, make a branch on your fork and update the [CHANGELOG](../CHANGELOG.md) to reflect the latest changes. + * Update the `lib/holidays/version.rb` file to the new version. Reference the above [semver](http://semver.org/) rules for how to update versions. + * Open a PR against the new branch and merge it (another maintainer will need to review before you can merge) + * Once the branch is merged, pull down the latest master from Github and run `make build`. This will generate a new `gem` file with the new version. The new version number is pulled from the above `version.rb` update. + * If the build was successful then you can run the following to push up to rubygems.org: `GEM= make push`. Example: `GEM=holidays-6.2.0.gem make push` + +You are done! The latest version should be uploaded to rubygems.org. You can go to view the [holidays page](https://rubygems.org/gems/holidays) to verify that the latest version is available. + +It is totally acceptable to do both functionality AND definition updates in a single release. Simply combine both sets of rules into a single branch for your update. + +### Troubleshooting + +The biggest hurdle in this repository is that [upstream definition](https://github.com/holidays/definitions) changes will +result in failures in existing tests and it will not be because of ruby issues but rather upstream issues. If you notice any test failures +that seem to be specific to certain regions then look at recent changes in that other repository. If there were changes there then the odds +are that there are issues in the definition-specific tests. This is most likely not a language (i.e. ruby) specific issue. + +It is a known issue that the definitions do not have a good set of self-tests to ensure that they are internally consistent. This means that a failure in this +repository could NOT be related to ruby specifically. It could be that the 'tests' specified in in the YAML files are incorrect! If you encounter errors here +make sure that you don't assume that it is just a ruby error that is causing the issues! diff --git a/vendor/holidays/doc/REFERENCES b/vendor/holidays/doc/REFERENCES new file mode 100644 index 00000000..29cfa2cd --- /dev/null +++ b/vendor/holidays/doc/REFERENCES @@ -0,0 +1,19 @@ +=== References + +We are eternally grateful to the following sources. + +==== Date calculations +* http://michaelthompson.org/technikos/holidays.php + +==== Easter calculations +* http://www.assa.org.au/edm.html +* http://www.smart.net/~mmontes/ec-cal.html +* https://github.com/Loyolny/when_easter - graciously allowed by Michał Nierebiński + +==== World dates +* http://www.un.org/geninfo/faq/factsheets/FS18.HTM +* http://en.wikipedia.org/wiki/List_of_holidays_by_country + +Other sources for specific regions are noted in the definitions files themselves. + +If a commit sneaks past the maintainers without attribution then please, let us know immediately! It was entirely unintentional. diff --git a/vendor/holidays/holidays.gemspec b/vendor/holidays/holidays.gemspec new file mode 100644 index 00000000..8c01675f --- /dev/null +++ b/vendor/holidays/holidays.gemspec @@ -0,0 +1,26 @@ +# -*- encoding: utf-8 -*- +lib = File.expand_path('../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) + +require 'holidays/version' + +Gem::Specification.new do |gem| + gem.name = 'holidays' + gem.version = Holidays::VERSION + gem.authors = ['Alex Dunae', 'Phil Peble'] + gem.email = ['holidaysgem@gmail.com'] + gem.homepage = 'https://github.com/holidays/holidays' + gem.description = %q(A collection of Ruby methods to deal with statutory and other holidays. You deserve a holiday!) + gem.summary = %q(A collection of Ruby methods to deal with statutory and other holidays.) + gem.files = `git ls-files`.split("\n") - ['.gitignore', '.travis.yml'] + gem.test_files = gem.files.grep(/^test/) + gem.require_paths = ['lib'] + gem.licenses = ['MIT'] + gem.required_ruby_version = '>= 2.4' + gem.add_development_dependency 'bundler', '~> 2' + gem.add_development_dependency 'rake', '~> 12' + gem.add_development_dependency 'simplecov', '~> 0.16' + gem.add_development_dependency 'test-unit', '~> 3' + gem.add_development_dependency 'mocha', '~> 1' + gem.add_development_dependency 'pry', '~> 0.12' +end diff --git a/vendor/holidays/lib/generated_definitions/MANIFEST b/vendor/holidays/lib/generated_definitions/MANIFEST new file mode 100644 index 00000000..002f2ae6 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/MANIFEST @@ -0,0 +1,81 @@ +==== Regional definitions +The following definition files are included in this installation: + +* generated_definitions/REGIONS +* generated_definitions/ar +* generated_definitions/at +* generated_definitions/au +* generated_definitions/be +* generated_definitions/be_fr +* generated_definitions/be_nl +* generated_definitions/bg +* generated_definitions/br +* generated_definitions/ca +* generated_definitions/ch +* generated_definitions/cl +* generated_definitions/co +* generated_definitions/cr +* generated_definitions/cz +* generated_definitions/de +* generated_definitions/dk +* generated_definitions/ecbtarget +* generated_definitions/ee +* generated_definitions/el +* generated_definitions/es +* generated_definitions/europe +* generated_definitions/federalreserve +* generated_definitions/federalreservebanks +* generated_definitions/fedex +* generated_definitions/fi +* generated_definitions/fr +* generated_definitions/gb +* generated_definitions/ge +* generated_definitions/hk +* generated_definitions/hr +* generated_definitions/hu +* generated_definitions/ie +* generated_definitions/is +* generated_definitions/it +* generated_definitions/jp +* generated_definitions/kr +* generated_definitions/kz +* generated_definitions/li +* generated_definitions/lt +* generated_definitions/lu +* generated_definitions/lv +* generated_definitions/ma +* generated_definitions/mt_en +* generated_definitions/mt_mt +* generated_definitions/mx +* generated_definitions/my +* generated_definitions/nerc +* generated_definitions/ng +* generated_definitions/nl +* generated_definitions/no +* generated_definitions/northamerica +* generated_definitions/nyse +* generated_definitions/nz +* generated_definitions/pe +* generated_definitions/ph +* generated_definitions/pl +* generated_definitions/pt +* generated_definitions/ro +* generated_definitions/rs_cyrl +* generated_definitions/rs_la +* generated_definitions/ru +* generated_definitions/scandinavia +* generated_definitions/se +* generated_definitions/sg +* generated_definitions/si +* generated_definitions/sk +* generated_definitions/southamerica +* generated_definitions/th +* generated_definitions/tn +* generated_definitions/tr +* generated_definitions/ua +* generated_definitions/unitednations +* generated_definitions/ups +* generated_definitions/us +* generated_definitions/ve +* generated_definitions/vi +* generated_definitions/za diff --git a/vendor/holidays/lib/generated_definitions/REGIONS.rb b/vendor/holidays/lib/generated_definitions/REGIONS.rb new file mode 100644 index 00000000..675097c7 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/REGIONS.rb @@ -0,0 +1,6 @@ +# encoding: utf-8 +module Holidays + REGIONS = [:ar, :at, :au, :au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_wa, :au_tas, :au_tas_south, :au_qld_cairns, :au_qld_brisbane, :au_tas_north, :au_vic_melbourne, :be_fr, :be_nl, :br, :bg_en, :bg_bg, :ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_nb, :ca_mb, :ca_ns, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_yt, :us, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cl, :co, :cr, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath, :de_sn, :de_st, :de_be, :de_by_cath, :de_by_augsburg, :de_bb, :de_mv, :de_th, :de_hb, :de_hh, :de_ni, :de_sh, :ecbtarget, :ee, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :federalreserve, :federalreservebanks, :fedex, :fi, :fr_a, :fr_m, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy, :gb_sct, :gb_con, :im, :gb_iom, :ge, :hr, :hk, :hu, :ie, :is, :it, :it_ve, :it_tv, :it_vr, :it_pd, :it_fi, :it_ge, :it_to, :it_rm, :it_vi, :it_bl, :it_ro, :kr, :kz, :li, :lt, :lv, :ma, :mt_mt, :mt_en, :mx, :mx_pue, :nerc, :nl, :lu, :no, :nyse, :nz, :nz_sl, :nz_we, :nz_ak, :nz_nl, :nz_ne, :nz_ot, :nz_ta, :nz_sc, :nz_hb, :nz_mb, :nz_ca, :nz_ch, :nz_wl, :pe, :ph, :pl, :pt, :pt_li, :pt_po, :ro, :rs_cyrl, :rs_la, :ru, :se, :tn, :tr, :ua, :us_fl, :us_la, :us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn, :us_ms, :us_id, :us_ar, :us_tx, :us_dc, :us_md, :us_va, :us_vt, :us_ak, :us_ca, :us_me, :us_ma, :us_al, :us_ga, :us_ne, :us_mo, :us_sc, :us_wv, :us_vi, :us_ut, :us_ri, :us_az, :us_co, :us_il, :us_mt, :us_nm, :us_ny, :us_oh, :us_pa, :us_mi, :us_mn, :us_nv, :us_or, :us_sd, :us_wa, :us_wi, :us_wy, :us_ia, :us_ks, :us_nh, :us_ok, :unitednations, :ups, :za, :ve, :sk, :si, :jp, :vi, :sg, :my, :th, :ng] + + PARENT_REGION_LOOKUP = {:ar=>:ar, :at=>:at, :au=>:au, :au_nsw=>:au, :au_vic=>:au, :au_qld=>:au, :au_nt=>:au, :au_act=>:au, :au_sa=>:au, :au_wa=>:au, :au_tas=>:au, :au_tas_south=>:au, :au_qld_cairns=>:au, :au_qld_brisbane=>:au, :au_tas_north=>:au, :au_vic_melbourne=>:au, :be_fr=>:be_fr, :be_nl=>:be_nl, :br=>:br, :bg_en=>:bg, :bg_bg=>:bg, :ca=>:ca, :ca_qc=>:ca, :ca_ab=>:ca, :ca_sk=>:ca, :ca_on=>:ca, :ca_bc=>:ca, :ca_nb=>:ca, :ca_mb=>:ca, :ca_ns=>:ca, :ca_pe=>:ca, :ca_nl=>:ca, :ca_nt=>:ca, :ca_nu=>:ca, :ca_yt=>:ca, :us=>:us, :ch_zh=>:ch, :ch_be=>:ch, :ch_lu=>:ch, :ch_ur=>:ch, :ch_sz=>:ch, :ch_ow=>:ch, :ch_nw=>:ch, :ch_gl=>:ch, :ch_zg=>:ch, :ch_fr=>:ch, :ch_so=>:ch, :ch_bs=>:ch, :ch_bl=>:ch, :ch_sh=>:ch, :ch_ar=>:ch, :ch_ai=>:ch, :ch_sg=>:ch, :ch_gr=>:ch, :ch_ag=>:ch, :ch_tg=>:ch, :ch_ti=>:ch, :ch_vd=>:ch, :ch_ne=>:ch, :ch_ge=>:ch, :ch_ju=>:ch, :ch_vs=>:ch, :ch=>:ch, :cl=>:cl, :co=>:co, :cr=>:cr, :cz=>:cz, :dk=>:dk, :de=>:de, :de_bw=>:de, :de_by=>:de, :de_he=>:de, :de_nw=>:de, :de_rp=>:de, :de_sl=>:de, :de_sn_sorbian=>:de, :de_th_cath=>:de, :de_sn=>:de, :de_st=>:de, :de_be=>:de, :de_by_cath=>:de, :de_by_augsburg=>:de, :de_bb=>:de, :de_mv=>:de, :de_th=>:de, :de_hb=>:de, :de_hh=>:de, :de_ni=>:de, :de_sh=>:de, :ecbtarget=>:ecbtarget, :ee=>:ee, :el=>:el, :es_pv=>:es, :es_na=>:es, :es_an=>:es, :es_ib=>:es, :es_cm=>:es, :es_mu=>:es, :es_m=>:es, :es_ar=>:es, :es_cl=>:es, :es_cn=>:es, :es_lo=>:es, :es_ga=>:es, :es_ce=>:es, :es_o=>:es, :es_ex=>:es, :es=>:es, :es_ct=>:es, :es_v=>:es, :es_vc=>:es, :federalreserve=>:federalreserve, :federalreservebanks=>:federalreservebanks, :fedex=>:fedex, :fi=>:fi, :fr_a=>:fr, :fr_m=>:fr, :fr=>:fr, :gb=>:gb, :gb_eng=>:gb, :gb_wls=>:gb, :gb_eaw=>:gb, :gb_nir=>:gb, :je=>:gb, :gb_jsy=>:gb, :gg=>:gb, :gb_gsy=>:gb, :gb_sct=>:gb, :gb_con=>:gb, :im=>:gb, :gb_iom=>:gb, :ge=>:ge, :hr=>:hr, :hk=>:hk, :hu=>:hu, :ie=>:ie, :is=>:is, :it=>:it, :it_ve=>:it, :it_tv=>:it, :it_vr=>:it, :it_pd=>:it, :it_fi=>:it, :it_ge=>:it, :it_to=>:it, :it_rm=>:it, :it_vi=>:it, :it_bl=>:it, :it_ro=>:it, :kr=>:kr, :kz=>:kz, :li=>:li, :lt=>:lt, :lv=>:lv, :ma=>:ma, :mt_mt=>:mt_mt, :mt_en=>:mt_en, :mx=>:mx, :mx_pue=>:mx, :nerc=>:nerc, :nl=>:nl, :lu=>:lu, :no=>:no, :nyse=>:nyse, :nz=>:nz, :nz_sl=>:nz, :nz_we=>:nz, :nz_ak=>:nz, :nz_nl=>:nz, :nz_ne=>:nz, :nz_ot=>:nz, :nz_ta=>:nz, :nz_sc=>:nz, :nz_hb=>:nz, :nz_mb=>:nz, :nz_ca=>:nz, :nz_ch=>:nz, :nz_wl=>:nz, :pe=>:pe, :ph=>:ph, :pl=>:pl, :pt=>:pt, :pt_li=>:pt, :pt_po=>:pt, :ro=>:ro, :rs_cyrl=>:rs_cyrl, :rs_la=>:rs_la, :ru=>:ru, :se=>:se, :tn=>:tn, :tr=>:tr, :ua=>:ua, :us_fl=>:us, :us_la=>:us, :us_ct=>:us, :us_de=>:us, :us_gu=>:us, :us_hi=>:us, :us_in=>:us, :us_ky=>:us, :us_nj=>:us, :us_nc=>:us, :us_nd=>:us, :us_pr=>:us, :us_tn=>:us, :us_ms=>:us, :us_id=>:us, :us_ar=>:us, :us_tx=>:us, :us_dc=>:us, :us_md=>:us, :us_va=>:us, :us_vt=>:us, :us_ak=>:us, :us_ca=>:us, :us_me=>:us, :us_ma=>:us, :us_al=>:us, :us_ga=>:us, :us_ne=>:us, :us_mo=>:us, :us_sc=>:us, :us_wv=>:us, :us_vi=>:us, :us_ut=>:us, :us_ri=>:us, :us_az=>:us, :us_co=>:us, :us_il=>:us, :us_mt=>:us, :us_nm=>:us, :us_ny=>:us, :us_oh=>:us, :us_pa=>:us, :us_mi=>:us, :us_mn=>:us, :us_nv=>:us, :us_or=>:us, :us_sd=>:us, :us_wa=>:us, :us_wi=>:us, :us_wy=>:us, :us_ia=>:us, :us_ks=>:us, :us_nh=>:us, :us_ok=>:us, :unitednations=>:unitednations, :ups=>:ups, :za=>:za, :ve=>:southamerica, :sk=>:europe, :si=>:europe, :jp=>:jp, :vi=>:vi, :sg=>:sg, :my=>:my, :th=>:th, :ng=>:ng} +end diff --git a/vendor/holidays/lib/generated_definitions/ar.rb b/vendor/holidays/lib/generated_definitions/ar.rb new file mode 100644 index 00000000..23742481 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ar.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ar.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module AR # :nodoc: + def self.defined_regions + [:ar] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:ar]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Carnaval Lunes", :regions => [:ar]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Carnaval Martes", :regions => [:ar]}], + 1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:ar]}], + 3 => [{:mday => 24, :name => "Día Nacional de la Memoria por la Verdad y la Justicia", :regions => [:ar]}], + 4 => [{:mday => 2, :name => "Día del Veterano y de los Caídos en la Guerra de Malvinas", :regions => [:ar]}], + 5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:ar]}, + {:mday => 25, :name => "Día de la Revolución de Mayo", :regions => [:ar]}], + 6 => [{:mday => 20, :name => "Día de la Bandera", :regions => [:ar]}], + 7 => [{:mday => 8, :name => "Feriado puente turístico", :regions => [:ar]}, + {:mday => 9, :name => "Día de la Independencia", :regions => [:ar]}], + 8 => [{:mday => 15, :name => "Paso a la Inmortalidad del General José de San Martín", :regions => [:ar]}], + 10 => [{:mday => 12, :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]}], + 11 => [{:mday => 20, :name => "Día de la Soberanía Nacional", :regions => [:ar]}], + 12 => [{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:ar]}, + {:mday => 9, :name => "Feriado puente turístico", :regions => [:ar]}, + {:mday => 25, :name => "Navidad", :regions => [:ar]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/at.rb b/vendor/holidays/lib/generated_definitions/at.rb new file mode 100644 index 00000000..3a02d698 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/at.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/at.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module AT # :nodoc: + def self.defined_regions + [:at] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :regions => [:at]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Christi Himmelfahrt", :regions => [:at]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :regions => [:at]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :regions => [:at]}], + 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:at]}, + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:at]}], + 5 => [{:mday => 1, :name => "Staatsfeiertag", :regions => [:at]}], + 8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:at]}], + 10 => [{:mday => 26, :name => "Nationalfeiertag", :regions => [:at]}], + 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:at]}], + 12 => [{:mday => 8, :name => "Mariä Empfängnis", :regions => [:at]}, + {:mday => 25, :name => "1. Weihnachtstag", :regions => [:at]}, + {:mday => 26, :name => "2. Weihnachtstag", :regions => [:at]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/au.rb b/vendor/holidays/lib/generated_definitions/au.rb new file mode 100644 index 00000000..42356d80 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/au.rb @@ -0,0 +1,135 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/au.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module AU # :nodoc: + def self.defined_regions + [:au, :au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_wa, :au_tas, :au_tas_south, :au_qld_cairns, :au_qld_brisbane, :au_tas_north, :au_vic_melbourne] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:au]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Easter Saturday", :regions => [:au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:au_nsw, :au_vic]}, + {:function => "easter(year)", :function_arguments => [:year], :year_ranges => { :from => 2017 },:name => "Easter Sunday", :regions => [:au_qld, :au_act]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:au]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:au, :au_nsw, :au_vic, :au_act, :au_sa, :au_wa, :au_nt, :au_qld]}, + {:mday => 1, :function => "to_monday_if_weekend(date)", :function_arguments => [:date], :name => "New Year's Day", :regions => [:au_tas]}, + {:mday => 26, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Australia Day", :regions => [:au]}], + 2 => [{:wday => 1, :week => 2, :name => "Royal Hobart Regatta", :regions => [:au_tas_south]}], + 3 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_wa]}, + {:wday => 1, :week => 2, :name => "Eight Hours Day", :regions => [:au_tas]}, + {:wday => 1, :week => 2, :name => "Labour Day", :regions => [:au_vic]}, + {:function => "march_pub_hol_sa(year)", :function_arguments => [:year], :name => "March Public Holiday", :regions => [:au_sa]}, + {:wday => 1, :week => 2, :name => "Canberra Day", :regions => [:au_act]}], + 4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:au]}, + {:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_tas]}, + {:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:au_wa]}], + 5 => [{:function => "qld_labour_day_may(year)", :function_arguments => [:year], :name => "Labour Day", :regions => [:au_qld]}, + {:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]}, + {:function => "may_pub_hol_sa(year)", :function_arguments => [:year], :name => "May Public Holiday", :regions => [:au_sa]}], + 6 => [{:wday => 1, :week => 1, :name => "Western Australia Day", :regions => [:au_wa]}, + {:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_vic]}, + {:function => "qld_queens_birthday_june(year)", :function_arguments => [:year], :name => "Queen's Birthday", :regions => [:au_qld]}, + {:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}], + 7 => [{:wday => 5, :week => 3, :name => "Cairns Show", :regions => [:au_qld_cairns]}], + 8 => [{:wday => 3, :week => -3, :name => "Ekka", :regions => [:au_qld_brisbane]}], + 9 => [{:wday => 1, :week => -1, :name => "Queen's Birthday", :regions => [:au_wa]}, + {:wday => 1, :week => -1, :name => "Family & Community Day", :regions => [:au_act]}], + 10 => [{:function => "afl_grand_final(year)", :function_arguments => [:year], :name => "Friday before the AFL Grand Final", :regions => [:au_vic]}, + {:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_act, :au_nsw, :au_sa]}, + {:function => "qld_labour_day_october(year)", :function_arguments => [:year], :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Labour Day", :regions => [:au_qld]}, + {:function => "qld_queens_bday_october(year)", :function_arguments => [:year], :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Queen's Birthday", :regions => [:au_qld]}, + {:function => "hobart_show_day(year)", :function_arguments => [:year], :name => "Royal Hobart Show", :regions => [:au_tas_south]}], + 11 => [{:function => "g20_day_2014_only(year)", :function_arguments => [:year], :name => "G20 Day", :regions => [:au_qld_brisbane]}, + {:wday => 1, :week => 1, :name => "Recreation Day", :regions => [:au_tas_north]}, + {:wday => 2, :week => 1, :name => "Melbourne Cup Day", :regions => [:au_vic_melbourne]}], + 12 => [{:mday => 25, :observed => "to_tuesday_if_sunday_or_monday_if_saturday(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:au_qld, :au_nsw, :au_act, :au_tas, :au_wa, :au_vic, :au_nt]}, + {:mday => 26, :observed => "to_tuesday_if_sunday_or_monday_if_saturday(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:au_nsw, :au_vic, :au_qld, :au_act, :au_wa]}, + {:function => "to_weekday_if_boxing_weekend_from_year(year)", :function_arguments => [:year], :name => "Boxing Day", :regions => [:au_tas, :au_nt]}, + {:function => "to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year)", :function_arguments => [:year], :name => "Proclamation Day", :regions => [:au_sa]}, + {:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:au_sa]}] + } + end + + def self.custom_methods + { + "afl_grand_final(year)" => Proc.new { |year| +case year +when 2015 + Date.civil(2015, 10, 2) +when 2016 + Date.civil(2016, 9, 30) +when 2017 + Date.civil(2017, 9, 29) +when 2018 + Date.civil(2018, 9, 28) +when 2019 + Date.civil(2019,9, 27) +when 2020 + Date.civil(2020, 10, 23) +end +}, + +"qld_queens_bday_october(year)" => Proc.new { |year| +if year >= 2016 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1) +elsif year == 2012 + 1 +else + nil +end +}, + +"qld_queens_birthday_june(year)" => Proc.new { |year| +if year <= 2015 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 6, 2, 1) +end +}, + +"qld_labour_day_may(year)" => Proc.new { |year| +if year < 2013 || year >= 2016 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, 1, 1) +end +}, + +"qld_labour_day_october(year)" => Proc.new { |year| +if year >= 2013 && year < 2016 + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 1, 1) +end +}, + +"g20_day_2014_only(year)" => Proc.new { |year| +year == 2014 ? 14 : nil +}, + +"hobart_show_day(year)" => Proc.new { |year| +fourth_sat_in_oct = Date.civil(year, 10, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 10, 4, :saturday)) +fourth_sat_in_oct - 2 # the thursday before +}, + +"march_pub_hol_sa(year)" => Proc.new { |year| +if year < 2006 + nil +else + Date.civil(year, 3, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 3, :second, :monday)) +end +}, + +"may_pub_hol_sa(year)" => Proc.new { |year| +if year >= 2006 + nil +else + Date.civil(year, 5, Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 5, :third, :monday)) +end +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/be.rb b/vendor/holidays/lib/generated_definitions/be.rb new file mode 100644 index 00000000..da0a13be --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/be.rb @@ -0,0 +1,42 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/be.yaml + # + # To use the definitions in this file, load it right after you load the + # Holiday gem: + # + # require 'holidays' + # require 'generated_definitions/be' + # + # All the definitions are available at https://github.com/holidays/holidays + module BE # :nodoc: + def self.defined_regions + [:be] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :name => "Pâques", :regions => [:be]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lundi de Pâques", :regions => [:be]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Ascension", :regions => [:be]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pentecôte", :regions => [:be]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lundi de Pentecôte", :regions => [:be]}], + 1 => [{:mday => 1, :name => "Jour de l'an", :regions => [:be]}], + 5 => [{:mday => 1, :name => "Fête du travail", :regions => [:be]}], + 7 => [{:mday => 21, :name => "Fête nationale", :regions => [:be]}], + 8 => [{:mday => 15, :name => "Assomption", :regions => [:be]}], + 11 => [{:mday => 1, :name => "Toussaint", :regions => [:be]}, + {:mday => 11, :name => "Armistice 1918", :regions => [:be]}], + 12 => [{:mday => 25, :name => "Noël", :regions => [:be]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/be_fr.rb b/vendor/holidays/lib/generated_definitions/be_fr.rb new file mode 100644 index 00000000..df5b580c --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/be_fr.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/be_fr.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module BE_FR # :nodoc: + def self.defined_regions + [:be_fr] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :name => "Pâques", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lundi de Pâques", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Ascension", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pentecôte", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lundi de Pentecôte", :regions => [:be_fr]}], + 1 => [{:mday => 1, :name => "Jour de l'an", :regions => [:be_fr]}], + 5 => [{:mday => 1, :name => "Fête du travail", :regions => [:be_fr]}], + 7 => [{:mday => 21, :name => "Fête nationale", :regions => [:be_fr]}], + 8 => [{:mday => 15, :name => "Assomption", :regions => [:be_fr]}], + 11 => [{:mday => 1, :name => "Toussaint", :regions => [:be_fr]}, + {:mday => 11, :name => "Armistice 1918", :regions => [:be_fr]}], + 12 => [{:mday => 25, :name => "Noël", :regions => [:be_fr]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/be_nl.rb b/vendor/holidays/lib/generated_definitions/be_nl.rb new file mode 100644 index 00000000..c9ff4586 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/be_nl.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/be_nl.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module BE_NL # :nodoc: + def self.defined_regions + [:be_nl] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :name => "Pasen", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Paasmaandag", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "O.H. Hemelvaart", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pinksteren", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pinkstermaandag", :regions => [:be_nl]}], + 1 => [{:mday => 1, :name => "Nieuwjaar", :regions => [:be_nl]}], + 5 => [{:mday => 1, :name => "Feest van de Arbeid", :regions => [:be_nl]}], + 7 => [{:mday => 21, :name => "Nationale Feestdag", :regions => [:be_nl]}], + 8 => [{:mday => 15, :name => "O.L.V. Hemelvaart", :regions => [:be_nl]}], + 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:be_nl]}, + {:mday => 11, :name => "Wapenstilstand 1918", :regions => [:be_nl]}], + 12 => [{:mday => 25, :name => "Kerstmis", :regions => [:be_nl]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/bg.rb b/vendor/holidays/lib/generated_definitions/bg.rb new file mode 100644 index 00000000..4b754550 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/bg.rb @@ -0,0 +1,53 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/bg.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module BG # :nodoc: + def self.defined_regions + [:bg_en, :bg_bg] + end + + def self.holidays_by_month + { + 0 => [{:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:bg_en]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Разпети петък", :regions => [:bg_bg]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Holy Saturday", :regions => [:bg_en]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Велика събота", :regions => [:bg_bg]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:bg_en]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :name => "Възкресение Христово. Великден", :regions => [:bg_bg, :bg_bg]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:bg_en]}], + 1 => [{:mday => 1, :name => "New Year's Day", :regions => [:bg_en]}, + {:mday => 1, :name => "Нова година", :regions => [:bg_bg]}], + 3 => [{:mday => 3, :name => "Liberation Day", :regions => [:bg_en]}, + {:mday => 3, :name => "Освобожението на България", :regions => [:bg_bg]}], + 5 => [{:mday => 1, :name => "Labour Day", :regions => [:bg_en]}, + {:mday => 1, :name => "Ден на труда", :regions => [:bg_bg]}, + {:mday => 6, :name => "St. George's Day", :regions => [:bg_en]}, + {:mday => 6, :name => "Гергьовден. Ден на храбростта", :regions => [:bg_bg]}, + {:mday => 24, :name => "Slavic Literacy Day", :regions => [:bg_en]}, + {:mday => 24, :name => "Ден на славянската писменост", :regions => [:bg_bg]}], + 9 => [{:mday => 6, :name => "Unification Day", :regions => [:bg_en]}, + {:mday => 6, :name => "Ден на Съединението", :regions => [:bg_bg]}, + {:mday => 22, :name => "The Independence Day", :regions => [:bg_en]}, + {:mday => 22, :name => "Ден на Независимостта", :regions => [:bg_bg]}], + 11 => [{:mday => 1, :name => "Revival Leader's Day", :regions => [:bg_en]}, + {:mday => 1, :name => "Ден на Народните будители", :regions => [:bg_bg]}], + 12 => [{:mday => 24, :name => "Christmas Eve", :regions => [:bg_en]}, + {:mday => 24, :name => "Бъдни вечер", :regions => [:bg_bg]}, + {:mday => 25, :name => "Christmas", :regions => [:bg_en]}, + {:mday => 25, :name => "Рождество Христово. Коледа", :regions => [:bg_bg]}, + {:mday => 26, :name => "Christmas", :regions => [:bg_en]}, + {:mday => 26, :name => "Рождество Христово. Коледа", :regions => [:bg_bg]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/br.rb b/vendor/holidays/lib/generated_definitions/br.rb new file mode 100644 index 00000000..cf78aefd --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/br.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/br.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module BR # :nodoc: + def self.defined_regions + [:br] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :type => :informal, :name => "Carnaval", :regions => [:br]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Sexta-feira Santa", :regions => [:br]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Páscoa", :regions => [:br]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Corpus Christi", :regions => [:br]}], + 1 => [{:mday => 1, :name => "Dia da Confraternização Universal", :regions => [:br]}], + 4 => [{:mday => 21, :name => "Dia de Tiradentes", :regions => [:br]}], + 5 => [{:mday => 1, :name => "Dia do Trabalho", :regions => [:br]}], + 9 => [{:mday => 7, :name => "Proclamação da Independência", :regions => [:br]}], + 10 => [{:mday => 12, :name => "Dia de Nossa Senhora Aparecida", :regions => [:br]}], + 11 => [{:mday => 2, :name => "Dia de Finados", :regions => [:br]}, + {:mday => 15, :name => "Proclamação da República", :regions => [:br]}], + 12 => [{:mday => 25, :name => "Natal", :regions => [:br]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ca.rb b/vendor/holidays/lib/generated_definitions/ca.rb new file mode 100644 index 00000000..b2eb18a0 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ca.rb @@ -0,0 +1,83 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ca.yaml, definitions/northamericainformal.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module CA # :nodoc: + def self.defined_regions + [:ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_nb, :ca_mb, :ca_ns, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_yt, :us] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ca]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:ca]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :type => :informal, :name => "Easter Monday", :regions => [:ca]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ca]}, + {:mday => 2, :name => "New Year's", :regions => [:ca_qc]}], + 2 => [{:wday => 1, :week => 3, :year_ranges => { :from => 1990 },:name => "Family Day", :regions => [:ca_ab]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2007 },:name => "Family Day", :regions => [:ca_sk]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2008 },:name => "Family Day", :regions => [:ca_on]}, + {:wday => 1, :week => 2, :year_ranges => { :between => 2013..2018 },:name => "Family Day", :regions => [:ca_bc]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2019 },:name => "Family Day", :regions => [:ca_bc]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2018 },:name => "Family Day", :regions => [:ca_nb]}, + {:wday => 1, :week => 3, :name => "Louis Riel Day", :regions => [:ca_mb]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2015 },:name => "Nova Scotia Heritage Day", :regions => [:ca_ns]}, + {:wday => 1, :week => 3, :name => "Islander Day", :regions => [:ca_pe]}, + {:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]}, + {:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}], + 3 => [{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:ca_nl]}, + {:mday => 23, :type => :informal, :name => "St. George's Day", :regions => [:ca_nl]}, + {:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}], + 5 => [{:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "Victoria Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt]}, + {:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "National Patriotes Day", :regions => [:ca_qc]}, + {:wday => 0, :week => 2, :type => :informal, :name => "Mother's Day", :regions => [:us, :ca]}, + {:wday => 6, :week => 3, :type => :informal, :name => "Armed Forces Day", :regions => [:us]}], + 6 => [{:mday => 24, :type => :informal, :name => "Discovery Day", :regions => [:ca_nl]}, + {:mday => 24, :name => "Fête Nationale", :regions => [:ca_qc]}, + {:mday => 21, :name => "National Aboriginal Day", :regions => [:ca_nt]}, + {:mday => 21, :year_ranges => { :from => 2017 },:name => "National Aboriginal Day", :regions => [:ca_yt]}, + {:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}], + 7 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Canada Day", :regions => [:ca]}, + {:mday => 12, :type => :informal, :name => "Orangemen's Day", :regions => [:ca_nl]}, + {:mday => 9, :year_ranges => { :from => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Nunavut Day", :regions => [:ca_nu]}], + 8 => [{:wday => 1, :week => 1, :name => "B.C. Day", :regions => [:ca_bc]}, + {:wday => 1, :week => 1, :name => "Saskatchewan Day", :regions => [:ca_sk]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Heritage Day", :regions => [:ca_ab]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Natal Day", :regions => [:ca_ns]}, + {:wday => 1, :week => 1, :name => "Civic Holiday", :regions => [:ca_nt, :ca_nu]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Civic Holiday", :regions => [:ca_on, :ca_pe]}, + {:wday => 1, :week => 1, :name => "New Brunswick Day", :regions => [:ca_nb]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Terry Fox Day", :regions => [:ca_mb]}, + {:wday => 1, :week => 3, :name => "Discovery Day", :regions => [:ca_yt]}], + 9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:ca]}], + 10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_qc, :ca_sk, :ca_yt]}, + {:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}], + 11 => [{:mday => 11, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Remembrance Day", :regions => [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "Boxing Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nb, :ca_nl, :ca_nt, :ca_ns, :ca_nu, :ca_pe, :ca_sk, :ca_yt]}], + 4 => [{:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]}, + {:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}] + } + end + + def self.custom_methods + { + "ca_victoria_day(year)" => Proc.new { |year| +date = Date.civil(year,5,24) +if date.wday > 1 + date -= (date.wday - 1) +elsif date.wday == 0 + date -= 6 +end +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ch.rb b/vendor/holidays/lib/generated_definitions/ch.rb new file mode 100644 index 00000000..3db9337b --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ch.rb @@ -0,0 +1,95 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ch.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module CH # :nodoc: + def self.defined_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, :ch_vs, :ch] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Karfreitag", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Auffahrt", :regions => [:ch]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :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]}, + {:function => "ch_vd_lundi_du_jeune_federal(year)", :function_arguments => [:year], :name => "Lundi du Jeûne fédéral", :regions => [:ch_vd]}, + {:function => "ch_ge_jeune_genevois(year)", :function_arguments => [:year], :name => "Jeûne genevois", :regions => [:ch_ge]}], + 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:ch]}, + {:mday => 2, :name => "Berchtoldstag", :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]}, + {:mday => 6, :name => "Dreikönigstag", :regions => [:ch_ur, :ch_sz, :ch_ti]}], + 3 => [{:mday => 1, :name => "Instauration de la République", :regions => [:ch_ne]}, + {:mday => 19, :name => "Josephstag", :regions => [:ch_ur, :ch_sz, :ch_nw, :ch_ti, :ch_vs]}], + 4 => [{:function => "ch_gl_naefelser_fahrt(year)", :function_arguments => [:year], :name => "Näfelser Fahrt", :regions => [:ch_gl]}], + 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:ch_zh, :ch_bs, :ch_bl, :ch_sh, :ch_ag, :ch_tg, :ch_ti, :ch_ne, :ch_ju]}], + 6 => [{:mday => 23, :name => "Commémoration du plébiscite jurassien", :regions => [:ch_ju]}, + {:mday => 29, :name => "San Pietro e Paolo", :regions => [:ch_ti]}], + 8 => [{:mday => 1, :name => "Bundesfeiertag", :regions => [:ch]}, + {:mday => 15, :name => "Mariä Himmelfahrt", :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]}], + 9 => [{:mday => 22, :name => "Mauritiustag", :regions => [:ch_ai]}, + {:mday => 25, :name => "Bruderklausenfest", :regions => [:ch_ow]}], + 11 => [{:function => "ch_be_zibelemaerit(year)", :function_arguments => [:year], :name => "Zibelemärit", :regions => [:ch_be]}, + {:mday => 1, :name => "Allerheiligen", :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]}], + 12 => [{:mday => 8, :name => "Maria Empfängnis", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_ai, :ch_ag, :ch_ti, :ch_vs]}, + {:mday => 25, :name => "Weihnachten", :regions => [:ch]}, + {:mday => 26, :name => "Stefanstag", :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]}, + {:mday => 31, :name => "Restauration de la République", :regions => [:ch_ge]}] + } + end + + def self.custom_methods + { + "ch_vd_lundi_du_jeune_federal(year)" => Proc.new { |year| +date = Date.civil(year,9,1) +# Find the first Sunday of September +until date.wday.eql? 0 do + date += 1 +end +# There are 15 days between the first Sunday +# and the Monday after the third Sunday +date + 15 +}, + +"ch_ge_jeune_genevois(year)" => Proc.new { |year| +date = Date.civil(year,9,1) +# Find the first Sunday of September +until date.wday.eql? 0 do + date += 1 +end +# Thursday is four days after Sunday +date + 4 +}, + +"ch_gl_naefelser_fahrt(year)" => Proc.new { |year| +date = Date.civil(year,4,1) +# Find the first Thursday of April +until date.wday.eql? 4 do + date += 1 +end + +if date.eql?(Holidays::Factory::DateCalculator::Easter::Gregorian.easter_calculator.calculate_easter_for(year)-3) + date += 7 +end +date +}, + +"ch_be_zibelemaerit(year)" => Proc.new { |year| +date = Date.civil(year,11,1) +# Find the first Monday of November +until date.wday.eql? 1 do + date += 1 +end +# There are 21 days between the first monday +# and the 4rth Monday after +date + 21 +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/cl.rb b/vendor/holidays/lib/generated_definitions/cl.rb new file mode 100644 index 00000000..bf36efe3 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/cl.rb @@ -0,0 +1,71 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/cl.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module CL # :nodoc: + def self.defined_regions + [:cl] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:cl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Sábado Santo", :regions => [:cl]}, + {:function => "st_peter_st_paul_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "San Pedro y San Pablo", :regions => [:cl]}, + {:function => "other_churches_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2008 },:name => "Día de las Iglesias Evangélicas y Protestantes", :regions => [:cl]}], + 1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:cl]}], + 5 => [{:mday => 1, :name => "Día del Trabajo", :regions => [:cl]}, + {:mday => 21, :name => "Día de las Glorias Navales", :regions => [:cl]}], + 6 => [{:mday => 29, :year_ranges => { :until => 1999 },:name => "San Pedro y San Pablo", :regions => [:cl]}], + 7 => [{:mday => 16, :name => "Día de la Virgen del Carmen", :regions => [:cl]}], + 8 => [{:mday => 15, :name => "Asunción de la Virgen", :regions => [:cl]}], + 9 => [{:mday => 18, :name => "Independencia Nacional", :regions => [:cl]}, + {:mday => 19, :name => "Día de las Glorias del Ejército", :regions => [:cl]}], + 10 => [{:mday => 12, :year_ranges => { :until => 1999 },:name => "Encuentro de Dos Mundos", :regions => [:cl]}, + {:function => "columbus_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "Encuentro de Dos Mundos", :regions => [:cl]}], + 11 => [{:mday => 1, :name => "Día de Todos los Santos", :regions => [:cl]}], + 12 => [{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:cl]}, + {:mday => 25, :name => "Navidad", :regions => [:cl]}] + } + end + + def self.custom_methods + { + "st_peter_st_paul_cl(year)" => Proc.new { |year| +date = Date.civil(year, 6, 29) +if [2,3,4].include?(date.wday) + date -= (date.wday - 1) +elsif date.wday == 5 + date += 3 +end +date +}, + +"columbus_day_cl(year)" => Proc.new { |year| +date = Date.civil(year, 10, 12) +if [2,3,4].include?(date.wday) + date -= (date.wday - 1) +elsif date.wday == 5 + date += 3 +end +date +}, + +"other_churches_day_cl(year)" => Proc.new { |year| +date = Date.civil(year, 10, 31) +if date.wday == 2 + date -= 4 +elsif date.wday == 3 + date += 2 +end +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/co.rb b/vendor/holidays/lib/generated_definitions/co.rb new file mode 100644 index 00000000..cc1bc05e --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/co.rb @@ -0,0 +1,121 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/co.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module CO # :nodoc: + def self.defined_regions + [:co] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 43, :name => "Día de la Ascensión", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 64, :name => "Corpus Christi", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 71, :name => "Sagrado Corazón", :regions => [:co]}], + 1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:co]}, + {:function => "epiphany(year)", :function_arguments => [:year], :name => "Día de los Reyes Magos", :regions => [:co]}], + 3 => [{:function => "saint_josephs_day(year)", :function_arguments => [:year], :name => "Día de San José", :regions => [:co]}], + 5 => [{:mday => 1, :name => "Día del Trabajo", :regions => [:co]}], + 6 => [{:function => "saint_peter_and_saint_paul(year)", :function_arguments => [:year], :name => "San Pedro y San Pablo", :regions => [:co]}], + 7 => [{:mday => 20, :name => "Día de la Independencia", :regions => [:co]}], + 8 => [{:mday => 7, :name => "Batalla de Boyacá", :regions => [:co]}, + {:function => "assumption_of_mary(year)", :function_arguments => [:year], :name => "La Asunción de la Virgen", :regions => [:co]}], + 10 => [{:function => "columbus_day(year)", :function_arguments => [:year], :name => "Día de la Raza", :regions => [:co]}], + 11 => [{:function => "all_saints_day(year)", :function_arguments => [:year], :name => "Día de Todos los Santos", :regions => [:co]}, + {:function => "independence_of_cartagena(year)", :function_arguments => [:year], :name => "Independencia de Cartagena", :regions => [:co]}], + 12 => [{:mday => 8, :name => "Día de la Inmaculada Concepción", :regions => [:co]}, + {:mday => 25, :name => "Navidad", :regions => [:co]}] + } + end + + def self.custom_methods + { + "to_following_monday_if_not_monday(date)" => Proc.new { |date| +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"epiphany(year)" => Proc.new { |year| +date = Date.civil( year, 1, 6 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"saint_josephs_day(year)" => Proc.new { |year| +date = Date.civil( year, 3, 19 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"saint_peter_and_saint_paul(year)" => Proc.new { |year| +date = Date.civil( year, 6, 29 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"assumption_of_mary(year)" => Proc.new { |year| +date = Date.civil( year, 8, 15 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"columbus_day(year)" => Proc.new { |year| +date = Date.civil( year, 10, 12 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"all_saints_day(year)" => Proc.new { |year| +date = Date.civil( year, 11, 1 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"independence_of_cartagena(year)" => Proc.new { |year| +date = Date.civil( year, 11, 11 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/cr.rb b/vendor/holidays/lib/generated_definitions/cr.rb new file mode 100644 index 00000000..274e8449 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/cr.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/cr.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module CR # :nodoc: + def self.defined_regions + [:cr] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:cr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:cr]}], + 1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:cr]}], + 4 => [{:mday => 11, :name => "Día de Juan Santamaría", :regions => [:cr]}], + 5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:cr]}], + 7 => [{:mday => 25, :name => "Día de la Anexión de Guanacaste", :regions => [:cr]}], + 8 => [{:mday => 2, :name => "Día de la Virgen de los Angeles", :regions => [:cr]}, + {:mday => 15, :name => "Día de la Madre", :regions => [:cr]}], + 9 => [{:mday => 15, :name => "Día de la Independencia", :regions => [:cr]}], + 10 => [{:mday => 12, :name => "Día de las Culturas", :regions => [:cr]}], + 12 => [{:mday => 25, :name => "Navidad", :regions => [:cr]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/cz.rb b/vendor/holidays/lib/generated_definitions/cz.rb new file mode 100644 index 00000000..a2120051 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/cz.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/cz.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module CZ # :nodoc: + def self.defined_regions + [:cz] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Velký pátek", :regions => [:cz]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Velikonoční pondělí", :regions => [:cz]}], + 1 => [{:mday => 1, :name => "Den obnovy samostatného českého státu", :regions => [:cz]}], + 5 => [{:mday => 1, :name => "Svátek práce", :regions => [:cz]}, + {:mday => 8, :name => "Den vítězství", :regions => [:cz]}], + 7 => [{:mday => 5, :name => "Den slovanských věrozvěstů Cyrila a Metoděje", :regions => [:cz]}, + {:mday => 6, :name => "Den upálení mistra Jana Husa", :regions => [:cz]}], + 9 => [{:mday => 28, :name => "Den české státnosti", :regions => [:cz]}], + 10 => [{:mday => 28, :name => "Den vzniku samostatného československého státu", :regions => [:cz]}], + 11 => [{:mday => 17, :name => "Den boje za svobodu a demokracii", :regions => [:cz]}], + 12 => [{:mday => 24, :name => "Štědrý den", :regions => [:cz]}, + {:mday => 25, :name => "1. svátek vánoční", :regions => [:cz]}, + {:mday => 26, :name => "2. svátek vánoční", :regions => [:cz]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/de.rb b/vendor/holidays/lib/generated_definitions/de.rb new file mode 100644 index 00000000..0270b1d6 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/de.rb @@ -0,0 +1,62 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/de.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module DE # :nodoc: + def self.defined_regions + [:de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath, :de_sn, :de_st, :de_be, :de_by_cath, :de_by_augsburg, :de_bb, :de_mv, :de_th, :de_hb, :de_hh, :de_ni, :de_sh] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Karfreitag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Ostersonntag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Christi Himmelfahrt", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :type => :informal, :name => "Pfingstsonntag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -52, :type => :informal, :name => "Weiberfastnacht", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :type => :informal, :name => "Rosenmontag", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :type => :informal, :name => "Aschermittwoch", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}], + 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:de]}, + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by, :de_st]}], + 3 => [{:mday => 8, :year_ranges => { :from => 2019 },:name => "Internationaler Frauentag", :regions => [:de_be]}], + 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:de]}, + {:mday => 8, :year_ranges => { :limited => [2020] },:name => "Tag der Befreiung", :regions => [:de_be]}], + 8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by_cath, :de_by_augsburg, :de_sl]}, + {:mday => 8, :name => "Friedensfest", :regions => [:de_by_augsburg]}], + 10 => [{:mday => 3, :name => "Tag der Deutschen Einheit", :regions => [:de]}, + {:mday => 31, :name => "Reformationstag", :regions => [:de_bb, :de_mv, :de_sn, :de_st, :de_th]}, + {:mday => 31, :type => :informal, :name => "Reformationstag", :regions => [:de_bw]}, + {:mday => 31, :year_ranges => { :limited => [2017] },:name => "Reformationstag", :regions => [:de]}, + {:mday => 31, :year_ranges => { :from => 2018 },:name => "Reformationstag", :regions => [:de_hb, :de_hh, :de_ni, :de_sh]}], + 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:de_bw, :de_by, :de_nw, :de_rp, :de_sl]}, + {:function => "de_buss_und_bettag(year)", :function_arguments => [:year], :name => "Buß- und Bettag", :regions => [:de_sn]}], + 12 => [{:mday => 24, :type => :informal, :name => "Heilig Abend", :regions => [:de]}, + {:mday => 25, :name => "1. Weihnachtstag", :regions => [:de]}, + {:mday => 26, :name => "2. Weihnachtstag", :regions => [:de]}, + {:mday => 31, :type => :informal, :name => "Silvester", :regions => [:de]}] + } + end + + def self.custom_methods + { + "de_buss_und_bettag(year)" => Proc.new { |year| +date = Date.civil(year,11,23) +if date.wday > 3 + date -= (date.wday - 3) +else + date -= (date.wday + 4) +end +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/dk.rb b/vendor/holidays/lib/generated_definitions/dk.rb new file mode 100644 index 00000000..de237014 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/dk.rb @@ -0,0 +1,48 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/dk.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module DK # :nodoc: + def self.defined_regions + [:dk] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -49, :type => :informal, :name => "Fastelavn", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :type => :informal, :name => "Palmesøndag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skærtorsdag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Påskedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 26, :name => "Store Bededag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pinsedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. Pinsedag", :regions => [:dk]}], + 1 => [{:mday => 1, :name => "Nytårsdag", :regions => [:dk]}], + 4 => [{:mday => 1, :type => :informal, :name => "1. april", :regions => [:dk]}, + {:mday => 9, :type => :informal, :name => "Danmarks besættelse", :regions => [:dk]}, + {:mday => 16, :type => :informal, :name => "Dronningens fødselsdag", :regions => [:dk]}], + 5 => [{:mday => 1, :type => :informal, :name => "Arbejdernes kampdag", :regions => [:dk]}, + {:mday => 5, :type => :informal, :name => "Danmarks befrielse", :regions => [:dk]}], + 6 => [{:mday => 5, :type => :informal, :name => "Grundlovsdag", :regions => [:dk]}, + {:mday => 15, :type => :informal, :name => "Valdemarsdag og Genforeningsdag", :regions => [:dk]}, + {:mday => 23, :type => :informal, :name => "Sankt Hans aften", :regions => [:dk]}], + 11 => [{:mday => 10, :type => :informal, :name => "Mortensaften", :regions => [:dk]}], + 12 => [{:mday => 13, :type => :informal, :name => "Sankt Lucia", :regions => [:dk]}, + {:mday => 24, :type => :informal, :name => "Juleaftensdag", :regions => [:dk]}, + {:mday => 25, :name => "1. juledag", :regions => [:dk]}, + {:mday => 26, :name => "2. juledag", :regions => [:dk]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ecbtarget.rb b/vendor/holidays/lib/generated_definitions/ecbtarget.rb new file mode 100644 index 00000000..360b52c6 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ecbtarget.rb @@ -0,0 +1,30 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ecbtarget.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module ECBTARGET # :nodoc: + def self.defined_regions + [:ecbtarget] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ecbtarget]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:ecbtarget]}], + 1 => [{:mday => 1, :name => "New Year's Day", :regions => [:ecbtarget]}], + 5 => [{:mday => 1, :name => "Labour Day", :regions => [:ecbtarget]}], + 12 => [{:mday => 25, :name => "Christmas Day", :regions => [:ecbtarget]}, + {:mday => 26, :name => "Christmas Holiday", :regions => [:ecbtarget]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ee.rb b/vendor/holidays/lib/generated_definitions/ee.rb new file mode 100644 index 00000000..07dcad08 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ee.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ee.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module EE # :nodoc: + def self.defined_regions + [:ee] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "suur reede", :regions => [:ee]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "ülestõusmispühade 1. püha", :regions => [:ee]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "nelipühade 1. püha", :regions => [:ee]}], + 1 => [{:mday => 1, :name => "uusaasta", :regions => [:ee]}], + 2 => [{:mday => 24, :name => "iseseisvuspäev", :regions => [:ee]}], + 5 => [{:mday => 1, :name => "kevadpüha", :regions => [:ee]}], + 6 => [{:mday => 23, :name => "võidupüha ja jaanilaupäev", :regions => [:ee]}, + {:mday => 24, :name => "jaanipäev", :regions => [:ee]}], + 8 => [{:mday => 20, :name => "taasiseseisvumispäev", :regions => [:ee]}], + 12 => [{:mday => 24, :name => "jõululaupäev", :regions => [:ee]}, + {:mday => 25, :name => "esimene jõulupüha", :regions => [:ee]}, + {:mday => 26, :name => "teine jõulupüha", :regions => [:ee]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/el.rb b/vendor/holidays/lib/generated_definitions/el.rb new file mode 100644 index 00000000..e84b2592 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/el.rb @@ -0,0 +1,38 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/el.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module EL # :nodoc: + def self.defined_regions + [:el] + end + + def self.holidays_by_month + { + 0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Μεγάλη Παρασκευή", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Μεγάλο Σάββατο", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Κυριακή του Πάσχα", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Δευτέρα του Πάσχα", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Καθαρά Δευτέρα", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Αγίου Πνεύματος", :regions => [:el]}], + 1 => [{:mday => 1, :name => "Πρωτοχρονιά", :regions => [:el]}, + {:mday => 6, :name => "Θεοφάνεια", :regions => [:el]}], + 3 => [{:mday => 25, :name => "Επέτειος της Επανάστασης του 1821", :regions => [:el]}], + 5 => [{:mday => 1, :name => "Πρωτομαγιά", :regions => [:el]}], + 8 => [{:mday => 15, :name => "Κοίμηση της Θεοτόκου", :regions => [:el]}], + 10 => [{:mday => 28, :name => "Επέτειος του Όχι", :regions => [:el]}], + 12 => [{:mday => 25, :name => "Χριστούγεννα", :regions => [:el]}, + {:mday => 26, :name => "Δεύτερη ημέρα των Χριστουγέννων", :regions => [:el]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/es.rb b/vendor/holidays/lib/generated_definitions/es.rb new file mode 100644 index 00000000..9db77c79 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/es.rb @@ -0,0 +1,56 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/es.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module ES # :nodoc: + def self.defined_regions + [:es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:es]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lunes de Pascua", :regions => [:es_pv, :es_ct, :es_na, :es_v, :es_vc]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lunes de Pascua Granada", :regions => [:es_ct]}], + 1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Año Nuevo", :regions => [:es]}, + {:mday => 6, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Reyes", :regions => [:es]}], + 2 => [{:mday => 28, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Andalucía", :regions => [:es_an]}], + 3 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de las Islas Baleares", :regions => [:es_ib]}, + {:mday => 19, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "San José", :regions => [:es_v, :es_vc, :es_cm, :es_mu, :es_m]}], + 4 => [{:mday => 23, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Castilla y León", :regions => [:es_cl]}, + {:mday => 23, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "San Jorge, Día de Aragón", :regions => [:es_ar]}], + 5 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día del Trabajador", :regions => [:es]}, + {:mday => 2, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Fiesta de la Comunidad", :regions => [:es_m]}, + {:mday => 30, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de las Canarias", :regions => [:es_cn]}, + {:mday => 31, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Región Castilla-La Mancha", :regions => [:es_cm]}], + 6 => [{:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Región de Murcia", :regions => [:es_mu]}, + {:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de La Rioja", :regions => [:es_lo]}, + {:mday => 24, :name => "San Juan", :regions => [:es_ct, :es_vc]}], + 7 => [{:mday => 23, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Santiago Apostol", :regions => [:es_ga]}], + 8 => [{:mday => 15, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Asunción", :regions => [:es]}], + 9 => [{:mday => 2, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Ceuta", :regions => [:es_ce]}, + {:mday => 8, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Asturias", :regions => [:es_o]}, + {:mday => 8, :name => "Día de Extremadura", :regions => [:es_ex]}, + {:mday => 11, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Fiesta Nacional de Cataluña", :regions => [:es_ct]}, + {:mday => 24, :name => "La Mercè", :regions => [:es_ct]}], + 10 => [{:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Valencia", :regions => [:es_vc, :es_v]}, + {:mday => 12, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Hispanidad", :regions => [:es]}], + 11 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Todos los Santos", :regions => [:es]}], + 12 => [{:mday => 6, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Constitución", :regions => [:es]}, + {:mday => 8, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Inmaculada Concepción", :regions => [:es]}, + {:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Navidad del Señor", :regions => [:es]}, + {:mday => 26, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "San Esteban", :regions => [:es_ib, :es_ct]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/europe.rb b/vendor/holidays/lib/generated_definitions/europe.rb new file mode 100644 index 00000000..2913c024 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/europe.rb @@ -0,0 +1,622 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/at.yaml, definitions/be_fr.yaml, definitions/be_nl.yaml, definitions/ch.yaml, definitions/cz.yaml, definitions/dk.yaml, definitions/de.yaml, definitions/el.yaml, definitions/es.yaml, definitions/fr.yaml, definitions/gb.yaml, definitions/hr.yaml, definitions/hu.yaml, definitions/ie.yaml, definitions/is.yaml, definitions/it.yaml, definitions/li.yaml, definitions/lt.yaml, definitions/lv.yaml, definitions/nl.yaml, definitions/no.yaml, definitions/pl.yaml, definitions/pt.yaml, definitions/ro.yaml, definitions/sk.yaml, definitions/si.yaml, definitions/bg.yaml, definitions/ua.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module EUROPE # :nodoc: + def self.defined_regions + [:at, :be_fr, :be_nl, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch, :cz, :dk, :de, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath, :de_sn, :de_st, :de_be, :de_by_cath, :de_by_augsburg, :de_bb, :de_mv, :de_th, :de_hb, :de_hh, :de_ni, :de_sh, :el, :es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :es, :es_ct, :es_v, :es_vc, :fr_a, :fr_m, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy, :gb_sct, :gb_con, :im, :gb_iom, :hr, :hu, :ie, :is, :it, :it_ve, :it_tv, :it_vr, :it_pd, :it_fi, :it_ge, :it_to, :it_rm, :it_vi, :it_bl, :it_ro, :li, :lt, :lv, :nl, :no, :pl, :pt, :pt_li, :pt_po, :ro, :sk, :si, :bg_en, :bg_bg, :ua] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :regions => [:at]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Christi Himmelfahrt", :regions => [:at]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :regions => [:at]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :regions => [:at]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pâques", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lundi de Pâques", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Ascension", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pentecôte", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lundi de Pentecôte", :regions => [:be_fr]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pasen", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Paasmaandag", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "O.H. Hemelvaart", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pinksteren", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pinkstermaandag", :regions => [:be_nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Karfreitag", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Auffahrt", :regions => [:ch]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :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]}, + {:function => "ch_vd_lundi_du_jeune_federal(year)", :function_arguments => [:year], :name => "Lundi du Jeûne fédéral", :regions => [:ch_vd]}, + {:function => "ch_ge_jeune_genevois(year)", :function_arguments => [:year], :name => "Jeûne genevois", :regions => [:ch_ge]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Velký pátek", :regions => [:cz]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Velikonoční pondělí", :regions => [:cz]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -49, :type => :informal, :name => "Fastelavn", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :type => :informal, :name => "Palmesøndag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skærtorsdag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Påskedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 26, :name => "Store Bededag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pinsedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. Pinsedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Karfreitag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Ostersonntag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Christi Himmelfahrt", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :type => :informal, :name => "Pfingstsonntag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :regions => [:de]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -52, :type => :informal, :name => "Weiberfastnacht", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :type => :informal, :name => "Rosenmontag", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :type => :informal, :name => "Aschermittwoch", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Μεγάλη Παρασκευή", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Μεγάλο Σάββατο", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Κυριακή του Πάσχα", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Δευτέρα του Πάσχα", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Καθαρά Δευτέρα", :regions => [:el]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Αγίου Πνεύματος", :regions => [:el]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:es_pv, :es_na, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:es]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lunes de Pascua", :regions => [:es_pv, :es_ct, :es_na, :es_v, :es_vc]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lunes de Pascua Granada", :regions => [:es_ct]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Vendredi saint", :regions => [:fr_a, :fr_m]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Pâques", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lundi de Pâques", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Ascension", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :type => :informal, :name => "Pentecôte", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lundi de Pentecôte", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:gb]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:gb]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Uskrs", :regions => [:hr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Uskrsni ponedjeljak", :regions => [:hr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Tijelovo", :regions => [:hr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :year_ranges => { :from => 2017 },:name => "Nagypéntek", :regions => [:hu]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Húsvéthétfő", :regions => [:hu]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pünkösdhétfő", :regions => [:hu]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:ie]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Bolludagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Sprengidagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :name => "Öskudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :name => "Pálmasunnudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skírdagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Föstudaginn langi", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Páskadagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Annar í páskum", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Uppstigningardagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Hvítasunnudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Annar í hvítasunnu", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pasqua", :regions => [:it]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lunedì dell'Angelo", :regions => [:it]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Fasnachtsdienstag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Karfreitag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Ostern", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Auffahrt", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Šv. Velykos", :regions => [:lt]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Antroji Velykų diena", :regions => [:lt]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Lielā Piektdiena", :regions => [:lv]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pirmās Lieldienas", :regions => [:lv]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Otrās Lieldienas", :regions => [:lv]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Vasarsvētki", :regions => [:lv]}, + {:function => "lv_song_and_dance_festival_end_date(year)", :function_arguments => [:year], :year_ranges => { :from => 2018 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", :regions => [:lv]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Goede Vrijdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Eerste Paasdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Tweede Paasdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Hemelvaartsdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Eerste Pinksterdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Tweede Pinksterdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -49, :type => :informal, :name => "Fastelavn", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :name => "Palmesøndag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skjærtorsdag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "1. påskedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "1. pinsedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. pinsedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -52, :type => :informal, :name => "Tłusty Czwartek", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :type => :informal, :name => "Ostatki", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :type => :informal, :name => "Środa Popielcowa", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :type => :informal, :name => "Niedziela Palmowa", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :type => :informal, :name => "Wielki Czwartek", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Wielki Piątek", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :type => :informal, :name => "Wielka Sobota", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Niedziela Wielkanocna", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Poniedziałek Wielkanocny (Lany Poniedziałek)", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Zesłanie Ducha Świętego (Zielone Świątki)", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :type => :informal, :name => "Carnaval", :regions => [:pt]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Sexta-feira Santa", :regions => [:pt]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Páscoa", :regions => [:pt]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Corpo de Deus", :regions => [:pt]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :year_ranges => { :from => 2018 },:name => "Paștele - Vinerea Mare", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Paștele - duminică", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Paștele - luni", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Rusaliile - 50", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Rusaliile - 51", :regions => [:ro]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Veľkonočný pondelok", :regions => [:sk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Veľký piatok", :regions => [:sk]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "velikonočna nedelja", :regions => [:si]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "velikonočni ponedeljek", :regions => [:si]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "binkošti", :regions => [:si]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:bg_en]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Разпети петък", :regions => [:bg_bg]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Holy Saturday", :regions => [:bg_en]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Велика събота", :regions => [:bg_bg]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:bg_en]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :name => "Възкресение Христово. Великден", :regions => [:bg_bg, :bg_bg]}, + {:function => "orthodox_easter_julian(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:bg_en]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Великдень", :regions => [:ua]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 49, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Трійця", :regions => [:ua]}], + 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:at]}, + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:at]}, + {:mday => 1, :name => "Jour de l'an", :regions => [:be_fr]}, + {:mday => 1, :name => "Nieuwjaar", :regions => [:be_nl]}, + {:mday => 1, :name => "Neujahrstag", :regions => [:ch]}, + {:mday => 2, :name => "Berchtoldstag", :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]}, + {:mday => 6, :name => "Dreikönigstag", :regions => [:ch_ur, :ch_sz, :ch_ti]}, + {:mday => 1, :name => "Den obnovy samostatného českého státu", :regions => [:cz]}, + {:mday => 1, :name => "Nytårsdag", :regions => [:dk]}, + {:mday => 1, :name => "Neujahrstag", :regions => [:de]}, + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by, :de_st]}, + {:mday => 1, :name => "Πρωτοχρονιά", :regions => [:el]}, + {:mday => 6, :name => "Θεοφάνεια", :regions => [:el]}, + {:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Año Nuevo", :regions => [:es]}, + {:mday => 6, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Reyes", :regions => [:es]}, + {:mday => 1, :name => "Jour de l'an", :regions => [:fr]}, + {:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:gb]}, + {:mday => 2, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "2nd January", :regions => [:gb_sct]}, + {:mday => 1, :name => "Nova godina", :regions => [:hr]}, + {:mday => 6, :name => "Bogojavljenje ili Sveta tri kralja", :regions => [:hr]}, + {:mday => 1, :name => "Újév", :regions => [:hu]}, + {:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ie]}, + {:mday => 1, :name => "Nýársdagur", :regions => [:is]}, + {:mday => 6, :name => "Þrettándinn", :regions => [:is]}, + {:mday => 19, :type => :informal, :name => "Bóndadagur", :regions => [:is]}, + {:mday => 1, :name => "Capodanno", :regions => [:it]}, + {:mday => 6, :name => "Epifania", :regions => [:it]}, + {:mday => 1, :name => "Neujahrstag", :regions => [:li]}, + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:li]}, + {:mday => 1, :name => "Naujieji metai", :regions => [:lt]}, + {:mday => 1, :name => "Jaungada diena", :regions => [:lv]}, + {:mday => 1, :name => "Nieuwjaarsdag", :regions => [:nl]}, + {:mday => 1, :name => "Nyttårsdag", :regions => [:no]}, + {:mday => 1, :name => "Nowy Rok", :regions => [:pl]}, + {:function => "pl_trzech_kroli(year)", :function_arguments => [:year], :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]}, + {:function => "pl_trzech_kroli_informal(year)", :function_arguments => [:year], :type => :informal, :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]}, + {:mday => 21, :type => :informal, :name => "Dzień Babci", :regions => [:pl]}, + {:mday => 22, :type => :informal, :name => "Dzień Dziadka", :regions => [:pl]}, + {:mday => 1, :name => "Ano Novo", :regions => [:pt]}, + {:mday => 1, :name => "Anul nou", :regions => [:ro]}, + {:mday => 2, :name => "Anul nou", :regions => [:ro]}, + {:mday => 24, :year_ranges => { :from => 2017 },:name => "Unirea Principatelor Române", :regions => [:ro]}, + {:mday => 1, :name => "Nový rok", :regions => [:sk]}, + {:mday => 6, :name => "Zjavenie Pána (Traja králi)", :regions => [:sk]}, + {:mday => 1, :name => "novo leto", :regions => [:si]}, + {:mday => 1, :name => "New Year's Day", :regions => [:bg_en]}, + {:mday => 1, :name => "Нова година", :regions => [:bg_bg]}, + {:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Новий Рік", :regions => [:ua]}, + {:mday => 7, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Різдво Христове", :regions => [:ua]}], + 5 => [{:mday => 1, :name => "Staatsfeiertag", :regions => [:at]}, + {:mday => 1, :name => "Fête du travail", :regions => [:be_fr]}, + {:mday => 1, :name => "Feest van de Arbeid", :regions => [:be_nl]}, + {:mday => 1, :name => "Tag der Arbeit", :regions => [:ch_zh, :ch_bs, :ch_bl, :ch_sh, :ch_ag, :ch_tg, :ch_ti, :ch_ne, :ch_ju]}, + {:mday => 1, :name => "Svátek práce", :regions => [:cz]}, + {:mday => 8, :name => "Den vítězství", :regions => [:cz]}, + {:mday => 1, :type => :informal, :name => "Arbejdernes kampdag", :regions => [:dk]}, + {:mday => 5, :type => :informal, :name => "Danmarks befrielse", :regions => [:dk]}, + {:mday => 1, :name => "Tag der Arbeit", :regions => [:de]}, + {:mday => 8, :year_ranges => { :limited => [2020] },:name => "Tag der Befreiung", :regions => [:de_be]}, + {:mday => 1, :name => "Πρωτομαγιά", :regions => [:el]}, + {:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día del Trabajador", :regions => [:es]}, + {:mday => 2, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Fiesta de la Comunidad", :regions => [:es_m]}, + {:mday => 30, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de las Canarias", :regions => [:es_cn]}, + {:mday => 31, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Región Castilla-La Mancha", :regions => [:es_cm]}, + {:mday => 1, :name => "Fête du travail", :regions => [:fr]}, + {:mday => 8, :name => "Victoire 1945", :regions => [:fr]}, + {:wday => 1, :week => 1, :year_ranges => { :until => 2019 },:name => "May Day", :regions => [:gb]}, + {:mday => 8, :year_ranges => { :limited => [2020] },:name => "May Day", :regions => [:gb]}, + {:wday => 1, :week => 1, :year_ranges => { :from => 2021 },:name => "May Day", :regions => [:gb]}, + {:mday => 9, :name => "Liberation Day", :regions => [:je, :gb_jsy, :gg, :gb_gsy]}, + {:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:gb]}, + {:mday => 1, :name => "Praznik rada", :regions => [:hr]}, + {:mday => 30, :year_ranges => { :from => 2020 },:name => "Dan državnosti", :regions => [:hr]}, + {:mday => 1, :name => "A munka ünnepe", :regions => [:hu]}, + {:wday => 1, :week => 1, :name => "May Day", :regions => [:ie]}, + {:mday => 1, :name => "Verkalýðsdagurinn", :regions => [:is]}, + {:mday => 13, :name => "Mæðradagurinn", :regions => [:is]}, + {:mday => 1, :name => "Festa dei Lavoratori", :regions => [:it]}, + {:mday => 21, :name => "Festa di San Zeno", :regions => [:it_vr]}, + {:mday => 1, :name => "Tag der Arbeit", :regions => [:li]}, + {:mday => 1, :name => "Darbininkų diena", :regions => [:lt]}, + {:mday => 1, :name => "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", :regions => [:lv]}, + {:mday => 4, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Latvijas Republikas Neatkarības atjaunošanas diena", :regions => [:lv]}, + {:wday => 0, :week => 2, :name => "Mātes diena", :regions => [:lv]}, + {:mday => 4, :type => :informal, :name => "Dodenherdenking", :regions => [:nl]}, + {:mday => 5, :name => "Bevrijdingsdag", :regions => [:nl]}, + {:mday => 1, :name => "1. mai", :regions => [:no]}, + {:mday => 17, :name => "17. mai", :regions => [:no]}, + {:mday => 1, :name => "Święto Państwowe (Święto Pracy)", :regions => [:pl]}, + {:mday => 2, :type => :informal, :name => "Dzień Flagi Rzeczpospolitej Polskiej", :regions => [:pl]}, + {:mday => 3, :name => "Święto Narodowe Trzeciego Maja", :regions => [:pl]}, + {:mday => 1, :name => "Dia do Trabalhador", :regions => [:pt]}, + {:mday => 1, :name => "Ziua muncii", :regions => [:ro]}, + {:mday => 1, :name => "Sviatok práce", :regions => [:sk]}, + {:mday => 8, :name => "Deň víťazstva nad fašizmom", :regions => [:sk]}, + {:mday => 1, :name => "praznik dela", :regions => [:si]}, + {:mday => 2, :name => "praznik dela", :regions => [:si]}, + {:mday => 1, :name => "Labour Day", :regions => [:bg_en]}, + {:mday => 1, :name => "Ден на труда", :regions => [:bg_bg]}, + {:mday => 6, :name => "St. George's Day", :regions => [:bg_en]}, + {:mday => 6, :name => "Гергьовден. Ден на храбростта", :regions => [:bg_bg]}, + {:mday => 24, :name => "Slavic Literacy Day", :regions => [:bg_en]}, + {:mday => 24, :name => "Ден на славянската писменост", :regions => [:bg_bg]}, + {:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День праці", :regions => [:ua]}, + {:mday => 2, :year_ranges => { :until => 2017 },:name => "День міжнародної солідарності трудящих", :regions => [:ua]}, + {:mday => 9, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День перемоги над нацизмом у Другій світовій війні", :regions => [:ua]}], + 8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:at]}, + {:mday => 15, :name => "Assomption", :regions => [:be_fr]}, + {:mday => 15, :name => "O.L.V. Hemelvaart", :regions => [:be_nl]}, + {:mday => 1, :name => "Bundesfeiertag", :regions => [:ch]}, + {:mday => 15, :name => "Mariä Himmelfahrt", :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]}, + {:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by_cath, :de_by_augsburg, :de_sl]}, + {:mday => 8, :name => "Friedensfest", :regions => [:de_by_augsburg]}, + {:mday => 15, :name => "Κοίμηση της Θεοτόκου", :regions => [:el]}, + {:mday => 15, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Asunción", :regions => [:es]}, + {:mday => 15, :name => "Assomption", :regions => [:fr]}, + {:wday => 1, :week => 1, :name => "Bank Holiday", :regions => [:gb_sct]}, + {:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy]}, + {:mday => 5, :name => "Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja", :regions => [:hr]}, + {:mday => 15, :name => "Velika Gospa", :regions => [:hr]}, + {:mday => 20, :name => "Az államalapítás ünnepe", :regions => [:hu]}, + {:wday => 1, :week => 1, :name => "August Bank Holiday", :regions => [:ie]}, + {:wday => 1, :week => 1, :name => "Frídagur verslunarmanna", :regions => [:is]}, + {:mday => 15, :name => "Assunzione", :regions => [:it]}, + {:mday => 15, :name => "Staatsfeiertag", :regions => [:li]}, + {:mday => 15, :name => "Žolinė", :regions => [:lt]}, + {:mday => 15, :name => "Wniebowzięcie Najświętszej Maryi Panny", :regions => [:pl]}, + {:mday => 15, :name => "Święto Wojska Polskiego", :regions => [:pl]}, + {:mday => 15, :name => "Assunção de Nossa Senhora", :regions => [:pt]}, + {:mday => 15, :name => "Adormirea Maicii Domnului", :regions => [:ro]}, + {:mday => 29, :name => "Výročie Slovenského národného povstania", :regions => [:sk]}, + {:mday => 15, :name => "Marijino vnebovzetje", :regions => [:si]}, + {:mday => 24, :year_ranges => { :from => 1992 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День Незалежності", :regions => [:ua]}], + 10 => [{:mday => 26, :name => "Nationalfeiertag", :regions => [:at]}, + {:mday => 28, :name => "Den vzniku samostatného československého státu", :regions => [:cz]}, + {:mday => 3, :name => "Tag der Deutschen Einheit", :regions => [:de]}, + {:mday => 31, :name => "Reformationstag", :regions => [:de_bb, :de_mv, :de_sn, :de_st, :de_th]}, + {:mday => 31, :type => :informal, :name => "Reformationstag", :regions => [:de_bw]}, + {:mday => 31, :year_ranges => { :limited => [2017] },:name => "Reformationstag", :regions => [:de]}, + {:mday => 31, :year_ranges => { :from => 2018 },:name => "Reformationstag", :regions => [:de_hb, :de_hh, :de_ni, :de_sh]}, + {:mday => 28, :name => "Επέτειος του Όχι", :regions => [:el]}, + {:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Valencia", :regions => [:es_vc, :es_v]}, + {:mday => 12, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Hispanidad", :regions => [:es]}, + {:mday => 8, :year_ranges => { :until => 2019 },:name => "Dan neovisnosti", :regions => [:hr]}, + {:mday => 23, :name => "1956-os forradalom és szabadságharc ünnepe", :regions => [:hu]}, + {:wday => 1, :week => -1, :name => "October Bank Holiday", :regions => [:ie]}, + {:mday => 14, :type => :informal, :name => "Dzień Nauczyciela (Dzień Edukacji Narodowej)", :regions => [:pl]}, + {:mday => 5, :name => "Dia da República", :regions => [:pt]}, + {:mday => 31, :name => "dan reformacije", :regions => [:si]}, + {:mday => 14, :year_ranges => { :from => 2015 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День захисника України", :regions => [:ua]}], + 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:at]}, + {:mday => 1, :name => "Toussaint", :regions => [:be_fr]}, + {:mday => 11, :name => "Armistice 1918", :regions => [:be_fr]}, + {:mday => 1, :name => "Allerheiligen", :regions => [:be_nl]}, + {:mday => 11, :name => "Wapenstilstand 1918", :regions => [:be_nl]}, + {:function => "ch_be_zibelemaerit(year)", :function_arguments => [:year], :name => "Zibelemärit", :regions => [:ch_be]}, + {:mday => 1, :name => "Allerheiligen", :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]}, + {:mday => 17, :name => "Den boje za svobodu a demokracii", :regions => [:cz]}, + {:mday => 10, :type => :informal, :name => "Mortensaften", :regions => [:dk]}, + {:mday => 1, :name => "Allerheiligen", :regions => [:de_bw, :de_by, :de_nw, :de_rp, :de_sl]}, + {:function => "de_buss_und_bettag(year)", :function_arguments => [:year], :name => "Buß- und Bettag", :regions => [:de_sn]}, + {:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Todos los Santos", :regions => [:es]}, + {:mday => 1, :name => "Toussaint", :regions => [:fr]}, + {:mday => 11, :name => "Armistice 1918", :regions => [:fr]}, + {:mday => 5, :type => :informal, :name => "Guy Fawkes Day", :regions => [:gb]}, + {:mday => 30, :year_ranges => { :until => 2006 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "St. Andrew's Day", :regions => [:gb_sct]}, + {:mday => 30, :year_ranges => { :from => 2007 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Andrew's Day", :regions => [:gb_sct]}, + {:mday => 1, :name => "Svi sveti", :regions => [:hr]}, + {:mday => 18, :year_ranges => { :from => 2020 },:name => "Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje", :regions => [:hr]}, + {:mday => 1, :name => "Mindenszentek", :regions => [:hu]}, + {:mday => 16, :name => "Dagur íslenskrar tungu", :regions => [:is]}, + {:mday => 1, :name => "Ognissanti", :regions => [:it]}, + {:mday => 11, :name => "Festa di San Martino", :regions => [:it_bl]}, + {:mday => 26, :name => "Festa di San Bellino", :regions => [:it_ro]}, + {:mday => 1, :name => "Allerheiligen", :regions => [:li]}, + {:mday => 1, :name => "Visų šventųjų diena", :regions => [:lt]}, + {:mday => 18, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Latvijas Republikas Proklamēšanas diena", :regions => [:lv]}, + {:mday => 1, :name => "Wszystkich Świętych", :regions => [:pl]}, + {:mday => 2, :type => :informal, :name => "Dzień Zaduszny", :regions => [:pl]}, + {:mday => 11, :name => "Narodowe Święto Niepodległości", :regions => [:pl]}, + {:mday => 29, :type => :informal, :name => "Andrzejki", :regions => [:pl]}, + {:mday => 1, :name => "Dia de Todos-os-Santos", :regions => [:pt]}, + {:mday => 30, :name => "Sfântul Apostol Andrei", :regions => [:ro]}, + {:mday => 1, :name => "Sviatok všetkých svätých", :regions => [:sk]}, + {:mday => 17, :name => "Deň boja za slobodu a demokraciu", :regions => [:sk]}, + {:mday => 1, :name => "dan spomina na mrtve", :regions => [:si]}, + {:mday => 1, :name => "Revival Leader's Day", :regions => [:bg_en]}, + {:mday => 1, :name => "Ден на Народните будители", :regions => [:bg_bg]}], + 12 => [{:mday => 8, :name => "Mariä Empfängnis", :regions => [:at]}, + {:mday => 25, :name => "1. Weihnachtstag", :regions => [:at]}, + {:mday => 26, :name => "2. Weihnachtstag", :regions => [:at]}, + {:mday => 25, :name => "Noël", :regions => [:be_fr]}, + {:mday => 25, :name => "Kerstmis", :regions => [:be_nl]}, + {:mday => 8, :name => "Maria Empfängnis", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_ai, :ch_ag, :ch_ti, :ch_vs]}, + {:mday => 25, :name => "Weihnachten", :regions => [:ch]}, + {:mday => 26, :name => "Stefanstag", :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]}, + {:mday => 31, :name => "Restauration de la République", :regions => [:ch_ge]}, + {:mday => 24, :name => "Štědrý den", :regions => [:cz]}, + {:mday => 25, :name => "1. svátek vánoční", :regions => [:cz]}, + {:mday => 26, :name => "2. svátek vánoční", :regions => [:cz]}, + {:mday => 13, :type => :informal, :name => "Sankt Lucia", :regions => [:dk]}, + {:mday => 24, :type => :informal, :name => "Juleaftensdag", :regions => [:dk]}, + {:mday => 25, :name => "1. juledag", :regions => [:dk]}, + {:mday => 26, :name => "2. juledag", :regions => [:dk]}, + {:mday => 24, :type => :informal, :name => "Heilig Abend", :regions => [:de]}, + {:mday => 25, :name => "1. Weihnachtstag", :regions => [:de]}, + {:mday => 26, :name => "2. Weihnachtstag", :regions => [:de]}, + {:mday => 31, :type => :informal, :name => "Silvester", :regions => [:de]}, + {:mday => 25, :name => "Χριστούγεννα", :regions => [:el]}, + {:mday => 26, :name => "Δεύτερη ημέρα των Χριστουγέννων", :regions => [:el]}, + {:mday => 6, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Constitución", :regions => [:es]}, + {:mday => 8, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Inmaculada Concepción", :regions => [:es]}, + {:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Navidad del Señor", :regions => [:es]}, + {:mday => 26, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "San Esteban", :regions => [:es_ib, :es_ct]}, + {:mday => 25, :name => "Noël", :regions => [:fr]}, + {:mday => 26, :name => "Saint-Étienne", :regions => [:fr_a, :fr_m]}, + {:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:gb]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:gb]}, + {:mday => 25, :name => "Božić", :regions => [:hr]}, + {:mday => 26, :name => "Sveti Stjepan", :regions => [:hr]}, + {:mday => 25, :name => "Karácsony", :regions => [:hu]}, + {:mday => 26, :name => "Karácsony", :regions => [:hu]}, + {:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ie]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "St. Stephen's Day", :regions => [:ie]}, + {:mday => 24, :name => "Jól", :regions => [:is]}, + {:mday => 25, :name => "Jól", :regions => [:is]}, + {:mday => 26, :name => "Jól", :regions => [:is]}, + {:mday => 31, :name => "Gamlárskvöld", :regions => [:is]}, + {:mday => 8, :name => "Immacolata Concezione", :regions => [:it]}, + {:mday => 25, :name => "Natale", :regions => [:it]}, + {:mday => 26, :name => "Santo Stefano", :regions => [:it]}, + {:mday => 8, :name => "Maria Empfängnis", :regions => [:li]}, + {:mday => 24, :name => "Heilig Abend", :regions => [:li]}, + {:mday => 25, :name => "Weihnachten", :regions => [:li]}, + {:mday => 26, :name => "Stefanstag", :regions => [:li]}, + {:mday => 31, :name => "Silvester", :regions => [:li]}, + {:mday => 24, :name => "Šv. Kūčios", :regions => [:lt]}, + {:mday => 25, :name => "Šv. Kalėdos", :regions => [:lt]}, + {:mday => 26, :name => "Antroji Kalėdų diena", :regions => [:lt]}, + {:mday => 24, :name => "Ziemassvētku vakars", :regions => [:lv]}, + {:mday => 25, :name => "Pirmie Ziemassvētki", :regions => [:lv]}, + {:mday => 26, :name => "Otrie Ziemassvētki", :regions => [:lv]}, + {:mday => 31, :name => "Vecgada diena", :regions => [:lv]}, + {:mday => 5, :type => :informal, :name => "Sinterklaas", :regions => [:nl]}, + {:mday => 25, :name => "Eerste Kerstdag", :regions => [:nl]}, + {:mday => 26, :name => "Tweede Kerstdag", :regions => [:nl]}, + {:mday => 24, :type => :informal, :name => "Julaften", :regions => [:no]}, + {:mday => 25, :name => "1. juledag", :regions => [:no]}, + {:mday => 26, :name => "2. juledag", :regions => [:no]}, + {:mday => 31, :type => :informal, :name => "Nyttårsaften", :regions => [:no]}, + {:mday => 4, :type => :informal, :name => "Barbórka (Dzień Górnika, Naftowca i Gazownika)", :regions => [:pl]}, + {:mday => 6, :type => :informal, :name => "Mikołajki", :regions => [:pl]}, + {:mday => 24, :type => :informal, :name => "Wigilia Bożego Narodzenia", :regions => [:pl]}, + {:mday => 25, :name => "pierwszy dzień Bożego Narodzenia", :regions => [:pl]}, + {:mday => 26, :name => "drugi dzień Bożego Narodzenia", :regions => [:pl]}, + {:mday => 31, :type => :informal, :name => "Sylwester", :regions => [:pl]}, + {:mday => 1, :name => "Restauração da Independência", :regions => [:pt]}, + {:mday => 8, :name => "Imaculada Conceição", :regions => [:pt]}, + {:mday => 25, :name => "Natal", :regions => [:pt]}, + {:mday => 1, :name => "Ziua Națională", :regions => [:ro]}, + {:mday => 25, :name => "Sărbătoarea Nașterii Domnului", :regions => [:ro]}, + {:mday => 26, :name => "Sărbătoarea Nașterii Domnului", :regions => [:ro]}, + {:mday => 24, :name => "Štedrý deň", :regions => [:sk]}, + {:mday => 25, :name => "1. sviatok vianočný", :regions => [:sk]}, + {:mday => 26, :name => "2. sviatok vianočný", :regions => [:sk]}, + {:mday => 25, :name => "božič", :regions => [:si]}, + {:mday => 26, :name => "dan samostojnosti in enotnosti", :regions => [:si]}, + {:mday => 24, :name => "Christmas Eve", :regions => [:bg_en]}, + {:mday => 24, :name => "Бъдни вечер", :regions => [:bg_bg]}, + {:mday => 25, :name => "Christmas", :regions => [:bg_en]}, + {:mday => 25, :name => "Рождество Христово. Коледа", :regions => [:bg_bg]}, + {:mday => 26, :name => "Christmas", :regions => [:bg_en]}, + {:mday => 26, :name => "Рождество Христово. Коледа", :regions => [:bg_bg]}, + {:mday => 25, :year_ranges => { :from => 2017 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Різдво Христове", :regions => [:ua]}], + 7 => [{:mday => 21, :name => "Fête nationale", :regions => [:be_fr]}, + {:mday => 21, :name => "Nationale Feestdag", :regions => [:be_nl]}, + {:mday => 5, :name => "Den slovanských věrozvěstů Cyrila a Metoděje", :regions => [:cz]}, + {:mday => 6, :name => "Den upálení mistra Jana Husa", :regions => [:cz]}, + {:mday => 23, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Santiago Apostol", :regions => [:es_ga]}, + {:mday => 14, :name => "Fête nationale", :regions => [:fr]}, + {:mday => 5, :name => "Tynwald Day", :regions => [:im, :gb_iom]}, + {:mday => 12, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Battle of the Boyne", :regions => [:gb_nir]}, + {:mday => 6, :name => "Valstybės diena", :regions => [:lt]}, + {:mday => 5, :name => "Sviatok svätého Cyrila a svätého Metoda", :regions => [:sk]}, + {:mday => 16, :year_ranges => { :limited => [1991] },:name => "День Незалежності України", :regions => [:ua]}], + 3 => [{:mday => 1, :name => "Instauration de la République", :regions => [:ch_ne]}, + {:mday => 19, :name => "Josephstag", :regions => [:ch_ur, :ch_sz, :ch_nw, :ch_ti, :ch_vs]}, + {:mday => 8, :year_ranges => { :from => 2019 },:name => "Internationaler Frauentag", :regions => [:de_be]}, + {:mday => 25, :name => "Επέτειος της Επανάστασης του 1821", :regions => [:el]}, + {:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de las Islas Baleares", :regions => [:es_ib]}, + {:mday => 19, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "San José", :regions => [:es_v, :es_vc, :es_cm, :es_mu, :es_m]}, + {:mday => 5, :name => "St. Piran's Day", :regions => [:gb_con]}, + {:mday => 17, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Patrick's Day", :regions => [:gb_nir]}, + {:mday => 15, :name => "1848/49-es forradalom és szabadságharc ünnepe", :regions => [:hu]}, + {:mday => 17, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Patrick's Day", :regions => [:ie]}, + {:mday => 19, :name => "St. Josef", :regions => [:li]}, + {:mday => 11, :name => "Nepriklausomybės atkūrimo diena", :regions => [:lt]}, + {:mday => 8, :type => :informal, :name => "Dzień Kobiet", :regions => [:pl]}, + {:mday => 10, :type => :informal, :name => "Dzień Mężczyzn", :regions => [:pl]}, + {:mday => 3, :name => "Liberation Day", :regions => [:bg_en]}, + {:mday => 3, :name => "Освобожението на България", :regions => [:bg_bg]}, + {:mday => 8, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Міжнародний жіночий день", :regions => [:ua]}], + 4 => [{:function => "ch_gl_naefelser_fahrt(year)", :function_arguments => [:year], :name => "Näfelser Fahrt", :regions => [:ch_gl]}, + {:mday => 1, :type => :informal, :name => "1. april", :regions => [:dk]}, + {:mday => 9, :type => :informal, :name => "Danmarks besættelse", :regions => [:dk]}, + {:mday => 16, :type => :informal, :name => "Dronningens fødselsdag", :regions => [:dk]}, + {:mday => 23, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Castilla y León", :regions => [:es_cl]}, + {:mday => 23, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "San Jorge, Día de Aragón", :regions => [:es_ar]}, + {:function => "is_sumardagurinn_fyrsti(year)", :function_arguments => [:year], :name => "Sumardagurinn fyrsti", :regions => [:is]}, + {:mday => 25, :name => "Festa della Liberazione", :regions => [:it]}, + {:mday => 25, :name => "Festa di San Marco Evangelista", :regions => [:it_ve]}, + {:mday => 27, :name => "Festa di San Liberale", :regions => [:it_tv]}, + {:mday => 27, :name => "Koningsdag", :regions => [:nl]}, + {:mday => 1, :type => :informal, :name => "Prima Aprilis", :regions => [:pl]}, + {:mday => 22, :type => :informal, :name => "Międzynarodowy Dzień Ziemi", :regions => [:pl]}, + {:mday => 25, :name => "Dia da Liberdade", :regions => [:pt]}, + {:mday => 27, :name => "dan upora proti okupatorju", :regions => [:si]}], + 6 => [{:mday => 23, :name => "Commémoration du plébiscite jurassien", :regions => [:ch_ju]}, + {:mday => 29, :name => "San Pietro e Paolo", :regions => [:ch_ti]}, + {:mday => 5, :type => :informal, :name => "Grundlovsdag", :regions => [:dk]}, + {:mday => 15, :type => :informal, :name => "Valdemarsdag og Genforeningsdag", :regions => [:dk]}, + {:mday => 23, :type => :informal, :name => "Sankt Hans aften", :regions => [:dk]}, + {:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de la Región de Murcia", :regions => [:es_mu]}, + {:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de La Rioja", :regions => [:es_lo]}, + {:mday => 24, :name => "San Juan", :regions => [:es_ct, :es_vc]}, + {:mday => 22, :name => "Dan antifašističke borbe", :regions => [:hr]}, + {:mday => 25, :year_ranges => { :until => 2019 },:name => "Dan državnosti", :regions => [:hr]}, + {:wday => 1, :week => 1, :name => "June Bank Holiday", :regions => [:ie]}, + {:mday => 3, :type => :informal, :name => "Sjómannadagurinn", :regions => [:is]}, + {:mday => 17, :name => "Lýðveldisdagurinn", :regions => [:is]}, + {:mday => 2, :name => "Festa della Repubblica", :regions => [:it]}, + {:mday => 13, :name => "Festa di Sant'Antonio di Padova", :regions => [:it_pd]}, + {:mday => 24, :name => "Festa di San Giovanni Battista", :regions => [:it_fi, :it_ge, :it_to]}, + {:mday => 29, :name => "Festa di San Pietro e Paolo", :regions => [:it_rm]}, + {:mday => 24, :name => "Joninės", :regions => [:lt]}, + {:mday => 23, :name => "Līgo diena", :regions => [:lv]}, + {:mday => 24, :name => "Jāņu diena", :regions => [:lv]}, + {:mday => 23, :type => :informal, :name => "Dzień Ojca", :regions => [:pl]}, + {:mday => 10, :name => "Dia de Portugal", :regions => [:pt]}, + {:mday => 13, :name => "Dia de Santo António", :regions => [:pt_li]}, + {:mday => 24, :name => "Dia de São João", :regions => [:pt_po]}, + {:mday => 1, :year_ranges => { :from => 2017 },:name => "Ziua Copilului", :regions => [:ro]}, + {:mday => 25, :name => "dan državnosti", :regions => [:si]}, + {:mday => 28, :year_ranges => { :from => 1997 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День Конституції", :regions => [:ua]}], + 9 => [{:mday => 22, :name => "Mauritiustag", :regions => [:ch_ai]}, + {:mday => 25, :name => "Bruderklausenfest", :regions => [:ch_ow]}, + {:mday => 28, :name => "Den české státnosti", :regions => [:cz]}, + {:mday => 2, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Ceuta", :regions => [:es_ce]}, + {:mday => 8, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Asturias", :regions => [:es_o]}, + {:mday => 8, :name => "Día de Extremadura", :regions => [:es_ex]}, + {:mday => 11, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Fiesta Nacional de Cataluña", :regions => [:es_ct]}, + {:mday => 24, :name => "La Mercè", :regions => [:es_ct]}, + {:mday => 8, :name => "Festa della Madonna di Monte Berico", :regions => [:it_vi]}, + {:mday => 8, :name => "Maria Geburt", :regions => [:li]}, + {:mday => 24, :year_ranges => { :limited => [2018] },:name => "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena", :regions => [:lv]}, + {:mday => 30, :type => :informal, :name => "Dzień Chłopaka", :regions => [:pl]}, + {:mday => 1, :name => "Deň Ústavy Slovenskej republiky", :regions => [:sk]}, + {:mday => 15, :name => "Sedembolestná Panna Mária", :regions => [:sk]}, + {:mday => 6, :name => "Unification Day", :regions => [:bg_en]}, + {:mday => 6, :name => "Ден на Съединението", :regions => [:bg_bg]}, + {:mday => 22, :name => "The Independence Day", :regions => [:bg_en]}, + {:mday => 22, :name => "Ден на Независимостта", :regions => [:bg_bg]}], + 2 => [{:mday => 28, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de Andalucía", :regions => [:es_an]}, + {:mday => 18, :type => :informal, :name => "Konudagur", :regions => [:is]}, + {:mday => 2, :name => "Maria Lichtmess", :regions => [:li]}, + {:mday => 16, :name => "Valstybės atkūrimo diena", :regions => [:lt]}, + {:mday => 2, :type => :informal, :name => "Ofiarowanie Pańskie (Matki Boskiej Gromnicznej)", :regions => [:pl]}, + {:mday => 14, :type => :informal, :name => "Dzień Zakochanych (Walentynki)", :regions => [:pl]}, + {:mday => 8, :name => "Prešernov dan, slovenski kulturni praznik", :regions => [:si]}] + } + end + + def self.custom_methods + { + "ch_vd_lundi_du_jeune_federal(year)" => Proc.new { |year| +date = Date.civil(year,9,1) +# Find the first Sunday of September +until date.wday.eql? 0 do + date += 1 +end +# There are 15 days between the first Sunday +# and the Monday after the third Sunday +date + 15 +}, + +"ch_ge_jeune_genevois(year)" => Proc.new { |year| +date = Date.civil(year,9,1) +# Find the first Sunday of September +until date.wday.eql? 0 do + date += 1 +end +# Thursday is four days after Sunday +date + 4 +}, + +"ch_gl_naefelser_fahrt(year)" => Proc.new { |year| +date = Date.civil(year,4,1) +# Find the first Thursday of April +until date.wday.eql? 4 do + date += 1 +end + +if date.eql?(Holidays::Factory::DateCalculator::Easter::Gregorian.easter_calculator.calculate_easter_for(year)-3) + date += 7 +end +date +}, + +"ch_be_zibelemaerit(year)" => Proc.new { |year| +date = Date.civil(year,11,1) +# Find the first Monday of November +until date.wday.eql? 1 do + date += 1 +end +# There are 21 days between the first monday +# and the 4rth Monday after +date + 21 +}, + +"de_buss_und_bettag(year)" => Proc.new { |year| +date = Date.civil(year,11,23) +if date.wday > 3 + date -= (date.wday - 3) +else + date -= (date.wday + 4) +end +date +}, + +"is_sumardagurinn_fyrsti(year)" => Proc.new { |year| +date = Date.civil(year,4,18) +if date.wday < 4 + date += (4 - date.wday) +else + date += (11 - date.wday) +end +date +}, + +"lv_song_and_dance_festival_end_date(year)" => Proc.new { |year| +case year +when 2018 + # https://likumi.lv/ta/id/281541 (Ministru kabineta rīkojums Nr. 252 "Par XXVI Vispārējo latviešu dziesmu un XVI Deju svētku norises laiku") + Date.new(2018, 7, 8) +when 2023 + # Event's period/next year is known, but precise dates aren't. + # Previously, dates were announced 2 years ahead, so at ~2021-05 this method would need to be revisited. +end +}, + +"pl_trzech_kroli(year)" => Proc.new { |year| +year >= 2011 ? 6 : nil +}, + +"pl_trzech_kroli_informal(year)" => Proc.new { |year| +year < 2011 ? 6 : nil +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/federalreserve.rb b/vendor/holidays/lib/generated_definitions/federalreserve.rb new file mode 100644 index 00000000..11a07bc7 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/federalreserve.rb @@ -0,0 +1,34 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/federalreserve.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module FEDERALRESERVE # :nodoc: + def self.defined_regions + [:federalreserve] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:federalreserve]}, + {:wday => 1, :week => 3, :name => "Birthday of Martin Luther King, Jr", :regions => [:federalreserve]}], + 2 => [{:wday => 1, :week => 3, :name => "Washington's Birthday", :regions => [:federalreserve]}], + 5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:federalreserve]}], + 7 => [{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:federalreserve]}], + 9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:federalreserve]}], + 10 => [{:wday => 1, :week => 2, :name => "Columbus Day", :regions => [:federalreserve]}], + 11 => [{:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:federalreserve]}, + {:wday => 4, :week => 4, :name => "Thanksgiving Day", :regions => [:federalreserve]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:federalreserve]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/federalreservebanks.rb b/vendor/holidays/lib/generated_definitions/federalreservebanks.rb new file mode 100644 index 00000000..677d885c --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/federalreservebanks.rb @@ -0,0 +1,34 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/federalreservebanks.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module FEDERALRESERVEBANKS # :nodoc: + def self.defined_regions + [:federalreservebanks] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:federalreservebanks]}, + {:wday => 1, :week => 3, :name => "Birthday of Martin Luther King, Jr", :regions => [:federalreservebanks]}], + 2 => [{:wday => 1, :week => 3, :name => "Washington's Birthday", :regions => [:federalreservebanks]}], + 5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:federalreservebanks]}], + 7 => [{:mday => 4, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:federalreservebanks]}], + 9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:federalreservebanks]}], + 10 => [{:wday => 1, :week => 2, :name => "Columbus Day", :regions => [:federalreservebanks]}], + 11 => [{:mday => 11, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:federalreservebanks]}, + {:wday => 4, :week => 4, :name => "Thanksgiving Day", :regions => [:federalreservebanks]}], + 12 => [{:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:federalreservebanks]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/fedex.rb b/vendor/holidays/lib/generated_definitions/fedex.rb new file mode 100644 index 00000000..3ae5a66c --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/fedex.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/fedex.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module FEDEX # :nodoc: + def self.defined_regions + [:fedex] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:fedex]}], + 5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:fedex]}], + 7 => [{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:fedex]}], + 9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:fedex]}], + 11 => [{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:fedex]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Day After Thanksgiving", :regions => [:fedex]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:fedex]}, + {:mday => 31, :name => "New Year's Eve", :regions => [:fedex]}] + } + end + + def self.custom_methods + { + "day_after_thanksgiving(year)" => Proc.new { |year| +Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1 +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/fi.rb b/vendor/holidays/lib/generated_definitions/fi.rb new file mode 100644 index 00000000..d89a88dd --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/fi.rb @@ -0,0 +1,61 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/fi.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module FI # :nodoc: + def self.defined_regions + [:fi] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Pitkäperjantai", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pääsiäispäivä", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. Pääsiäispäivä", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Helatorstai", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Helluntaipäivä", :regions => [:fi]}, + {:function => "fi_pyhainpaiva(year)", :function_arguments => [:year], :name => "Pyhäinpäivä", :regions => [:fi]}], + 1 => [{:mday => 1, :name => "Uudenvuodenpäivä", :regions => [:fi]}, + {:mday => 6, :name => "Loppiainen", :regions => [:fi]}], + 5 => [{:mday => 1, :name => "Vappu", :regions => [:fi]}], + 6 => [{:function => "fi_juhannusaatto(year)", :function_arguments => [:year], :name => "Juhannusaatto", :regions => [:fi]}, + {:function => "fi_juhannuspaiva(year)", :function_arguments => [:year], :name => "Juhannuspäivä", :regions => [:fi]}], + 12 => [{:mday => 6, :name => "Itsenäisyyspäivä", :regions => [:fi]}, + {:mday => 24, :name => "Jouluaatto", :regions => [:fi]}, + {:mday => 25, :name => "Joulupäivä", :regions => [:fi]}, + {:mday => 26, :name => "Tapaninpäivä", :regions => [:fi]}] + } + end + + def self.custom_methods + { + "fi_juhannusaatto(year)" => Proc.new { |year| +date = Date.civil(year,6,19) +if date.wday > 5 #if 19.6 is saturday + date += 6 +else + date += (5 - date.wday) +end +date +}, + +"fi_juhannuspaiva(year)" => Proc.new { |year| +date = Date.civil(year,6,20) +date += (6 - date.wday) +date +}, + +"fi_pyhainpaiva(year)" => Proc.new { |year| +date = Date.civil(year,10,31) +date += (6 - date.wday) +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/fr.rb b/vendor/holidays/lib/generated_definitions/fr.rb new file mode 100644 index 00000000..f56c8509 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/fr.rb @@ -0,0 +1,39 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/fr.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module FR # :nodoc: + def self.defined_regions + [:fr_a, :fr_m, :fr] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Vendredi saint", :regions => [:fr_a, :fr_m]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Pâques", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lundi de Pâques", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Ascension", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :type => :informal, :name => "Pentecôte", :regions => [:fr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Lundi de Pentecôte", :regions => [:fr]}], + 1 => [{:mday => 1, :name => "Jour de l'an", :regions => [:fr]}], + 5 => [{:mday => 1, :name => "Fête du travail", :regions => [:fr]}, + {:mday => 8, :name => "Victoire 1945", :regions => [:fr]}], + 7 => [{:mday => 14, :name => "Fête nationale", :regions => [:fr]}], + 8 => [{:mday => 15, :name => "Assomption", :regions => [:fr]}], + 11 => [{:mday => 1, :name => "Toussaint", :regions => [:fr]}, + {:mday => 11, :name => "Armistice 1918", :regions => [:fr]}], + 12 => [{:mday => 25, :name => "Noël", :regions => [:fr]}, + {:mday => 26, :name => "Saint-Étienne", :regions => [:fr_a, :fr_m]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/gb.rb b/vendor/holidays/lib/generated_definitions/gb.rb new file mode 100644 index 00000000..f54ba8e8 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/gb.rb @@ -0,0 +1,45 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/gb.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module GB # :nodoc: + def self.defined_regions + [:gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy, :gb_sct, :gb_con, :im, :gb_iom] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:gb]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:gb]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:gb]}, + {:mday => 2, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "2nd January", :regions => [:gb_sct]}], + 3 => [{:mday => 5, :name => "St. Piran's Day", :regions => [:gb_con]}, + {:mday => 17, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Patrick's Day", :regions => [:gb_nir]}], + 5 => [{:wday => 1, :week => 1, :year_ranges => { :until => 2019 },:name => "May Day", :regions => [:gb]}, + {:mday => 8, :year_ranges => { :limited => [2020] },:name => "May Day", :regions => [:gb]}, + {:wday => 1, :week => 1, :year_ranges => { :from => 2021 },:name => "May Day", :regions => [:gb]}, + {:mday => 9, :name => "Liberation Day", :regions => [:je, :gb_jsy, :gg, :gb_gsy]}, + {:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:gb]}], + 7 => [{:mday => 5, :name => "Tynwald Day", :regions => [:im, :gb_iom]}, + {:mday => 12, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Battle of the Boyne", :regions => [:gb_nir]}], + 8 => [{:wday => 1, :week => 1, :name => "Bank Holiday", :regions => [:gb_sct]}, + {:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:gb_eng, :gb_wls, :gb_eaw, :gb_nir, :je, :gb_jsy, :gg, :gb_gsy]}], + 11 => [{:mday => 5, :type => :informal, :name => "Guy Fawkes Day", :regions => [:gb]}, + {:mday => 30, :year_ranges => { :until => 2006 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "St. Andrew's Day", :regions => [:gb_sct]}, + {:mday => 30, :year_ranges => { :from => 2007 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Andrew's Day", :regions => [:gb_sct]}], + 12 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:gb]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:gb]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ge.rb b/vendor/holidays/lib/generated_definitions/ge.rb new file mode 100644 index 00000000..cff914de --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ge.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ge.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module GE # :nodoc: + def self.defined_regions + [:ge] + end + + def self.holidays_by_month + { + 0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "დიდი პარასკევი", :regions => [:ge]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "დიდი შაბათი", :regions => [:ge]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "ბრწყინვალე აღდგომის დღე", :regions => [:ge]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "მიცვალებულთა", :regions => [:ge]}], + 1 => [{:mday => 1, :name => "ახალი წელი", :regions => [:ge]}, + {:mday => 2, :name => "ბედობა", :regions => [:ge]}, + {:mday => 7, :name => "ქრისტეშობა", :regions => [:ge]}, + {:mday => 19, :name => "ნათლისღება", :regions => [:ge]}], + 3 => [{:mday => 3, :name => "დედის დღე", :regions => [:ge]}, + {:mday => 8, :name => "ქალთა საერთაშორისო დღე", :regions => [:ge]}], + 4 => [{:mday => 9, :name => "ეროვნული ერთიანობის დღე", :regions => [:ge]}], + 5 => [{:mday => 9, :name => "ფაშიზმზე გამარჯვების დღე", :regions => [:ge]}, + {:mday => 12, :name => "წმინდა მოციქულის ანდრია პირველწოდებულის საქართველოში შემოსვლის დღე", :regions => [:ge]}, + {:mday => 26, :name => "დამოუკიდებლობის დღე", :regions => [:ge]}], + 8 => [{:mday => 28, :name => "მარიამობა", :regions => [:ge]}], + 10 => [{:mday => 14, :name => "სვეტიცხოვლობა", :regions => [:ge]}], + 11 => [{:mday => 23, :name => "გიორგობა", :regions => [:ge]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/hk.rb b/vendor/holidays/lib/generated_definitions/hk.rb new file mode 100644 index 00000000..813ff826 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/hk.rb @@ -0,0 +1,106 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/hk.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module HK # :nodoc: + def self.defined_regions + [:hk] + end + + def self.holidays_by_month + { + 0 => [{:function => "cn_new_lunar_day(year)", :function_arguments => [:year], :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Lunar New Year's Day", :regions => [:hk]}, + {:function => "cn_new_lunar_day(year)", :function_arguments => [:year], :function_modifier => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "The second day of Lunar New Year", :regions => [:hk]}, + {:function => "cn_new_lunar_day(year)", :function_arguments => [:year], :function_modifier => 2, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "The third day of Lunar New Year", :regions => [:hk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:hk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "The day following Good Friday", :regions => [:hk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:hk]}], + 1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:hk]}], + 5 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Labour Day", :regions => [:hk]}], + 7 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Hong Kong Special Administrative Region Establishment Day", :regions => [:hk]}], + 10 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "National Day", :regions => [:hk]}], + 12 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:hk]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:hk]}] + } + end + + def self.custom_methods + { + "cn_new_lunar_day(year)" => Proc.new { |year| +month_day = case year + when 1930, 1949, 1987, 2025, 2063, 2082, 2101, 2112, 2131, 2150, 2207, 2245, 2253, 2283, 2321 + [1, 29] + when 1931, 1950, 1969, 1988, 2007, 2026, 2045, 2083, 2091, 2102, 2121, 2159, 2197, 2208, 2216, 2227, 2246, 2265, 2303, 2322, 2341, 2379 + [2, 17] + when 1932, 1951, 1970, 1989, 2027, 2046, 2114, 2179, 2198, 2209, 2247, 2266, 2304, 2323, 2342, 2361, 2399 + [2, 6] + when 1933, 2009, 2028, 2047, 2066, 2085, 2115, 2161, 2199, 2210, 2229, 2267, 2305, 2316, 2324, 2335, 2381 + [1, 26] + when 1934, 1953, 2037, 2048, 2067, 2086, 2105, 2116, 2181, 2189, 2211, 2257, 2268, 2306, 2325, 2336 + [2, 14] + when 1935, 1943, 1992, 2038, 2106, 2144, 2201, 2212, 2258, 2296, 2307, 2326, 2364 + [2, 4] + when 1936, 1955, 2001, 2039, 2058, 2088, 2107, 2164, 2183, 2221, 2259, 2278, 2308, 2327, 2373 + [1, 24] + when 1937, 1975, 2032, 2040, 2051, 2070, 2108, 2127, 2146, 2165, 2252, 2260, 2271, 2290, 2309, 2328, 2347, 2366 + [2, 11] + when 1938, 1957, 1976, 1995, 2014, 2033, 2071, 2109, 2128, 2185, 2272, 2291, 2329, 2348, 2367, 2386 + [1, 31] + when 1939, 1996, 2015, 2053, 2072, 2110, 2129, 2292, 2330, 2368, 2387 + [2, 19] + when 1940, 1959, 2016, 2035, 2081, 2130, 2149, 2187, 2206, 2225, 2236, 2255, 2312, 2350, 2358, 2369 + [2, 8] + when 1941, 1952, 1971, 1990, 2074, 2093, 2123, 2142, 2180, 2248, 2294, 2343, 2351, 2362 + [1, 27] + when 1942, 1961, 1972, 1991, 2056, 2075, 2094, 2124, 2143, 2200, 2276, 2295, 2344, 2363 + [2, 15] + when 1944, 1963, 1982, 2020, 2096, 2134, 2153, 2172, 2191, 2202, 2240, 2286, 2354, 2392 + [1, 25] + when 1945, 1964, 1983, 2010, 2029, 2162, 2192, 2230, 2249, 2317, 2382 + [2, 13] + when 1946, 2003, 2022, 2041, 2052, 2098, 2147, 2155, 2166, 2223, 2242, 2261, 2299, 2310, 2375, 2394 + [2, 1] + when 1947, 2004, 2042, 2050, 2080, 2118, 2137, 2194, 2270, 2289, 2300, 2338, 2376 + [1, 22] + when 1948, 1994, 2013, 2024, 2043, 2089, 2119, 2138, 2157, 2176, 2195, 2214, 2320, 2396 + [2, 10] + when 1954, 1973, 2011, 2057, 2068, 2087, 2125, 2163, 2231, 2277, 2288, 2345, 2383 + [2, 3] + when 1956, 2002, 2021, 2059, 2078, 2097, 2135, 2154, 2173, 2184, 2203, 2222, 2241, 2279, 2287, 2298, 2355, 2374, 2393 + [2, 12] + when 1958, 1977, 2034, 2140, 2178, 2235, 2254, 2273, 2311, 2349, 2360, 2398 + [2, 18] + when 1960, 1979, 1998, 2006, 2017, 2036, 2055, 2104, 2169, 2188, 2218, 2226, 2237, 2256, 2275, 2313, 2332, 2370, 2389 + [1, 28] + when 1962, 1981, 2000, 2019, 2065, 2076, 2084, 2095, 2133, 2152, 2171, 2190, 2220, 2239, 2285, 2315, 2334, 2353, 2372, 2391 + [2, 5] + when 1965, 1984, 2030, 2049, 2060, 2079, 2117, 2136, 2174, 2182, 2193, 2204, 2250, 2269, 2280, 2318, 2337, 2356 + [2, 2] + when 1966, 2023, 2061, 2099, 2186, 2262, 2281, 2357, 2395 + [1, 21] + when 1967, 1986, 2005, 2062, 2100, 2168, 2233, 2244, 2263, 2282, 2301, 2339, 2377, 2385, 2388 + [2, 9] + when 1968, 2044, 2090, 2120, 2139, 2158, 2177, 2196, 2215, 2234, 2264, 2302, 2340, 2359, 2378, 2397 + [1, 30] + when 1974, 1993, 2012, 2031, 2069, 2077, 2126, 2145, 2156, 2175, 2213, 2232, 2251, 2297, 2346, 2365, 2384 + [1, 23] + when 1978, 1997, 2008, 2054, 2073, 2092, 2103, 2111, 2122, 2141, 2160, 2217, 2228, 2274, 2293, 2331, 2380 + [2, 7] + when 1980, 1999, 2018, 2064, 2113, 2132, 2151, 2170, 2219, 2238, 2284, 2314, 2333, 2352, 2371, 2390 + [2, 16] + when 1985, 2148, 2167, 2205, 2224, 2243 + [2, 20] + when 2319 + [2, 21] + end +Date.civil(year, month_day[0], month_day[1]) +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/hr.rb b/vendor/holidays/lib/generated_definitions/hr.rb new file mode 100644 index 00000000..b4f5c916 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/hr.rb @@ -0,0 +1,40 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/hr.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module HR # :nodoc: + def self.defined_regions + [:hr] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :name => "Uskrs", :regions => [:hr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Uskrsni ponedjeljak", :regions => [:hr]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Tijelovo", :regions => [:hr]}], + 1 => [{:mday => 1, :name => "Nova godina", :regions => [:hr]}, + {:mday => 6, :name => "Bogojavljenje ili Sveta tri kralja", :regions => [:hr]}], + 5 => [{:mday => 1, :name => "Praznik rada", :regions => [:hr]}, + {:mday => 30, :year_ranges => { :from => 2020 },:name => "Dan državnosti", :regions => [:hr]}], + 6 => [{:mday => 22, :name => "Dan antifašističke borbe", :regions => [:hr]}, + {:mday => 25, :year_ranges => { :until => 2019 },:name => "Dan državnosti", :regions => [:hr]}], + 8 => [{:mday => 5, :name => "Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja", :regions => [:hr]}, + {:mday => 15, :name => "Velika Gospa", :regions => [:hr]}], + 10 => [{:mday => 8, :year_ranges => { :until => 2019 },:name => "Dan neovisnosti", :regions => [:hr]}], + 11 => [{:mday => 1, :name => "Svi sveti", :regions => [:hr]}, + {:mday => 18, :year_ranges => { :from => 2020 },:name => "Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje", :regions => [:hr]}], + 12 => [{:mday => 25, :name => "Božić", :regions => [:hr]}, + {:mday => 26, :name => "Sveti Stjepan", :regions => [:hr]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/hu.rb b/vendor/holidays/lib/generated_definitions/hu.rb new file mode 100644 index 00000000..5c8a8cc9 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/hu.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/hu.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module HU # :nodoc: + def self.defined_regions + [:hu] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :year_ranges => { :from => 2017 },:name => "Nagypéntek", :regions => [:hu]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Húsvéthétfő", :regions => [:hu]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pünkösdhétfő", :regions => [:hu]}], + 1 => [{:mday => 1, :name => "Újév", :regions => [:hu]}], + 3 => [{:mday => 15, :name => "1848/49-es forradalom és szabadságharc ünnepe", :regions => [:hu]}], + 5 => [{:mday => 1, :name => "A munka ünnepe", :regions => [:hu]}], + 8 => [{:mday => 20, :name => "Az államalapítás ünnepe", :regions => [:hu]}], + 10 => [{:mday => 23, :name => "1956-os forradalom és szabadságharc ünnepe", :regions => [:hu]}], + 11 => [{:mday => 1, :name => "Mindenszentek", :regions => [:hu]}], + 12 => [{:mday => 25, :name => "Karácsony", :regions => [:hu]}, + {:mday => 26, :name => "Karácsony", :regions => [:hu]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ie.rb b/vendor/holidays/lib/generated_definitions/ie.rb new file mode 100644 index 00000000..ad3d6208 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ie.rb @@ -0,0 +1,33 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ie.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module IE # :nodoc: + def self.defined_regions + [:ie] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:ie]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ie]}], + 3 => [{:mday => 17, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "St. Patrick's Day", :regions => [:ie]}], + 5 => [{:wday => 1, :week => 1, :name => "May Day", :regions => [:ie]}], + 6 => [{:wday => 1, :week => 1, :name => "June Bank Holiday", :regions => [:ie]}], + 8 => [{:wday => 1, :week => 1, :name => "August Bank Holiday", :regions => [:ie]}], + 10 => [{:wday => 1, :week => -1, :name => "October Bank Holiday", :regions => [:ie]}], + 12 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ie]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "St. Stephen's Day", :regions => [:ie]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/is.rb b/vendor/holidays/lib/generated_definitions/is.rb new file mode 100644 index 00000000..9cbc7719 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/is.rb @@ -0,0 +1,60 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/is.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module IS # :nodoc: + def self.defined_regions + [:is] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Bolludagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Sprengidagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :name => "Öskudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :name => "Pálmasunnudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skírdagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Föstudaginn langi", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Páskadagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Annar í páskum", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Uppstigningardagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Hvítasunnudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Annar í hvítasunnu", :regions => [:is]}], + 1 => [{:mday => 1, :name => "Nýársdagur", :regions => [:is]}, + {:mday => 6, :name => "Þrettándinn", :regions => [:is]}, + {:mday => 19, :type => :informal, :name => "Bóndadagur", :regions => [:is]}], + 2 => [{:mday => 18, :type => :informal, :name => "Konudagur", :regions => [:is]}], + 4 => [{:function => "is_sumardagurinn_fyrsti(year)", :function_arguments => [:year], :name => "Sumardagurinn fyrsti", :regions => [:is]}], + 5 => [{:mday => 1, :name => "Verkalýðsdagurinn", :regions => [:is]}, + {:mday => 13, :name => "Mæðradagurinn", :regions => [:is]}], + 6 => [{:mday => 3, :type => :informal, :name => "Sjómannadagurinn", :regions => [:is]}, + {:mday => 17, :name => "Lýðveldisdagurinn", :regions => [:is]}], + 8 => [{:wday => 1, :week => 1, :name => "Frídagur verslunarmanna", :regions => [:is]}], + 11 => [{:mday => 16, :name => "Dagur íslenskrar tungu", :regions => [:is]}], + 12 => [{:mday => 24, :name => "Jól", :regions => [:is]}, + {:mday => 25, :name => "Jól", :regions => [:is]}, + {:mday => 26, :name => "Jól", :regions => [:is]}, + {:mday => 31, :name => "Gamlárskvöld", :regions => [:is]}] + } + end + + def self.custom_methods + { + "is_sumardagurinn_fyrsti(year)" => Proc.new { |year| +date = Date.civil(year,4,18) +if date.wday < 4 + date += (4 - date.wday) +else + date += (11 - date.wday) +end +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/it.rb b/vendor/holidays/lib/generated_definitions/it.rb new file mode 100644 index 00000000..e87c536f --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/it.rb @@ -0,0 +1,45 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/it.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module IT # :nodoc: + def self.defined_regions + [:it, :it_ve, :it_tv, :it_vr, :it_pd, :it_fi, :it_ge, :it_to, :it_rm, :it_vi, :it_bl, :it_ro] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :name => "Pasqua", :regions => [:it]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Lunedì dell'Angelo", :regions => [:it]}], + 1 => [{:mday => 1, :name => "Capodanno", :regions => [:it]}, + {:mday => 6, :name => "Epifania", :regions => [:it]}], + 4 => [{:mday => 25, :name => "Festa della Liberazione", :regions => [:it]}, + {:mday => 25, :name => "Festa di San Marco Evangelista", :regions => [:it_ve]}, + {:mday => 27, :name => "Festa di San Liberale", :regions => [:it_tv]}], + 5 => [{:mday => 1, :name => "Festa dei Lavoratori", :regions => [:it]}, + {:mday => 21, :name => "Festa di San Zeno", :regions => [:it_vr]}], + 6 => [{:mday => 2, :name => "Festa della Repubblica", :regions => [:it]}, + {:mday => 13, :name => "Festa di Sant'Antonio di Padova", :regions => [:it_pd]}, + {:mday => 24, :name => "Festa di San Giovanni Battista", :regions => [:it_fi, :it_ge, :it_to]}, + {:mday => 29, :name => "Festa di San Pietro e Paolo", :regions => [:it_rm]}], + 8 => [{:mday => 15, :name => "Assunzione", :regions => [:it]}], + 9 => [{:mday => 8, :name => "Festa della Madonna di Monte Berico", :regions => [:it_vi]}], + 11 => [{:mday => 1, :name => "Ognissanti", :regions => [:it]}, + {:mday => 11, :name => "Festa di San Martino", :regions => [:it_bl]}, + {:mday => 26, :name => "Festa di San Bellino", :regions => [:it_ro]}], + 12 => [{:mday => 8, :name => "Immacolata Concezione", :regions => [:it]}, + {:mday => 25, :name => "Natale", :regions => [:it]}, + {:mday => 26, :name => "Santo Stefano", :regions => [:it]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/jp.rb b/vendor/holidays/lib/generated_definitions/jp.rb new file mode 100644 index 00000000..1c290e56 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/jp.rb @@ -0,0 +1,166 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/jp.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module JP # :nodoc: + def self.defined_regions + [:jp] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "元日", :regions => [:jp]}, + {:wday => 1, :week => 2, :name => "成人の日", :regions => [:jp]}, + {:mday => 1, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}], + 2 => [{:mday => 11, :name => "建国記念の日", :regions => [:jp]}, + {:mday => 11, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}, + {:mday => 23, :year_ranges => { :from => 2020 },:name => "天皇誕生日", :regions => [:jp]}, + {:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :year_ranges => { :from => 2020 },:name => "振替休日", :regions => [:jp]}], + 3 => [{:function => "jp_vernal_equinox_day(year)", :function_arguments => [:year], :name => "春分の日", :regions => [:jp]}, + {:function => "jp_vernal_equinox_day_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]}], + 4 => [{:mday => 29, :name => "昭和の日", :regions => [:jp]}, + {:mday => 29, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}, + {:mday => 30, :year_ranges => { :limited => [2019] },:name => "休日", :regions => [:jp]}], + 5 => [{:mday => 1, :year_ranges => { :limited => [2019] },:name => "天皇即位", :regions => [:jp]}, + {:mday => 2, :year_ranges => { :limited => [2019] },:name => "休日", :regions => [:jp]}, + {:mday => 3, :name => "憲法記念日", :regions => [:jp]}, + {:mday => 4, :name => "みどりの日", :regions => [:jp]}, + {:mday => 5, :name => "こどもの日", :regions => [:jp]}, + {:mday => 3, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}, + {:mday => 4, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}, + {:mday => 5, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}], + 7 => [{:mday => 20, :year_ranges => { :between => 1996..2002 },:name => "海の日", :regions => [:jp]}, + {:wday => 1, :week => 3, :year_ranges => { :between => 2003..2019 },:name => "海の日", :regions => [:jp]}, + {:mday => 23, :year_ranges => { :limited => [2020] },:name => "海の日", :regions => [:jp]}, + {:mday => 22, :year_ranges => { :limited => [2021] },:name => "海の日", :regions => [:jp]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2022 },:name => "海の日", :regions => [:jp]}, + {:function => "jp_marine_day_substitute(year)", :function_arguments => [:year], :year_ranges => { :between => 1996..2002 },:name => "振替休日", :regions => [:jp]}, + {:mday => 23, :year_ranges => { :limited => [2021] },:name => "スポーツの日", :regions => [:jp]}, + {:mday => 24, :year_ranges => { :limited => [2020] },:name => "スポーツの日", :regions => [:jp]}], + 8 => [{:function => "jp_mountain_holiday(year)", :function_arguments => [:year], :year_ranges => { :between => 2016..2019 },:name => "山の日", :regions => [:jp]}, + {:mday => 10, :year_ranges => { :limited => [2020] },:name => "山の日", :regions => [:jp]}, + {:mday => 8, :year_ranges => { :limited => [2021] },:name => "山の日", :regions => [:jp]}, + {:function => "jp_mountain_holiday(year)", :function_arguments => [:year], :year_ranges => { :from => 2022 },:name => "山の日", :regions => [:jp]}, + {:function => "jp_mountain_holiday_substitute(year)", :function_arguments => [:year], :year_ranges => { :between => 2016..2020 },:name => "振替休日", :regions => [:jp]}, + {:mday => 9, :year_ranges => { :limited => [2021] },:name => "振替休日", :regions => [:jp]}, + {:function => "jp_mountain_holiday_substitute(year)", :function_arguments => [:year], :year_ranges => { :from => 2022 },:name => "振替休日", :regions => [:jp]}], + 9 => [{:wday => 1, :week => 3, :name => "敬老の日", :regions => [:jp]}, + {:function => "jp_respect_for_aged_holiday_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]}, + {:function => "jp_citizens_holiday(year)", :function_arguments => [:year], :year_ranges => { :from => 2003 },:name => "国民の休日", :regions => [:jp]}, + {:function => "jp_national_culture_day(year)", :function_arguments => [:year], :name => "秋分の日", :regions => [:jp]}, + {:function => "jp_national_culture_day_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]}], + 10 => [{:wday => 1, :week => 2, :year_ranges => { :until => 2019 },:name => "体育の日", :regions => [:jp]}, + {:wday => 1, :week => 2, :year_ranges => { :from => 2022 },:name => "スポーツの日", :regions => [:jp]}, + {:function => "jp_health_sports_day_substitute(year)", :function_arguments => [:year], :name => "振替休日", :regions => [:jp]}, + {:mday => 22, :year_ranges => { :limited => [2019] },:name => "即位礼正殿の儀", :regions => [:jp]}], + 11 => [{:mday => 3, :name => "文化の日", :regions => [:jp]}, + {:mday => 3, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}, + {:mday => 23, :name => "勤労感謝の日", :regions => [:jp]}, + {:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :name => "振替休日", :regions => [:jp]}], + 12 => [{:mday => 23, :year_ranges => { :until => 2018 },:name => "天皇誕生日", :regions => [:jp]}, + {:mday => 23, :function => "jp_substitute_holiday(year, month, day)", :function_arguments => [:year, :month, :day], :year_ranges => { :until => 2018 },:name => "振替休日", :regions => [:jp]}] + } + end + + def self.custom_methods + { + "jp_health_sports_day_substitute(year)" => Proc.new { |year| +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)) +}, + +"jp_vernal_equinox_day(year)" => Proc.new { |year| +day = + case year + when 1851..1899 + 19.8277 + when 1900..1979 + 20.8357 + when 1980..2099 + 20.8431 + when 2100..2150 + 21.8510 + else + raise IndexError.new("Out of range") + end +day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor +day = day.floor +Date.civil(year, 3, day) +}, + +"jp_vernal_equinox_day_substitute(year)" => Proc.new { |year| +date = Holidays::Factory::Definition.custom_methods_repository.find("jp_vernal_equinox_day(year)").call(year) +Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday) +}, + +"jp_marine_day_substitute(year)" => Proc.new { |year| +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)) +}, + +"jp_national_culture_day(year)" => Proc.new { |year| +day = + case year + when 1851..1899 + 22.2588 + when 1900..1979 + 23.2588 + when 1980..2099 + 23.2488 + when 2100..2150 + 24.2488 + else + raise IndexError.new("Out of range") + end +day += 0.242194 * (year - 1980) - ((year - 1980)/4).floor +day = day.floor +Date.civil(year, 9, day) +}, + +"jp_national_culture_day_substitute(year)" => Proc.new { |year| +date = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year) +Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday) +}, + +"jp_citizens_holiday(year)" => Proc.new { |year| +ncd = Holidays::Factory::Definition.custom_methods_repository.find("jp_national_culture_day(year)").call(year) +if ncd.wday == 3 + ncd - 1 +else + nil +end +}, + +"jp_mountain_holiday(year)" => Proc.new { |year| +Date.civil(year, 8, 11) +}, + +"jp_mountain_holiday_substitute(year)" => Proc.new { |year| +date = Holidays::Factory::Definition.custom_methods_repository.find("jp_mountain_holiday(year)").call(year) +Holidays::Factory::Definition.custom_methods_repository.find("jp_substitute_holiday(year, month, day)").call(year, date.month, date.mday) +}, + +"jp_respect_for_aged_holiday_substitute(year)" => Proc.new { |year| +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)) +}, + +"jp_substitute_holiday(year, month, day)" => Proc.new { |year, month, day| +date = Date.civil(year, month, day) +date.wday == 0 ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : nil +}, + +"jp_next_weekday(date)" => Proc.new { |date| +# This suuuucks. I have no idea how to make this not reach into our interal ruby API to do this. +# I'm punting, I'll come back to this. +is_holiday = Holidays::JP.holidays_by_month[date.month].any? do |holiday| + holiday[:mday] == date.day +end +date.wday == 0 || is_holiday ? (Holidays::Factory::Definition.custom_methods_repository.find("jp_next_weekday(date)").call(date+1)) : date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/kr.rb b/vendor/holidays/lib/generated_definitions/kr.rb new file mode 100644 index 00000000..ba30c02c --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/kr.rb @@ -0,0 +1,40 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/kr.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module KR # :nodoc: + def self.defined_regions + [:kr] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "설날", :regions => [:kr]}, + {:mday => 2, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "설날 연휴", :regions => [:kr]}, + {:mday => 1, :name => "신정", :regions => [:kr]}], + 3 => [{:mday => 1, :name => "3·1절", :regions => [:kr]}], + 4 => [{:mday => 8, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "석가탄신일", :regions => [:kr]}], + 5 => [{:mday => 5, :name => "어린이날", :regions => [:kr]}], + 6 => [{:mday => 6, :name => "현충일", :regions => [:kr]}], + 7 => [{:mday => 17, :type => :informal, :name => "제헌절", :regions => [:kr]}], + 8 => [{:mday => 14, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "추석 연휴", :regions => [:kr]}, + {:mday => 15, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "추석", :regions => [:kr]}, + {:mday => 16, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "추석 연휴", :regions => [:kr]}, + {:mday => 15, :name => "광복절", :regions => [:kr]}], + 10 => [{:mday => 3, :name => "개천절", :regions => [:kr]}, + {:mday => 9, :name => "한글날", :regions => [:kr]}], + 12 => [{:mday => 25, :name => "크리스마스", :regions => [:kr]}, + {:mday => 30, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "설날 연휴", :regions => [:kr]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/kz.rb b/vendor/holidays/lib/generated_definitions/kz.rb new file mode 100644 index 00000000..5d7024b3 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/kz.rb @@ -0,0 +1,38 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/kz.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module KZ # :nodoc: + def self.defined_regions + [:kz] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "Jańa jyl", :regions => [:kz]}, + {:mday => 2, :name => "Jańa jyl", :regions => [:kz]}], + 3 => [{:mday => 8, :name => "Halyqaralyq áıelder kúni", :regions => [:kz]}, + {:mday => 21, :name => "Naýryz Meıramy", :regions => [:kz]}, + {:mday => 22, :name => "Naýryz Meıramy", :regions => [:kz]}, + {:mday => 23, :name => "Naýryz Meıramy", :regions => [:kz]}], + 5 => [{:mday => 1, :name => "Qazaqstan halqynyń birligi merekesi", :regions => [:kz]}, + {:mday => 7, :name => "Otan Qorǵaýshy kuni", :regions => [:kz]}, + {:mday => 9, :name => "Jeńis kúni", :regions => [:kz]}], + 7 => [{:mday => 6, :name => "Astana kúni", :regions => [:kz]}], + 8 => [{:mday => 30, :name => "Qazaqstan Respýblıkasynyń Konstıtýcıyasy kúni", :regions => [:kz]}], + 12 => [{:mday => 1, :name => "Túńǵysh Prezıdent kúni", :regions => [:kz]}, + {:mday => 16, :name => "Táýelsizdik kúni", :regions => [:kz]}, + {:mday => 17, :name => "Táýelsizdik kúni", :regions => [:kz]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/li.rb b/vendor/holidays/lib/generated_definitions/li.rb new file mode 100644 index 00000000..a1ab8bd7 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/li.rb @@ -0,0 +1,44 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/li.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module LI # :nodoc: + def self.defined_regions + [:li] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Fasnachtsdienstag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Karfreitag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Ostern", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ostermontag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Auffahrt", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Pfingstmontag", :regions => [:li]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Fronleichnam", :regions => [:li]}], + 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:li]}, + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:li]}], + 2 => [{:mday => 2, :name => "Maria Lichtmess", :regions => [:li]}], + 3 => [{:mday => 19, :name => "St. Josef", :regions => [:li]}], + 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:li]}], + 8 => [{:mday => 15, :name => "Staatsfeiertag", :regions => [:li]}], + 9 => [{:mday => 8, :name => "Maria Geburt", :regions => [:li]}], + 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:li]}], + 12 => [{:mday => 8, :name => "Maria Empfängnis", :regions => [:li]}, + {:mday => 24, :name => "Heilig Abend", :regions => [:li]}, + {:mday => 25, :name => "Weihnachten", :regions => [:li]}, + {:mday => 26, :name => "Stefanstag", :regions => [:li]}, + {:mday => 31, :name => "Silvester", :regions => [:li]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/lt.rb b/vendor/holidays/lib/generated_definitions/lt.rb new file mode 100644 index 00000000..24dda9c8 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/lt.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/lt.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module LT # :nodoc: + def self.defined_regions + [:lt] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :name => "Šv. Velykos", :regions => [:lt]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Antroji Velykų diena", :regions => [:lt]}], + 1 => [{:mday => 1, :name => "Naujieji metai", :regions => [:lt]}], + 2 => [{:mday => 16, :name => "Valstybės atkūrimo diena", :regions => [:lt]}], + 3 => [{:mday => 11, :name => "Nepriklausomybės atkūrimo diena", :regions => [:lt]}], + 5 => [{:mday => 1, :name => "Darbininkų diena", :regions => [:lt]}], + 6 => [{:mday => 24, :name => "Joninės", :regions => [:lt]}], + 7 => [{:mday => 6, :name => "Valstybės diena", :regions => [:lt]}], + 8 => [{:mday => 15, :name => "Žolinė", :regions => [:lt]}], + 11 => [{:mday => 1, :name => "Visų šventųjų diena", :regions => [:lt]}], + 12 => [{:mday => 24, :name => "Šv. Kūčios", :regions => [:lt]}, + {:mday => 25, :name => "Šv. Kalėdos", :regions => [:lt]}, + {:mday => 26, :name => "Antroji Kalėdų diena", :regions => [:lt]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/lu.rb b/vendor/holidays/lib/generated_definitions/lu.rb new file mode 100644 index 00000000..16058160 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/lu.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/lu.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module LU # :nodoc: + def self.defined_regions + [:lu] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ouschterméindeg", :regions => [:lu]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Christi Himmelfaart", :regions => [:lu]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Péngschtméindeg", :regions => [:lu]}], + 1 => [{:mday => 1, :name => "Neijoerschdag", :regions => [:lu]}], + 5 => [{:mday => 1, :name => "Dag vun der Aarbecht", :regions => [:lu]}, + {:mday => 9, :year_ranges => { :from => 2019 },:name => "Europadag", :regions => [:lu]}], + 6 => [{:mday => 23, :name => "Nationalfeierdag", :regions => [:lu]}], + 8 => [{:mday => 15, :name => "Léiffrawëschdag", :regions => [:lu]}], + 11 => [{:mday => 1, :name => "Allerhellgen", :regions => [:lu]}], + 12 => [{:mday => 25, :name => "Chrëschtdag", :regions => [:lu]}, + {:mday => 26, :name => "Stiefesdag", :regions => [:lu]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/lv.rb b/vendor/holidays/lib/generated_definitions/lv.rb new file mode 100644 index 00000000..0b406045 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/lv.rb @@ -0,0 +1,52 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/lv.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module LV # :nodoc: + def self.defined_regions + [:lv] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Lielā Piektdiena", :regions => [:lv]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pirmās Lieldienas", :regions => [:lv]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Otrās Lieldienas", :regions => [:lv]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Vasarsvētki", :regions => [:lv]}, + {:function => "lv_song_and_dance_festival_end_date(year)", :function_arguments => [:year], :year_ranges => { :from => 2018 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", :regions => [:lv]}], + 1 => [{:mday => 1, :name => "Jaungada diena", :regions => [:lv]}], + 5 => [{:mday => 1, :name => "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", :regions => [:lv]}, + {:mday => 4, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Latvijas Republikas Neatkarības atjaunošanas diena", :regions => [:lv]}, + {:wday => 0, :week => 2, :name => "Mātes diena", :regions => [:lv]}], + 6 => [{:mday => 23, :name => "Līgo diena", :regions => [:lv]}, + {:mday => 24, :name => "Jāņu diena", :regions => [:lv]}], + 9 => [{:mday => 24, :year_ranges => { :limited => [2018] },:name => "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena", :regions => [:lv]}], + 11 => [{:mday => 18, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Latvijas Republikas Proklamēšanas diena", :regions => [:lv]}], + 12 => [{:mday => 24, :name => "Ziemassvētku vakars", :regions => [:lv]}, + {:mday => 25, :name => "Pirmie Ziemassvētki", :regions => [:lv]}, + {:mday => 26, :name => "Otrie Ziemassvētki", :regions => [:lv]}, + {:mday => 31, :name => "Vecgada diena", :regions => [:lv]}] + } + end + + def self.custom_methods + { + "lv_song_and_dance_festival_end_date(year)" => Proc.new { |year| +case year +when 2018 + # https://likumi.lv/ta/id/281541 (Ministru kabineta rīkojums Nr. 252 "Par XXVI Vispārējo latviešu dziesmu un XVI Deju svētku norises laiku") + Date.new(2018, 7, 8) +when 2023 + # Event's period/next year is known, but precise dates aren't. + # Previously, dates were announced 2 years ahead, so at ~2021-05 this method would need to be revisited. +end +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ma.rb b/vendor/holidays/lib/generated_definitions/ma.rb new file mode 100644 index 00000000..1f2d4679 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ma.rb @@ -0,0 +1,33 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ma.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module MA # :nodoc: + def self.defined_regions + [:ma] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "Ras l' âm", :regions => [:ma]}, + {:mday => 11, :name => "Takdim watikat al-istiqlal", :regions => [:ma]}], + 5 => [{:mday => 1, :name => "Eid Ash-Shughl", :regions => [:ma]}], + 7 => [{:mday => 30, :name => "Eid Al-Ârch", :regions => [:ma]}], + 8 => [{:mday => 14, :name => "Zikra Oued Ed-Dahab", :regions => [:ma]}, + {:mday => 20, :name => "Thawrat al malik wa shâab", :regions => [:ma]}, + {:mday => 21, :name => "Eid Al Milad", :regions => [:ma]}], + 11 => [{:mday => 6, :name => "Eid Al Massira Al Khadra", :regions => [:ma]}, + {:mday => 18, :name => "Eid Al Istiqulal", :regions => [:ma]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/mt_en.rb b/vendor/holidays/lib/generated_definitions/mt_en.rb new file mode 100644 index 00000000..e232fc1f --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/mt_en.rb @@ -0,0 +1,38 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/mt_en.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module MT_EN # :nodoc: + def self.defined_regions + [:mt_en] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:mt_en]}], + 1 => [{:mday => 1, :name => "New Year's Day", :regions => [:mt_en]}], + 2 => [{:mday => 10, :name => "Feast of Saint Paul's Shipwreck in Malta", :regions => [:mt_en]}], + 3 => [{:mday => 19, :name => "Feast of Saint Joseph", :regions => [:mt_en]}, + {:mday => 31, :name => "Freedom Day", :regions => [:mt_en]}], + 5 => [{:mday => 1, :name => "Worker's Day", :regions => [:mt_en]}], + 6 => [{:mday => 7, :name => "Sette Giugno", :regions => [:mt_en]}, + {:mday => 29, :name => "Feast of Saint Peter & Saint Paul", :regions => [:mt_en]}], + 8 => [{:mday => 15, :name => "Feast of the Assumption of Our Lady", :regions => [:mt_en]}], + 9 => [{:mday => 8, :name => "Victory Day", :regions => [:mt_en]}, + {:mday => 21, :name => "Independence Day", :regions => [:mt_en]}], + 12 => [{:mday => 8, :name => "Feast of the Immaculate Conception", :regions => [:mt_en]}, + {:mday => 13, :name => "Republic Day", :regions => [:mt_en]}, + {:mday => 25, :name => "Christmas Day", :regions => [:mt_en]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/mt_mt.rb b/vendor/holidays/lib/generated_definitions/mt_mt.rb new file mode 100644 index 00000000..76c7a795 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/mt_mt.rb @@ -0,0 +1,38 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/mt_mt.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module MT_MT # :nodoc: + def self.defined_regions + [:mt_mt] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Il-Ġimgħa l-Kbira", :regions => [:mt_mt]}], + 1 => [{:mday => 1, :name => "L-Ewwel tas-Sena", :regions => [:mt_mt]}], + 2 => [{:mday => 10, :name => "Nawfraġju ta' San Pawl", :regions => [:mt_mt]}], + 3 => [{:mday => 19, :name => "San Ġużepp", :regions => [:mt_mt]}, + {:mday => 31, :name => "Jum il-Ħelsien", :regions => [:mt_mt]}], + 5 => [{:mday => 1, :name => "Jum il-Ħaddiem", :regions => [:mt_mt]}], + 6 => [{:mday => 7, :name => "Sette Giugno", :regions => [:mt_mt]}, + {:mday => 29, :name => "L-Imnarja", :regions => [:mt_mt]}], + 8 => [{:mday => 15, :name => "Santa Marija", :regions => [:mt_mt]}], + 9 => [{:mday => 8, :name => "Jum il-Vitorja", :regions => [:mt_mt]}, + {:mday => 21, :name => "Jum l-Indipendenza", :regions => [:mt_mt]}], + 12 => [{:mday => 8, :name => "Il-Kunċizzjoni", :regions => [:mt_mt]}, + {:mday => 13, :name => "Jum ir-Repubblika", :regions => [:mt_mt]}, + {:mday => 25, :name => "Il-Milied", :regions => [:mt_mt]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/mx.rb b/vendor/holidays/lib/generated_definitions/mx.rb new file mode 100644 index 00000000..10829246 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/mx.rb @@ -0,0 +1,54 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/mx.yaml, definitions/northamericainformal.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module MX # :nodoc: + def self.defined_regions + [:mx, :mx_pue, :us, :ca] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "Año nuevo", :regions => [:mx]}, + {:mday => 6, :type => :informal, :name => "Dia de los Santos Reyes", :regions => [:mx]}], + 2 => [{:wday => 1, :week => 1, :name => "Día de la Constitución", :regions => [:mx]}, + {:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]}, + {:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}], + 3 => [{:wday => 1, :week => 3, :name => "Natalicio de Benito Juárez", :regions => [:mx]}, + {:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}], + 4 => [{:mday => 30, :type => :informal, :name => "Día del Niño", :regions => [:mx]}, + {:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]}, + {:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}], + 5 => [{:mday => 1, :name => "Día del Trabajo", :regions => [:mx]}, + {:mday => 5, :type => :informal, :name => "Cinco de Mayo", :regions => [:mx]}, + {:mday => 5, :type => :informal, :name => "La Batalla de Puebla", :regions => [:mx_pue]}, + {:mday => 10, :type => :informal, :name => "Día de la Madre", :regions => [:mx]}, + {:mday => 15, :type => :informal, :name => "Día del Maestro", :regions => [:mx]}, + {:wday => 0, :week => 2, :type => :informal, :name => "Mother's Day", :regions => [:us, :ca]}, + {:wday => 6, :week => 3, :type => :informal, :name => "Armed Forces Day", :regions => [:us]}], + 6 => [{:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:mx]}, + {:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}], + 9 => [{:mday => 15, :name => "Grito de Dolores", :regions => [:mx]}, + {:mday => 16, :name => "Día de la Independencia", :regions => [:mx]}], + 10 => [{:mday => 12, :type => :informal, :name => "Día de la Raza", :regions => [:mx]}, + {:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}], + 11 => [{:mday => 1, :type => :informal, :name => "Todos los Santos", :regions => [:mx]}, + {:mday => 2, :type => :informal, :name => "Los Fieles Difuntos", :regions => [:mx]}, + {:wday => 1, :week => 3, :name => "Día de la Revolución", :regions => [:mx]}], + 12 => [{:mday => 12, :type => :informal, :name => "Día de la Virgen de Guadalupe", :regions => [:mx]}, + {:mday => 24, :type => :informal, :name => "Nochebuena", :regions => [:mx]}, + {:mday => 25, :name => "Navidad", :regions => [:mx]}, + {:mday => 28, :type => :informal, :name => "Los Santos Inocentes", :regions => [:mx]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/my.rb b/vendor/holidays/lib/generated_definitions/my.rb new file mode 100644 index 00000000..0728d2b8 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/my.rb @@ -0,0 +1,30 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/my.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module MY # :nodoc: + def self.defined_regions + [:my] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:my]}], + 5 => [{:mday => 1, :name => "Labour Day", :regions => [:my]}], + 6 => [{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Agong's Birthday", :regions => [:my]}], + 8 => [{:mday => 31, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:my]}], + 9 => [{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Malaysia Day", :regions => [:my]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:my]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/nerc.rb b/vendor/holidays/lib/generated_definitions/nerc.rb new file mode 100644 index 00000000..7071964c --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/nerc.rb @@ -0,0 +1,30 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/nerc.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module NERC # :nodoc: + def self.defined_regions + [:nerc] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:nerc]}], + 5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:nerc]}], + 7 => [{:mday => 4, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:nerc]}], + 9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:nerc]}], + 11 => [{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:nerc]}], + 12 => [{:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:nerc]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ng.rb b/vendor/holidays/lib/generated_definitions/ng.rb new file mode 100644 index 00000000..3b3c9611 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ng.rb @@ -0,0 +1,33 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ng.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module NG # :nodoc: + def self.defined_regions + [:ng] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ng]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:ng]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ng]}], + 5 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Workers' Day", :regions => [:ng]}, + {:mday => 27, :type => :informal, :name => "Children's Day", :regions => [:ng]}], + 6 => [{:mday => 12, :year_ranges => { :from => 2018 },:name => "Democracy Day", :regions => [:ng]}], + 10 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:ng]}], + 12 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ng]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ng]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/nl.rb b/vendor/holidays/lib/generated_definitions/nl.rb new file mode 100644 index 00000000..3912abaf --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/nl.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/nl.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module NL # :nodoc: + def self.defined_regions + [:nl] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Goede Vrijdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Eerste Paasdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Tweede Paasdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Hemelvaartsdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Eerste Pinksterdag", :regions => [:nl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Tweede Pinksterdag", :regions => [:nl]}], + 1 => [{:mday => 1, :name => "Nieuwjaarsdag", :regions => [:nl]}], + 4 => [{:mday => 27, :name => "Koningsdag", :regions => [:nl]}], + 5 => [{:mday => 4, :type => :informal, :name => "Dodenherdenking", :regions => [:nl]}, + {:mday => 5, :name => "Bevrijdingsdag", :regions => [:nl]}], + 12 => [{:mday => 5, :type => :informal, :name => "Sinterklaas", :regions => [:nl]}, + {:mday => 25, :name => "Eerste Kerstdag", :regions => [:nl]}, + {:mday => 26, :name => "Tweede Kerstdag", :regions => [:nl]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/no.rb b/vendor/holidays/lib/generated_definitions/no.rb new file mode 100644 index 00000000..c97ecacc --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/no.rb @@ -0,0 +1,40 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/no.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module NO # :nodoc: + def self.defined_regions + [:no] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -49, :type => :informal, :name => "Fastelavn", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :name => "Palmesøndag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skjærtorsdag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "1. påskedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "1. pinsedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. pinsedag", :regions => [:no]}], + 1 => [{:mday => 1, :name => "Nyttårsdag", :regions => [:no]}], + 5 => [{:mday => 1, :name => "1. mai", :regions => [:no]}, + {:mday => 17, :name => "17. mai", :regions => [:no]}], + 12 => [{:mday => 24, :type => :informal, :name => "Julaften", :regions => [:no]}, + {:mday => 25, :name => "1. juledag", :regions => [:no]}, + {:mday => 26, :name => "2. juledag", :regions => [:no]}, + {:mday => 31, :type => :informal, :name => "Nyttårsaften", :regions => [:no]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/northamerica.rb b/vendor/holidays/lib/generated_definitions/northamerica.rb new file mode 100644 index 00000000..3992d3fb --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/northamerica.rb @@ -0,0 +1,223 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ca.yaml, definitions/mx.yaml, definitions/us.yaml, definitions/northamericainformal.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module NORTHAMERICA # :nodoc: + def self.defined_regions + [:ca, :ca_qc, :ca_ab, :ca_sk, :ca_on, :ca_bc, :ca_nb, :ca_mb, :ca_ns, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_yt, :mx, :mx_pue, :us_fl, :us_la, :us, :us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn, :us_ms, :us_id, :us_ar, :us_tx, :us_dc, :us_md, :us_va, :us_vt, :us_ak, :us_ca, :us_me, :us_ma, :us_al, :us_ga, :us_ne, :us_mo, :us_sc, :us_wv, :us_vi, :us_ut, :us_ri, :us_az, :us_co, :us_il, :us_mt, :us_nm, :us_ny, :us_oh, :us_pa, :us_mi, :us_mn, :us_nv, :us_or, :us_sd, :us_wa, :us_wi, :us_wy, :us_ia, :us_ks, :us_nh, :us_ok] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ca]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:ca]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :type => :informal, :name => "Easter Monday", :regions => [:ca]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Shrove Tuesday", :regions => [:us_fl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Mardi Gras Day", :regions => [:us_la]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Good Friday", :regions => [:us]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:us]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ca]}, + {:mday => 2, :name => "New Year's", :regions => [:ca_qc]}, + {:mday => 1, :name => "Año nuevo", :regions => [:mx]}, + {:mday => 6, :type => :informal, :name => "Dia de los Santos Reyes", :regions => [:mx]}, + {:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:us]}, + {:wday => 1, :week => 3, :name => "Martin Luther King's and Robert E. Lee's Birthdays", :regions => [:us_ms]}, + {:wday => 1, :week => 3, :name => "Idaho Human Rights Day", :regions => [:us_id]}, + {:wday => 1, :week => 3, :name => "Civil Rights Day", :regions => [:us_ar]}, + {:wday => 1, :week => 3, :name => "Martin Luther King, Jr. Day", :regions => [:us]}, + {:function => "us_inauguration_day(year)", :function_arguments => [:year], :name => "Inauguration Day", :regions => [:us_tx, :us_dc, :us_la, :us_md, :us_va]}, + {:function => "lee_jackson_day(year, month)", :function_arguments => [:year, :month], :name => "Lee-Jackson Day", :regions => [:us_va]}, + {:mday => 19, :name => "Confederate Heroes Day", :regions => [:us_tx]}], + 2 => [{:wday => 1, :week => 3, :year_ranges => { :from => 1990 },:name => "Family Day", :regions => [:ca_ab]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2007 },:name => "Family Day", :regions => [:ca_sk]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2008 },:name => "Family Day", :regions => [:ca_on]}, + {:wday => 1, :week => 2, :year_ranges => { :between => 2013..2018 },:name => "Family Day", :regions => [:ca_bc]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2019 },:name => "Family Day", :regions => [:ca_bc]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2018 },:name => "Family Day", :regions => [:ca_nb]}, + {:wday => 1, :week => 3, :name => "Louis Riel Day", :regions => [:ca_mb]}, + {:wday => 1, :week => 3, :year_ranges => { :from => 2015 },:name => "Nova Scotia Heritage Day", :regions => [:ca_ns]}, + {:wday => 1, :week => 3, :name => "Islander Day", :regions => [:ca_pe]}, + {:wday => 1, :week => 1, :name => "Día de la Constitución", :regions => [:mx]}, + {:wday => 1, :week => 3, :name => "Presidents' Day", :regions => [:us]}, + {:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]}, + {:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}], + 3 => [{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:ca_nl]}, + {:mday => 23, :type => :informal, :name => "St. George's Day", :regions => [:ca_nl]}, + {:wday => 1, :week => 3, :name => "Natalicio de Benito Juárez", :regions => [:mx]}, + {:wday => 2, :week => 1, :name => "Town Meeting Day", :regions => [:us_vt]}, + {:mday => 2, :name => "Texas Independence Day", :regions => [:us_tx]}, + {:mday => 26, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Prince Jonah Kuhio Kalanianaole Day", :regions => [:us_hi]}, + {:wday => 1, :week => -1, :name => "Seward's Day", :regions => [:us_ak]}, + {:mday => 31, :name => "César Chávez Day", :regions => [:us_ca]}, + {:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}], + 5 => [{:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "Victoria Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt]}, + {:function => "ca_victoria_day(year)", :function_arguments => [:year], :name => "National Patriotes Day", :regions => [:ca_qc]}, + {:mday => 1, :name => "Día del Trabajo", :regions => [:mx]}, + {:mday => 5, :type => :informal, :name => "Cinco de Mayo", :regions => [:mx]}, + {:mday => 5, :type => :informal, :name => "La Batalla de Puebla", :regions => [:mx_pue]}, + {:mday => 10, :type => :informal, :name => "Día de la Madre", :regions => [:mx]}, + {:mday => 15, :type => :informal, :name => "Día del Maestro", :regions => [:mx]}, + {:mday => 8, :name => "Truman Day", :regions => [:us_mo]}, + {:mday => 10, :name => "Confederate Memorial Day", :regions => [:us_sc]}, + {:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:us]}, + {:wday => 0, :week => 2, :type => :informal, :name => "Mother's Day", :regions => [:us, :ca]}, + {:wday => 6, :week => 3, :type => :informal, :name => "Armed Forces Day", :regions => [:us]}], + 6 => [{:mday => 24, :type => :informal, :name => "Discovery Day", :regions => [:ca_nl]}, + {:mday => 24, :name => "Fête Nationale", :regions => [:ca_qc]}, + {:mday => 21, :name => "National Aboriginal Day", :regions => [:ca_nt]}, + {:mday => 21, :year_ranges => { :from => 2017 },:name => "National Aboriginal Day", :regions => [:ca_yt]}, + {:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:mx]}, + {:wday => 1, :week => 1, :name => "Jefferson Davis' Birthday", :regions => [:us_al]}, + {:mday => 3, :name => "Birthday of Jefferson Davis", :regions => [:us_fl]}, + {:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "King Kamehameha I Day", :regions => [:us_hi]}, + {:mday => 19, :name => "Emancipation Day in Texas", :regions => [:us_tx]}, + {:mday => 20, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "West Virginia Day", :regions => [:us_wv]}, + {:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}], + 7 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Canada Day", :regions => [:ca]}, + {:mday => 12, :type => :informal, :name => "Orangemen's Day", :regions => [:ca_nl]}, + {:mday => 9, :year_ranges => { :from => 2020 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Nunavut Day", :regions => [:ca_nu]}, + {:mday => 3, :name => "Emancipation Day", :regions => [:us_vi]}, + {:mday => 4, :name => "Independence Day", :regions => [:us]}, + {:mday => 4, :function => "to_weekday_if_weekend(date)", :function_arguments => [:date], :name => "Independence Day (Holiday)", :regions => [:us_va]}, + {:mday => 24, :name => "Pioneer Day", :regions => [:us_ut]}], + 8 => [{:wday => 1, :week => 1, :name => "B.C. Day", :regions => [:ca_bc]}, + {:wday => 1, :week => 1, :name => "Saskatchewan Day", :regions => [:ca_sk]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Heritage Day", :regions => [:ca_ab]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Natal Day", :regions => [:ca_ns]}, + {:wday => 1, :week => 1, :name => "Civic Holiday", :regions => [:ca_nt, :ca_nu]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Civic Holiday", :regions => [:ca_on, :ca_pe]}, + {:wday => 1, :week => 1, :name => "New Brunswick Day", :regions => [:ca_nb]}, + {:wday => 1, :week => 1, :type => :informal, :name => "Terry Fox Day", :regions => [:ca_mb]}, + {:wday => 1, :week => 3, :name => "Discovery Day", :regions => [:ca_yt]}, + {:wday => 1, :week => 2, :name => "Victory Day", :regions => [:us_ri]}, + {:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Bennington Battle Day", :regions => [:us_vt]}, + {:wday => 5, :week => 3, :name => "Statehood Day", :regions => [:us_hi]}, + {:mday => 27, :name => "Lyndon Baines Johnson Day", :regions => [:us_tx]}], + 9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:ca]}, + {:mday => 15, :name => "Grito de Dolores", :regions => [:mx]}, + {:mday => 16, :name => "Día de la Independencia", :regions => [:mx]}, + {:wday => 1, :week => 1, :name => "Labor Day", :regions => [:us]}, + {:function => "rosh_hashanah(year)", :function_arguments => [:year], :name => "Rosh Hashanah", :regions => [:us_tx]}, + {:function => "yom_kippur(year)", :function_arguments => [:year], :name => "Yom Kippur", :regions => [:us_tx]}], + 10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_qc, :ca_sk, :ca_yt]}, + {:mday => 12, :type => :informal, :name => "Día de la Raza", :regions => [:mx]}, + {:wday => 1, :week => 2, :name => "Columbus Day", :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]}, + {:wday => 1, :week => 2, :type => :informal, :name => "Columbus Day", :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]}, + {:mday => 18, :name => "Alaska Day", :regions => [:us_ak]}, + {:wday => 5, :week => -1, :name => "Nevada Day", :regions => [:us_nv]}, + {:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}], + 11 => [{:mday => 11, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Remembrance Day", :regions => [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt]}, + {:mday => 1, :type => :informal, :name => "Todos los Santos", :regions => [:mx]}, + {:mday => 2, :type => :informal, :name => "Los Fieles Difuntos", :regions => [:mx]}, + {:wday => 1, :week => 3, :name => "Día de la Revolución", :regions => [:mx]}, + {:function => "election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri]}, + {:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]}, + {:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "State Holiday", :regions => [:us_ga]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Presidents' Day", :regions => [:us_nm]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Lincoln's Birthday", :regions => [:us_in]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "American Indian Heritage Day", :regions => [:us_md]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Day after Thanksgiving (Black Friday)", :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]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ca]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:ca_on]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :type => :informal, :name => "Boxing Day", :regions => [:ca_ab, :ca_bc, :ca_mb, :ca_nb, :ca_nl, :ca_nt, :ca_ns, :ca_nu, :ca_pe, :ca_sk, :ca_yt]}, + {:mday => 12, :type => :informal, :name => "Día de la Virgen de Guadalupe", :regions => [:mx]}, + {:mday => 24, :type => :informal, :name => "Nochebuena", :regions => [:mx]}, + {:mday => 25, :name => "Navidad", :regions => [:mx]}, + {:mday => 28, :type => :informal, :name => "Los Santos Inocentes", :regions => [:mx]}, + {:mday => 24, :name => "Christmas Eve", :regions => [:us_ar, :us_mi, :us_nc, :us_sc, :us_tx, :us_wi]}, + {:mday => 24, :function => "christmas_eve_holiday(date)", :function_arguments => [:date], :name => "Christmas Eve (Holiday)", :regions => [:us_mi, :us_sc, :us_va]}, + {:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:us]}, + {:mday => 26, :name => "Day after Christmas", :regions => [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx]}, + {:mday => 31, :name => "New Year's Eve", :regions => [:us_mi, :us_wi]}], + 4 => [{:mday => 30, :type => :informal, :name => "Día del Niño", :regions => [:mx]}, + {:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc]}, + {:wday => 1, :week => 3, :name => "Patriots' Day", :regions => [:us_me, :us_ma]}, + {:mday => 21, :name => "San Jacinto Day", :regions => [:us_tx]}, + {:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:us_al, :us_ms]}, + {:mday => 26, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Confederate Memorial Day", :regions => [:us_fl]}, + {:function => "georgia_state_holiday(year, month)", :function_arguments => [:year, :month], :name => "State Holiday", :regions => [:us_ga]}, + {:mday => 28, :name => "Arbor Day", :regions => [:us_ne]}, + {:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]}, + {:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}] + } + end + + def self.custom_methods + { + "ca_victoria_day(year)" => Proc.new { |year| +date = Date.civil(year,5,24) +if date.wday > 1 + date -= (date.wday - 1) +elsif date.wday == 0 + date -= 6 +end +date +}, + +"christmas_eve_holiday(date)" => Proc.new { |date| +beginning_of_month = Date.civil(date.year, date.month, 1) +(date.saturday? || date.sunday?) ? date.downto(beginning_of_month).find {|d| d if d.wday == 5} : date +}, + +"rosh_hashanah(year)" => Proc.new { |year| +rosh_hashanah_dates = { + '2014' => Date.civil(2014, 9, 25), + '2015' => Date.civil(2015, 9, 14), + '2016' => Date.civil(2016, 10, 3), + '2017' => Date.civil(2017, 9, 21), + '2018' => Date.civil(2018, 9, 10), + '2019' => Date.civil(2019, 9, 30), + '2020' => Date.civil(2020, 9, 19) +} +rosh_hashanah_dates[year.to_s] +}, + +"yom_kippur(year)" => Proc.new { |year| +yom_kippur_dates = { + '2014' => Date.civil(2014, 10, 4), + '2015' => Date.civil(2015, 9, 23), + '2016' => Date.civil(2016, 10, 12), + '2017' => Date.civil(2017, 9, 30), + '2018' => Date.civil(2018, 9, 19), + '2019' => Date.civil(2019, 10, 9), + '2020' => Date.civil(2020, 9, 28) +} +yom_kippur_dates[year.to_s] +}, + +"georgia_state_holiday(year, month)" => Proc.new { |year, month| +beginning_of_month = Date.civil(year, month, 1) +state_holiday = Date.civil(year, month, 26) +state_holiday.downto(beginning_of_month).find {|date| date if date.wday == 1 } +}, + +"lee_jackson_day(year, month)" => Proc.new { |year, month| +day_of_holiday = Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, month, 3, 1) +beginning_of_month = Date.civil(year, month, 1) +king_day = Date.civil(year, month, day_of_holiday) +king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 } +}, + +"election_day(year)" => Proc.new { |year| +Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1 +}, + +"us_inauguration_day(year)" => Proc.new { |year| +year % 4 == 1 ? 20 : nil +}, + +"day_after_thanksgiving(year)" => Proc.new { |year| +Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1 +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/nyse.rb b/vendor/holidays/lib/generated_definitions/nyse.rb new file mode 100644 index 00000000..d76921c7 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/nyse.rb @@ -0,0 +1,33 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/nyse.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module NYSE # :nodoc: + def self.defined_regions + [:nyse] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:nyse]}], + 1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:nyse]}, + {:wday => 1, :week => 3, :name => "Martin Luther King, Jr. Day", :regions => [:nyse]}], + 2 => [{:wday => 1, :week => 3, :name => "Presidents' Day", :regions => [:nyse]}], + 5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:nyse]}], + 7 => [{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:nyse]}], + 9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:nyse]}], + 11 => [{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:nyse]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:nyse]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/nz.rb b/vendor/holidays/lib/generated_definitions/nz.rb new file mode 100644 index 00000000..bf5fa38c --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/nz.rb @@ -0,0 +1,66 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/nz.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module NZ # :nodoc: + def self.defined_regions + [:nz, :nz_sl, :nz_we, :nz_ak, :nz_nl, :nz_ne, :nz_ot, :nz_ta, :nz_sc, :nz_hb, :nz_mb, :nz_ca, :nz_ch, :nz_wl] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:nz]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:nz]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:nz]}, + {:mday => 2, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Day after New Year's Day", :regions => [:nz]}, + {:mday => 17, :name => "Southland Anniversary Day", :regions => [:nz_sl]}, + {:mday => 22, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Wellington Anniversary Day", :regions => [:nz_we]}, + {:mday => 29, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Auckland Anniversary Day", :regions => [:nz_ak]}, + {:mday => 29, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Northland Anniversary Day", :regions => [:nz_nl]}], + 2 => [{:mday => 1, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Nelson Anniversary Day", :regions => [:nz_ne]}, + {:mday => 6, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Waitangi Day", :regions => [:nz]}], + 3 => [{:mday => 23, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Otago Anniversary Day", :regions => [:nz_ot]}, + {:wday => 1, :week => 2, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Taranaki Anniversary Day", :regions => [:nz_ta]}], + 4 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:nz]}], + 6 => [{:wday => 1, :week => 1, :name => "Queen's Birthday", :regions => [:nz]}], + 9 => [{:wday => 1, :week => 4, :name => "Dominion Day", :regions => [:nz_sc]}], + 10 => [{:wday => 1, :week => 1, :observed => "previous_friday(date)", :observed_arguments => [:date], :name => "Hawke's bay Anniversary Day", :regions => [:nz_hb]}, + {:wday => 1, :week => 4, :name => "Labour Day", :regions => [:nz]}, + {:wday => 1, :week => 4, :observed => "next_week(date)", :observed_arguments => [:date], :name => "Marlborough Anniversary Day", :regions => [:nz_mb]}], + 11 => [{:wday => 5, :week => 2, :name => "Canterbury Anniversary Day", :regions => [:nz_ca]}, + {:mday => 30, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Chatham Island Anniversary Day", :regions => [:nz_ch]}], + 12 => [{:mday => 1, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Westland Anniversary Day", :regions => [:nz_wl]}, + {:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:nz]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:nz]}] + } + end + + def self.custom_methods + { + "closest_monday(date)" => Proc.new { |date| +if [1, 2, 3, 4].include?(date.wday) + date -= (date.wday - 1) +elsif 0 == date.wday + date += 1 +else + date += 8 - date.wday +end +date +}, + +"previous_friday(date)" => Proc.new { |date| +date - 3 +}, + +"next_week(date)" => Proc.new { |date| +date + 7 +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/pe.rb b/vendor/holidays/lib/generated_definitions/pe.rb new file mode 100644 index 00000000..b8257c36 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/pe.rb @@ -0,0 +1,43 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/pe.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module PE # :nodoc: + def self.defined_regions + [:pe] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:pe]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:pe]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pascua", :regions => [:pe]}], + 1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:pe]}, + {:mday => 6, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de los Reyes Magos", :regions => [:pe]}], + 5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:pe]}, + {:wday => 0, :week => 2, :type => :informal, :name => "Día de la Madre", :regions => [:pe]}], + 6 => [{:mday => 7, :type => :informal, :name => "Día de la Bandera", :regions => [:pe]}, + {:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:pe]}, + {:mday => 24, :type => :informal, :name => "Inti Raymi", :regions => [:pe]}, + {:mday => 29, :name => "San Pablo y San Pedro", :regions => [:pe]}], + 7 => [{:mday => 28, :name => "Primer Día de la Independencia", :regions => [:pe]}, + {:mday => 29, :name => "Segundo Día de la Independencia", :regions => [:pe]}], + 8 => [{:mday => 30, :name => "Santa Rosa de Lima", :regions => [:pe]}], + 9 => [{:mday => 24, :type => :informal, :name => "Día de las Fuerzas Armadas", :regions => [:pe]}], + 10 => [{:mday => 8, :name => "Batalla de Angamos", :regions => [:pe]}], + 11 => [{:mday => 1, :name => "Todos los Santos", :regions => [:pe]}], + 12 => [{:mday => 8, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Inmaculada Concepción", :regions => [:pe]}, + {:mday => 25, :name => "Navidad del Señor", :regions => [:pe]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ph.rb b/vendor/holidays/lib/generated_definitions/ph.rb new file mode 100644 index 00000000..020784cc --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ph.rb @@ -0,0 +1,50 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ph.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module PH # :nodoc: + def self.defined_regions + [:ph] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Maundy Thursday", :regions => [:ph]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:ph]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Holy Saturday", :regions => [:ph]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Easter Sunday", :regions => [:ph]}], + 1 => [{:mday => 1, :name => "New Year’s Day", :regions => [:ph]}], + 2 => [{:mday => 25, :type => :informal, :name => "People Power Anniversary", :regions => [:ph]}], + 4 => [{:mday => 9, :name => "The Day of Valor", :regions => [:ph]}], + 5 => [{:mday => 1, :name => "Labor Day", :regions => [:ph]}], + 6 => [{:mday => 12, :name => "Independence Day", :regions => [:ph]}], + 8 => [{:mday => 21, :name => "Ninoy Aquino Day", :regions => [:ph]}, + {:function => "ph_heroes_day(year)", :function_arguments => [:year], :name => "National Heroes Day", :regions => [:ph]}], + 11 => [{:mday => 1, :type => :informal, :name => "All Saints Day", :regions => [:ph]}, + {:mday => 30, :name => "Bonifacio Day", :regions => [:ph]}], + 12 => [{:mday => 25, :name => "Christmas Day", :regions => [:ph]}, + {:mday => 30, :name => "Rizal Day", :regions => [:ph]}, + {:mday => 31, :name => "New Year's Eve", :regions => [:ph]}] + } + end + + def self.custom_methods + { + "ph_heroes_day(year)" => Proc.new { |year| +date = Date.new(year, 8, -1) + +if date.wday != 1 + date -= date.wday - 1 +end + +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/pl.rb b/vendor/holidays/lib/generated_definitions/pl.rb new file mode 100644 index 00000000..be6a1d19 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/pl.rb @@ -0,0 +1,72 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/pl.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module PL # :nodoc: + def self.defined_regions + [:pl] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -52, :type => :informal, :name => "Tłusty Czwartek", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :type => :informal, :name => "Ostatki", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :type => :informal, :name => "Środa Popielcowa", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :type => :informal, :name => "Niedziela Palmowa", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :type => :informal, :name => "Wielki Czwartek", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Wielki Piątek", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :type => :informal, :name => "Wielka Sobota", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Niedziela Wielkanocna", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Poniedziałek Wielkanocny (Lany Poniedziałek)", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Zesłanie Ducha Świętego (Zielone Świątki)", :regions => [:pl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", :regions => [:pl]}], + 1 => [{:mday => 1, :name => "Nowy Rok", :regions => [:pl]}, + {:function => "pl_trzech_kroli(year)", :function_arguments => [:year], :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]}, + {:function => "pl_trzech_kroli_informal(year)", :function_arguments => [:year], :type => :informal, :name => "Objawienie Pańskie (święto Trzech Króli)", :regions => [:pl]}, + {:mday => 21, :type => :informal, :name => "Dzień Babci", :regions => [:pl]}, + {:mday => 22, :type => :informal, :name => "Dzień Dziadka", :regions => [:pl]}], + 2 => [{:mday => 2, :type => :informal, :name => "Ofiarowanie Pańskie (Matki Boskiej Gromnicznej)", :regions => [:pl]}, + {:mday => 14, :type => :informal, :name => "Dzień Zakochanych (Walentynki)", :regions => [:pl]}], + 3 => [{:mday => 8, :type => :informal, :name => "Dzień Kobiet", :regions => [:pl]}, + {:mday => 10, :type => :informal, :name => "Dzień Mężczyzn", :regions => [:pl]}], + 4 => [{:mday => 1, :type => :informal, :name => "Prima Aprilis", :regions => [:pl]}, + {:mday => 22, :type => :informal, :name => "Międzynarodowy Dzień Ziemi", :regions => [:pl]}], + 5 => [{:mday => 1, :name => "Święto Państwowe (Święto Pracy)", :regions => [:pl]}, + {:mday => 2, :type => :informal, :name => "Dzień Flagi Rzeczpospolitej Polskiej", :regions => [:pl]}, + {:mday => 3, :name => "Święto Narodowe Trzeciego Maja", :regions => [:pl]}], + 6 => [{:mday => 23, :type => :informal, :name => "Dzień Ojca", :regions => [:pl]}], + 8 => [{:mday => 15, :name => "Wniebowzięcie Najświętszej Maryi Panny", :regions => [:pl]}, + {:mday => 15, :name => "Święto Wojska Polskiego", :regions => [:pl]}], + 9 => [{:mday => 30, :type => :informal, :name => "Dzień Chłopaka", :regions => [:pl]}], + 10 => [{:mday => 14, :type => :informal, :name => "Dzień Nauczyciela (Dzień Edukacji Narodowej)", :regions => [:pl]}], + 11 => [{:mday => 1, :name => "Wszystkich Świętych", :regions => [:pl]}, + {:mday => 2, :type => :informal, :name => "Dzień Zaduszny", :regions => [:pl]}, + {:mday => 11, :name => "Narodowe Święto Niepodległości", :regions => [:pl]}, + {:mday => 29, :type => :informal, :name => "Andrzejki", :regions => [:pl]}], + 12 => [{:mday => 4, :type => :informal, :name => "Barbórka (Dzień Górnika, Naftowca i Gazownika)", :regions => [:pl]}, + {:mday => 6, :type => :informal, :name => "Mikołajki", :regions => [:pl]}, + {:mday => 24, :type => :informal, :name => "Wigilia Bożego Narodzenia", :regions => [:pl]}, + {:mday => 25, :name => "pierwszy dzień Bożego Narodzenia", :regions => [:pl]}, + {:mday => 26, :name => "drugi dzień Bożego Narodzenia", :regions => [:pl]}, + {:mday => 31, :type => :informal, :name => "Sylwester", :regions => [:pl]}] + } + end + + def self.custom_methods + { + "pl_trzech_kroli(year)" => Proc.new { |year| +year >= 2011 ? 6 : nil +}, + +"pl_trzech_kroli_informal(year)" => Proc.new { |year| +year < 2011 ? 6 : nil +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/pt.rb b/vendor/holidays/lib/generated_definitions/pt.rb new file mode 100644 index 00000000..4283454f --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/pt.rb @@ -0,0 +1,40 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/pt.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module PT # :nodoc: + def self.defined_regions + [:pt, :pt_li, :pt_po] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :type => :informal, :name => "Carnaval", :regions => [:pt]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Sexta-feira Santa", :regions => [:pt]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Páscoa", :regions => [:pt]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Corpo de Deus", :regions => [:pt]}], + 1 => [{:mday => 1, :name => "Ano Novo", :regions => [:pt]}], + 4 => [{:mday => 25, :name => "Dia da Liberdade", :regions => [:pt]}], + 5 => [{:mday => 1, :name => "Dia do Trabalhador", :regions => [:pt]}], + 6 => [{:mday => 10, :name => "Dia de Portugal", :regions => [:pt]}, + {:mday => 13, :name => "Dia de Santo António", :regions => [:pt_li]}, + {:mday => 24, :name => "Dia de São João", :regions => [:pt_po]}], + 8 => [{:mday => 15, :name => "Assunção de Nossa Senhora", :regions => [:pt]}], + 10 => [{:mday => 5, :name => "Dia da República", :regions => [:pt]}], + 11 => [{:mday => 1, :name => "Dia de Todos-os-Santos", :regions => [:pt]}], + 12 => [{:mday => 1, :name => "Restauração da Independência", :regions => [:pt]}, + {:mday => 8, :name => "Imaculada Conceição", :regions => [:pt]}, + {:mday => 25, :name => "Natal", :regions => [:pt]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ro.rb b/vendor/holidays/lib/generated_definitions/ro.rb new file mode 100644 index 00000000..b8c2f8de --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ro.rb @@ -0,0 +1,39 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ro.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module RO # :nodoc: + def self.defined_regions + [:ro] + end + + def self.holidays_by_month + { + 0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :year_ranges => { :from => 2018 },:name => "Paștele - Vinerea Mare", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Paștele - duminică", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Paștele - luni", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Rusaliile - 50", :regions => [:ro]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Rusaliile - 51", :regions => [:ro]}], + 1 => [{:mday => 1, :name => "Anul nou", :regions => [:ro]}, + {:mday => 2, :name => "Anul nou", :regions => [:ro]}, + {:mday => 24, :year_ranges => { :from => 2017 },:name => "Unirea Principatelor Române", :regions => [:ro]}], + 5 => [{:mday => 1, :name => "Ziua muncii", :regions => [:ro]}], + 6 => [{:mday => 1, :year_ranges => { :from => 2017 },:name => "Ziua Copilului", :regions => [:ro]}], + 8 => [{:mday => 15, :name => "Adormirea Maicii Domnului", :regions => [:ro]}], + 11 => [{:mday => 30, :name => "Sfântul Apostol Andrei", :regions => [:ro]}], + 12 => [{:mday => 1, :name => "Ziua Națională", :regions => [:ro]}, + {:mday => 25, :name => "Sărbătoarea Nașterii Domnului", :regions => [:ro]}, + {:mday => 26, :name => "Sărbătoarea Nașterii Domnului", :regions => [:ro]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/rs_cyrl.rb b/vendor/holidays/lib/generated_definitions/rs_cyrl.rb new file mode 100644 index 00000000..278e21db --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/rs_cyrl.rb @@ -0,0 +1,39 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/rs_cyrl.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module RS_CYRL # :nodoc: + def self.defined_regions + [:rs_cyrl] + end + + def self.holidays_by_month + { + 0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Велики петак", :regions => [:rs_cyrl]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Велика Субота", :regions => [:rs_cyrl]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Васкрс", :regions => [:rs_cyrl]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Васкрсни понедељак", :regions => [:rs_cyrl]}], + 1 => [{:mday => 1, :name => "Нова Година", :regions => [:rs_cyrl]}, + {:mday => 2, :name => "Нова Година", :regions => [:rs_cyrl]}, + {:mday => 7, :name => "Божић", :regions => [:rs_cyrl]}, + {:mday => 27, :name => "Свети Сава (Савиндан)", :regions => [:rs_cyrl]}], + 2 => [{:mday => 15, :name => "Дан државности Србије", :regions => [:rs_cyrl]}, + {:mday => 16, :name => "Дан државности Србије", :regions => [:rs_cyrl]}], + 5 => [{:mday => 1, :name => "Празник рада", :regions => [:rs_cyrl]}, + {:mday => 2, :name => "Празник рада", :regions => [:rs_cyrl]}, + {:mday => 9, :name => "Дан победе над фашизмом", :regions => [:rs_cyrl]}], + 6 => [{:mday => 28, :name => "Видовдан", :regions => [:rs_cyrl]}], + 11 => [{:mday => 11, :name => "Дан примирја", :regions => [:rs_cyrl]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/rs_la.rb b/vendor/holidays/lib/generated_definitions/rs_la.rb new file mode 100644 index 00000000..c85a8a5c --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/rs_la.rb @@ -0,0 +1,39 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/rs_la.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module RS_LA # :nodoc: + def self.defined_regions + [:rs_la] + end + + def self.holidays_by_month + { + 0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Veliki Petak", :regions => [:rs_la]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Velika Subota", :regions => [:rs_la]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :name => "Uskrs", :regions => [:rs_la]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Vaskrsni ponedeljak", :regions => [:rs_la]}], + 1 => [{:mday => 1, :name => "Nova Godina", :regions => [:rs_la]}, + {:mday => 2, :name => "Nova Godina", :regions => [:rs_la]}, + {:mday => 7, :name => "Božić", :regions => [:rs_la]}, + {:mday => 27, :name => "Dan Svetog Save", :regions => [:rs_la]}], + 2 => [{:mday => 15, :name => "Dan državnosti Srbije", :regions => [:rs_la]}, + {:mday => 16, :name => "Dan državnosti Srbije", :regions => [:rs_la]}], + 5 => [{:mday => 1, :name => "Praznik rada", :regions => [:rs_la]}, + {:mday => 2, :name => "Praznik rada", :regions => [:rs_la]}, + {:mday => 9, :name => "Dan pobede", :regions => [:rs_la]}], + 6 => [{:mday => 28, :name => "Vidovdan", :regions => [:rs_la]}], + 11 => [{:mday => 11, :name => "Dan primirja", :regions => [:rs_la]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ru.rb b/vendor/holidays/lib/generated_definitions/ru.rb new file mode 100644 index 00000000..5d6467ff --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ru.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ru.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module RU # :nodoc: + def self.defined_regions + [:ru] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "Новый год", :regions => [:ru]}, + {:mday => 2, :name => "Новогодний праздник", :regions => [:ru]}, + {:mday => 3, :name => "Новогодний праздник", :regions => [:ru]}, + {:mday => 4, :name => "Новогодний праздник", :regions => [:ru]}, + {:mday => 5, :name => "Новогодний праздник", :regions => [:ru]}, + {:mday => 7, :name => "Рождество Христово", :regions => [:ru]}], + 2 => [{:mday => 23, :name => "День защитника Отечества", :regions => [:ru]}], + 3 => [{:mday => 8, :name => "Международный женский день", :regions => [:ru]}], + 5 => [{:mday => 1, :name => "Праздник Весны и Труда", :regions => [:ru]}, + {:mday => 9, :name => "День Победы", :regions => [:ru]}], + 6 => [{:mday => 12, :name => "День России", :regions => [:ru]}], + 8 => [{:mday => 22, :name => "День Государственного флага Российской Федерации", :regions => [:ru]}], + 11 => [{:mday => 4, :name => "День народного единства", :regions => [:ru]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/scandinavia.rb b/vendor/holidays/lib/generated_definitions/scandinavia.rb new file mode 100644 index 00000000..5ba3e391 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/scandinavia.rb @@ -0,0 +1,166 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/dk.yaml, definitions/is.yaml, definitions/no.yaml, definitions/se.yaml, definitions/fi.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module SCANDINAVIA # :nodoc: + def self.defined_regions + [:dk, :is, :no, :se, :fi] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -49, :type => :informal, :name => "Fastelavn", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :type => :informal, :name => "Palmesøndag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skærtorsdag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Påskedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 26, :name => "Store Bededag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pinsedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. Pinsedag", :regions => [:dk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Bolludagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Sprengidagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -46, :name => "Öskudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :name => "Pálmasunnudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skírdagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Föstudaginn langi", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Páskadagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Annar í páskum", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Uppstigningardagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Hvítasunnudagur", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "Annar í hvítasunnu", :regions => [:is]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -49, :type => :informal, :name => "Fastelavn", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -7, :name => "Palmesøndag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Skjærtorsdag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Langfredag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "1. påskedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. påskedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi Himmelfartsdag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "1. pinsedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 50, :name => "2. pinsedag", :regions => [:no]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Långfredagen", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :type => :informal, :name => "Påskafton", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Påskdagen", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Annandag påsk", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi himmelsfärdsdag", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pingstdagen", :regions => [:se]}, + {:function => "se_alla_helgons_dag(year)", :function_arguments => [:year], :name => "Alla helgons dag", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Pitkäperjantai", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pääsiäispäivä", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "2. Pääsiäispäivä", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Helatorstai", :regions => [:fi]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Helluntaipäivä", :regions => [:fi]}, + {:function => "fi_pyhainpaiva(year)", :function_arguments => [:year], :name => "Pyhäinpäivä", :regions => [:fi]}], + 1 => [{:mday => 1, :name => "Nytårsdag", :regions => [:dk]}, + {:mday => 1, :name => "Nýársdagur", :regions => [:is]}, + {:mday => 6, :name => "Þrettándinn", :regions => [:is]}, + {:mday => 19, :type => :informal, :name => "Bóndadagur", :regions => [:is]}, + {:mday => 1, :name => "Nyttårsdag", :regions => [:no]}, + {:mday => 1, :name => "Nyårsdagen", :regions => [:se]}, + {:mday => 6, :name => "Trettondedag jul", :regions => [:se]}, + {:mday => 1, :name => "Uudenvuodenpäivä", :regions => [:fi]}, + {:mday => 6, :name => "Loppiainen", :regions => [:fi]}], + 4 => [{:mday => 1, :type => :informal, :name => "1. april", :regions => [:dk]}, + {:mday => 9, :type => :informal, :name => "Danmarks besættelse", :regions => [:dk]}, + {:mday => 16, :type => :informal, :name => "Dronningens fødselsdag", :regions => [:dk]}, + {:function => "is_sumardagurinn_fyrsti(year)", :function_arguments => [:year], :name => "Sumardagurinn fyrsti", :regions => [:is]}], + 5 => [{:mday => 1, :type => :informal, :name => "Arbejdernes kampdag", :regions => [:dk]}, + {:mday => 5, :type => :informal, :name => "Danmarks befrielse", :regions => [:dk]}, + {:mday => 1, :name => "Verkalýðsdagurinn", :regions => [:is]}, + {:mday => 13, :name => "Mæðradagurinn", :regions => [:is]}, + {:mday => 1, :name => "1. mai", :regions => [:no]}, + {:mday => 17, :name => "17. mai", :regions => [:no]}, + {:mday => 1, :name => "Första maj", :regions => [:se]}, + {:mday => 1, :name => "Vappu", :regions => [:fi]}], + 6 => [{:mday => 5, :type => :informal, :name => "Grundlovsdag", :regions => [:dk]}, + {:mday => 15, :type => :informal, :name => "Valdemarsdag og Genforeningsdag", :regions => [:dk]}, + {:mday => 23, :type => :informal, :name => "Sankt Hans aften", :regions => [:dk]}, + {:mday => 3, :type => :informal, :name => "Sjómannadagurinn", :regions => [:is]}, + {:mday => 17, :name => "Lýðveldisdagurinn", :regions => [:is]}, + {:mday => 6, :name => "Nationaldagen", :regions => [:se]}, + {:function => "se_midsommardagen(year)", :function_arguments => [:year], :name => "Midsommardagen", :regions => [:se]}, + {:function => "se_midsommardagen(year)", :function_arguments => [:year], :function_modifier => -1, :type => :informal, :name => "Midsommarafton", :regions => [:se]}, + {:function => "fi_juhannusaatto(year)", :function_arguments => [:year], :name => "Juhannusaatto", :regions => [:fi]}, + {:function => "fi_juhannuspaiva(year)", :function_arguments => [:year], :name => "Juhannuspäivä", :regions => [:fi]}], + 11 => [{:mday => 10, :type => :informal, :name => "Mortensaften", :regions => [:dk]}, + {:mday => 16, :name => "Dagur íslenskrar tungu", :regions => [:is]}], + 12 => [{:mday => 13, :type => :informal, :name => "Sankt Lucia", :regions => [:dk]}, + {:mday => 24, :type => :informal, :name => "Juleaftensdag", :regions => [:dk]}, + {:mday => 25, :name => "1. juledag", :regions => [:dk]}, + {:mday => 26, :name => "2. juledag", :regions => [:dk]}, + {:mday => 24, :name => "Jól", :regions => [:is]}, + {:mday => 25, :name => "Jól", :regions => [:is]}, + {:mday => 26, :name => "Jól", :regions => [:is]}, + {:mday => 31, :name => "Gamlárskvöld", :regions => [:is]}, + {:mday => 24, :type => :informal, :name => "Julaften", :regions => [:no]}, + {:mday => 25, :name => "1. juledag", :regions => [:no]}, + {:mday => 26, :name => "2. juledag", :regions => [:no]}, + {:mday => 31, :type => :informal, :name => "Nyttårsaften", :regions => [:no]}, + {:mday => 24, :type => :informal, :name => "Julafton", :regions => [:se]}, + {:mday => 25, :name => "Juldagen", :regions => [:se]}, + {:mday => 26, :name => "Annandag jul", :regions => [:se]}, + {:mday => 31, :type => :informal, :name => "Nyårsafton", :regions => [:se]}, + {:mday => 6, :name => "Itsenäisyyspäivä", :regions => [:fi]}, + {:mday => 24, :name => "Jouluaatto", :regions => [:fi]}, + {:mday => 25, :name => "Joulupäivä", :regions => [:fi]}, + {:mday => 26, :name => "Tapaninpäivä", :regions => [:fi]}], + 2 => [{:mday => 18, :type => :informal, :name => "Konudagur", :regions => [:is]}], + 8 => [{:wday => 1, :week => 1, :name => "Frídagur verslunarmanna", :regions => [:is]}] + } + end + + def self.custom_methods + { + "is_sumardagurinn_fyrsti(year)" => Proc.new { |year| +date = Date.civil(year,4,18) +if date.wday < 4 + date += (4 - date.wday) +else + date += (11 - date.wday) +end +date +}, + +"se_midsommardagen(year)" => Proc.new { |year| +date = Date.civil(year,6,20) +date += (6 - date.wday) +date +}, + +"se_alla_helgons_dag(year)" => Proc.new { |year| +date = Date.civil(year,10,31) +date += (6 - date.wday) +date +}, + +"fi_juhannusaatto(year)" => Proc.new { |year| +date = Date.civil(year,6,19) +if date.wday > 5 #if 19.6 is saturday + date += 6 +else + date += (5 - date.wday) +end +date +}, + +"fi_juhannuspaiva(year)" => Proc.new { |year| +date = Date.civil(year,6,20) +date += (6 - date.wday) +date +}, + +"fi_pyhainpaiva(year)" => Proc.new { |year| +date = Date.civil(year,10,31) +date += (6 - date.wday) +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/se.rb b/vendor/holidays/lib/generated_definitions/se.rb new file mode 100644 index 00000000..9d45d6fc --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/se.rb @@ -0,0 +1,53 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/se.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module SE # :nodoc: + def self.defined_regions + [:se] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Långfredagen", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :type => :informal, :name => "Påskafton", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Påskdagen", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Annandag påsk", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 39, :name => "Kristi himmelsfärdsdag", :regions => [:se]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "Pingstdagen", :regions => [:se]}, + {:function => "se_alla_helgons_dag(year)", :function_arguments => [:year], :name => "Alla helgons dag", :regions => [:se]}], + 1 => [{:mday => 1, :name => "Nyårsdagen", :regions => [:se]}, + {:mday => 6, :name => "Trettondedag jul", :regions => [:se]}], + 5 => [{:mday => 1, :name => "Första maj", :regions => [:se]}], + 6 => [{:mday => 6, :name => "Nationaldagen", :regions => [:se]}, + {:function => "se_midsommardagen(year)", :function_arguments => [:year], :name => "Midsommardagen", :regions => [:se]}, + {:function => "se_midsommardagen(year)", :function_arguments => [:year], :function_modifier => -1, :type => :informal, :name => "Midsommarafton", :regions => [:se]}], + 12 => [{:mday => 24, :type => :informal, :name => "Julafton", :regions => [:se]}, + {:mday => 25, :name => "Juldagen", :regions => [:se]}, + {:mday => 26, :name => "Annandag jul", :regions => [:se]}, + {:mday => 31, :type => :informal, :name => "Nyårsafton", :regions => [:se]}] + } + end + + def self.custom_methods + { + "se_midsommardagen(year)" => Proc.new { |year| +date = Date.civil(year,6,20) +date += (6 - date.wday) +date +}, + +"se_alla_helgons_dag(year)" => Proc.new { |year| +date = Date.civil(year,10,31) +date += (6 - date.wday) +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/sg.rb b/vendor/holidays/lib/generated_definitions/sg.rb new file mode 100644 index 00000000..8b9c2a2d --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/sg.rb @@ -0,0 +1,31 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/sg.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module SG # :nodoc: + def self.defined_regions + [:sg] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:sg]}], + 1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:sg]}], + 2 => [{:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:sg]}, + {:mday => 15, :type => :informal, :name => "Total Defence Day", :regions => [:sg]}], + 5 => [{:mday => 1, :name => "Labour Day", :regions => [:sg]}], + 8 => [{:mday => 9, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "National Day", :regions => [:sg]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:sg]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/si.rb b/vendor/holidays/lib/generated_definitions/si.rb new file mode 100644 index 00000000..bc9305b8 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/si.rb @@ -0,0 +1,38 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/si.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module SI # :nodoc: + def self.defined_regions + [:si] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :name => "velikonočna nedelja", :regions => [:si]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "velikonočni ponedeljek", :regions => [:si]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 49, :name => "binkošti", :regions => [:si]}], + 1 => [{:mday => 1, :name => "novo leto", :regions => [:si]}], + 2 => [{:mday => 8, :name => "Prešernov dan, slovenski kulturni praznik", :regions => [:si]}], + 4 => [{:mday => 27, :name => "dan upora proti okupatorju", :regions => [:si]}], + 5 => [{:mday => 1, :name => "praznik dela", :regions => [:si]}, + {:mday => 2, :name => "praznik dela", :regions => [:si]}], + 6 => [{:mday => 25, :name => "dan državnosti", :regions => [:si]}], + 8 => [{:mday => 15, :name => "Marijino vnebovzetje", :regions => [:si]}], + 10 => [{:mday => 31, :name => "dan reformacije", :regions => [:si]}], + 11 => [{:mday => 1, :name => "dan spomina na mrtve", :regions => [:si]}], + 12 => [{:mday => 25, :name => "božič", :regions => [:si]}, + {:mday => 26, :name => "dan samostojnosti in enotnosti", :regions => [:si]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/sk.rb b/vendor/holidays/lib/generated_definitions/sk.rb new file mode 100644 index 00000000..f5b19261 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/sk.rb @@ -0,0 +1,39 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/sk.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module SK # :nodoc: + def self.defined_regions + [:sk] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Veľkonočný pondelok", :regions => [:sk]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Veľký piatok", :regions => [:sk]}], + 1 => [{:mday => 1, :name => "Nový rok", :regions => [:sk]}, + {:mday => 6, :name => "Zjavenie Pána (Traja králi)", :regions => [:sk]}], + 5 => [{:mday => 1, :name => "Sviatok práce", :regions => [:sk]}, + {:mday => 8, :name => "Deň víťazstva nad fašizmom", :regions => [:sk]}], + 7 => [{:mday => 5, :name => "Sviatok svätého Cyrila a svätého Metoda", :regions => [:sk]}], + 8 => [{:mday => 29, :name => "Výročie Slovenského národného povstania", :regions => [:sk]}], + 9 => [{:mday => 1, :name => "Deň Ústavy Slovenskej republiky", :regions => [:sk]}, + {:mday => 15, :name => "Sedembolestná Panna Mária", :regions => [:sk]}], + 11 => [{:mday => 1, :name => "Sviatok všetkých svätých", :regions => [:sk]}, + {:mday => 17, :name => "Deň boja za slobodu a demokraciu", :regions => [:sk]}], + 12 => [{:mday => 24, :name => "Štedrý deň", :regions => [:sk]}, + {:mday => 25, :name => "1. sviatok vianočný", :regions => [:sk]}, + {:mday => 26, :name => "2. sviatok vianočný", :regions => [:sk]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/southamerica.rb b/vendor/holidays/lib/generated_definitions/southamerica.rb new file mode 100644 index 00000000..c63e5fc3 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/southamerica.rb @@ -0,0 +1,228 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ar.yaml, definitions/br.yaml, definitions/cl.yaml, definitions/co.yaml, definitions/pe.yaml, definitions/ve.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module SOUTHAMERICA # :nodoc: + def self.defined_regions + [:ar, :br, :cl, :co, :pe, :ve] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:ar]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Carnaval Lunes", :regions => [:ar]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Carnaval Martes", :regions => [:ar]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :type => :informal, :name => "Carnaval", :regions => [:br]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Sexta-feira Santa", :regions => [:br]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Páscoa", :regions => [:br]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 60, :name => "Corpus Christi", :regions => [:br]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:cl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -1, :name => "Sábado Santo", :regions => [:cl]}, + {:function => "st_peter_st_paul_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "San Pedro y San Pablo", :regions => [:cl]}, + {:function => "other_churches_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2008 },:name => "Día de las Iglesias Evangélicas y Protestantes", :regions => [:cl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 43, :name => "Día de la Ascensión", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 64, :name => "Corpus Christi", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 71, :name => "Sagrado Corazón", :regions => [:co]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:pe]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:pe]}, + {:function => "easter(year)", :function_arguments => [:year], :name => "Pascua", :regions => [:pe]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Lunes Carnaval", :regions => [:ve]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Martes Carnaval", :regions => [:ve]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:ve]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:ve]}], + 1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:ar]}, + {:mday => 1, :name => "Dia da Confraternização Universal", :regions => [:br]}, + {:mday => 1, :name => "Año Nuevo", :regions => [:cl]}, + {:mday => 1, :name => "Año Nuevo", :regions => [:co]}, + {:function => "epiphany(year)", :function_arguments => [:year], :name => "Día de los Reyes Magos", :regions => [:co]}, + {:mday => 1, :name => "Año Nuevo", :regions => [:pe]}, + {:mday => 6, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Día de los Reyes Magos", :regions => [:pe]}, + {:mday => 1, :name => "Año Nuevo", :regions => [:ve]}], + 3 => [{:mday => 24, :name => "Día Nacional de la Memoria por la Verdad y la Justicia", :regions => [:ar]}, + {:function => "saint_josephs_day(year)", :function_arguments => [:year], :name => "Día de San José", :regions => [:co]}], + 4 => [{:mday => 2, :name => "Día del Veterano y de los Caídos en la Guerra de Malvinas", :regions => [:ar]}, + {:mday => 21, :name => "Dia de Tiradentes", :regions => [:br]}, + {:mday => 19, :name => "Declaración Independencia", :regions => [:ve]}], + 5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:ar]}, + {:mday => 25, :name => "Día de la Revolución de Mayo", :regions => [:ar]}, + {:mday => 1, :name => "Dia do Trabalho", :regions => [:br]}, + {:mday => 1, :name => "Día del Trabajo", :regions => [:cl]}, + {:mday => 21, :name => "Día de las Glorias Navales", :regions => [:cl]}, + {:mday => 1, :name => "Día del Trabajo", :regions => [:co]}, + {:mday => 1, :name => "Día del Trabajador", :regions => [:pe]}, + {:wday => 0, :week => 2, :type => :informal, :name => "Día de la Madre", :regions => [:pe]}, + {:mday => 1, :name => "Día del Trabajador", :regions => [:ve]}], + 6 => [{:mday => 20, :name => "Día de la Bandera", :regions => [:ar]}, + {:mday => 29, :year_ranges => { :until => 1999 },:name => "San Pedro y San Pablo", :regions => [:cl]}, + {:function => "saint_peter_and_saint_paul(year)", :function_arguments => [:year], :name => "San Pedro y San Pablo", :regions => [:co]}, + {:mday => 7, :type => :informal, :name => "Día de la Bandera", :regions => [:pe]}, + {:wday => 0, :week => 3, :type => :informal, :name => "Día del Padre", :regions => [:pe]}, + {:mday => 24, :type => :informal, :name => "Inti Raymi", :regions => [:pe]}, + {:mday => 29, :name => "San Pablo y San Pedro", :regions => [:pe]}, + {:mday => 24, :name => "Aniversario Batalla de Carabobo", :regions => [:ve]}], + 7 => [{:mday => 8, :name => "Feriado puente turístico", :regions => [:ar]}, + {:mday => 9, :name => "Día de la Independencia", :regions => [:ar]}, + {:mday => 16, :name => "Día de la Virgen del Carmen", :regions => [:cl]}, + {:mday => 20, :name => "Día de la Independencia", :regions => [:co]}, + {:mday => 28, :name => "Primer Día de la Independencia", :regions => [:pe]}, + {:mday => 29, :name => "Segundo Día de la Independencia", :regions => [:pe]}, + {:mday => 5, :name => "Día de la Independencia", :regions => [:ve]}, + {:mday => 24, :name => "Natalicio de Simón Bolívar", :regions => [:ve]}], + 8 => [{:mday => 15, :name => "Paso a la Inmortalidad del General José de San Martín", :regions => [:ar]}, + {:mday => 15, :name => "Asunción de la Virgen", :regions => [:cl]}, + {:mday => 7, :name => "Batalla de Boyacá", :regions => [:co]}, + {:function => "assumption_of_mary(year)", :function_arguments => [:year], :name => "La Asunción de la Virgen", :regions => [:co]}, + {:mday => 30, :name => "Santa Rosa de Lima", :regions => [:pe]}], + 10 => [{:mday => 12, :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]}, + {:mday => 12, :name => "Dia de Nossa Senhora Aparecida", :regions => [:br]}, + {:mday => 12, :year_ranges => { :until => 1999 },:name => "Encuentro de Dos Mundos", :regions => [:cl]}, + {:function => "columbus_day_cl(year)", :function_arguments => [:year], :year_ranges => { :from => 2000 },:name => "Encuentro de Dos Mundos", :regions => [:cl]}, + {:function => "columbus_day(year)", :function_arguments => [:year], :name => "Día de la Raza", :regions => [:co]}, + {:mday => 8, :name => "Batalla de Angamos", :regions => [:pe]}, + {:mday => 12, :name => "Día de la Resistencia Indígena", :regions => [:ve]}], + 11 => [{:mday => 20, :name => "Día de la Soberanía Nacional", :regions => [:ar]}, + {:mday => 2, :name => "Dia de Finados", :regions => [:br]}, + {:mday => 15, :name => "Proclamação da República", :regions => [:br]}, + {:mday => 1, :name => "Día de Todos los Santos", :regions => [:cl]}, + {:function => "all_saints_day(year)", :function_arguments => [:year], :name => "Día de Todos los Santos", :regions => [:co]}, + {:function => "independence_of_cartagena(year)", :function_arguments => [:year], :name => "Independencia de Cartagena", :regions => [:co]}, + {:mday => 1, :name => "Todos los Santos", :regions => [:pe]}], + 12 => [{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:ar]}, + {:mday => 9, :name => "Feriado puente turístico", :regions => [:ar]}, + {:mday => 25, :name => "Navidad", :regions => [:ar]}, + {:mday => 25, :name => "Natal", :regions => [:br]}, + {:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:cl]}, + {:mday => 25, :name => "Navidad", :regions => [:cl]}, + {:mday => 8, :name => "Día de la Inmaculada Concepción", :regions => [:co]}, + {:mday => 25, :name => "Navidad", :regions => [:co]}, + {:mday => 8, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Inmaculada Concepción", :regions => [:pe]}, + {:mday => 25, :name => "Navidad del Señor", :regions => [:pe]}, + {:mday => 25, :name => "Día de Navidad", :regions => [:ve]}], + 9 => [{:mday => 7, :name => "Proclamação da Independência", :regions => [:br]}, + {:mday => 18, :name => "Independencia Nacional", :regions => [:cl]}, + {:mday => 19, :name => "Día de las Glorias del Ejército", :regions => [:cl]}, + {:mday => 24, :type => :informal, :name => "Día de las Fuerzas Armadas", :regions => [:pe]}] + } + end + + def self.custom_methods + { + "st_peter_st_paul_cl(year)" => Proc.new { |year| +date = Date.civil(year, 6, 29) +if [2,3,4].include?(date.wday) + date -= (date.wday - 1) +elsif date.wday == 5 + date += 3 +end +date +}, + +"columbus_day_cl(year)" => Proc.new { |year| +date = Date.civil(year, 10, 12) +if [2,3,4].include?(date.wday) + date -= (date.wday - 1) +elsif date.wday == 5 + date += 3 +end +date +}, + +"other_churches_day_cl(year)" => Proc.new { |year| +date = Date.civil(year, 10, 31) +if date.wday == 2 + date -= 4 +elsif date.wday == 3 + date += 2 +end +date +}, + +"to_following_monday_if_not_monday(date)" => Proc.new { |date| +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"epiphany(year)" => Proc.new { |year| +date = Date.civil( year, 1, 6 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"saint_josephs_day(year)" => Proc.new { |year| +date = Date.civil( year, 3, 19 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"saint_peter_and_saint_paul(year)" => Proc.new { |year| +date = Date.civil( year, 6, 29 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"assumption_of_mary(year)" => Proc.new { |year| +date = Date.civil( year, 8, 15 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"columbus_day(year)" => Proc.new { |year| +date = Date.civil( year, 10, 12 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"all_saints_day(year)" => Proc.new { |year| +date = Date.civil( year, 11, 1 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + +"independence_of_cartagena(year)" => Proc.new { |year| +date = Date.civil( year, 11, 11 ) +if date.wday > 1 + date += ( 8 - date.wday ) +elsif date.wday == 0 + date += 1 +end +date +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/th.rb b/vendor/holidays/lib/generated_definitions/th.rb new file mode 100644 index 00000000..be0aac31 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/th.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/th.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module TH # :nodoc: + def self.defined_regions + [:th] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "วันขึ้นปีใหม่", :regions => [:th]}], + 4 => [{:mday => 6, :name => "วันจักรี", :regions => [:th]}, + {:mday => 13, :name => "วันสงกรานต์", :regions => [:th]}, + {:mday => 14, :name => "วันสงกรานต์", :regions => [:th]}, + {:mday => 15, :name => "วันสงกรานต์", :regions => [:th]}], + 7 => [{:mday => 28, :name => "วันเฉลิมพระชนมพรรษาสมเด็จพระเจ้าอยู่หัวมหาวชิราลงกรณ บดินทรเทพยวรางกูร", :regions => [:th]}], + 8 => [{:mday => 12, :name => "วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถในรัชกาลที่ ๙", :regions => [:th]}], + 10 => [{:mday => 13, :name => "วันคล้ายวันสวรรคตพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร", :regions => [:th]}, + {:mday => 23, :name => "วันปิยมหาราช", :regions => [:th]}], + 12 => [{:mday => 5, :name => "วันคล้ายวันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร", :regions => [:th]}, + {:mday => 10, :name => "วันรัฐธรรมนูญ", :regions => [:th]}, + {:mday => 31, :name => "วันสิ้นปี", :regions => [:th]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/tn.rb b/vendor/holidays/lib/generated_definitions/tn.rb new file mode 100644 index 00000000..1790d187 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/tn.rb @@ -0,0 +1,32 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/tn.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module TN # :nodoc: + def self.defined_regions + [:tn] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "Jour de l'an", :regions => [:tn]}, + {:mday => 14, :name => "Fête de la Révolution et de la Jeunesse", :regions => [:tn]}], + 3 => [{:mday => 20, :name => "Fête de l'Indépendance", :regions => [:tn]}], + 4 => [{:mday => 9, :name => "Journée des Martyrs", :regions => [:tn]}], + 5 => [{:mday => 1, :name => "Fête du travail", :regions => [:tn]}], + 7 => [{:mday => 25, :name => "Fête de la République", :regions => [:tn]}], + 8 => [{:mday => 13, :name => "Fête de la Femme et de la Famille", :regions => [:tn]}], + 10 => [{:mday => 15, :name => "Fête de l'Évacuation", :regions => [:tn]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/tr.rb b/vendor/holidays/lib/generated_definitions/tr.rb new file mode 100644 index 00000000..fb257ee4 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/tr.rb @@ -0,0 +1,64 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/tr.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module TR # :nodoc: + def self.defined_regions + [:tr] + end + + def self.holidays_by_month + { + 0 => [{:function => "ramadan_feast(year)", :function_arguments => [:year], :name => "Ramazan Bayramı", :regions => [:tr]}, + {:function => "ramadan_feast(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Ramazan Bayramı (ikinci tatil)", :regions => [:tr]}, + {:function => "ramadan_feast(year)", :function_arguments => [:year], :function_modifier => 2, :name => "Ramazan Bayramı (üçüncü tatil)", :regions => [:tr]}, + {:function => "sacrifice_feast(year)", :function_arguments => [:year], :name => "Kurban Bayramı", :regions => [:tr]}, + {:function => "sacrifice_feast(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Kurban Bayramı (ikinci tatil)", :regions => [:tr]}, + {:function => "sacrifice_feast(year)", :function_arguments => [:year], :function_modifier => 2, :name => "Kurban Bayramı (üçüncü tatil)", :regions => [:tr]}, + {:function => "sacrifice_feast(year)", :function_arguments => [:year], :function_modifier => 3, :name => "Kurban Bayramı (dördüncü tatil)", :regions => [:tr]}], + 1 => [{:mday => 1, :name => "Yılbaşı", :regions => [:tr]}], + 4 => [{:mday => 23, :name => "Ulusal Egemenlik ve Çocuk Bayramı", :regions => [:tr]}], + 5 => [{:mday => 1, :name => "Emek ve Dayanışma Günü", :regions => [:tr]}, + {:mday => 19, :name => "Atatürk'ü Anma Gençlik ve Spor Bayramı", :regions => [:tr]}], + 7 => [{:mday => 15, :year_ranges => { :from => 2016 },:name => "Demokrasi ve Milli Birlik Günü", :regions => [:tr]}], + 8 => [{:mday => 30, :name => "Zafer Bayramı", :regions => [:tr]}], + 10 => [{:mday => 29, :name => "Cumhuriyet Bayramı", :regions => [:tr]}] + } + end + + def self.custom_methods + { + "ramadan_feast(year)" => Proc.new { |year| +begin_of_ramadan_feast = { + '2014' => Date.civil(2014, 7, 28), + '2015' => Date.civil(2015, 7, 17), + '2016' => Date.civil(2016, 7, 5), + '2017' => Date.civil(2017, 6, 25), + '2018' => Date.civil(2018, 6, 15), + '2019' => Date.civil(2019, 6, 4), + '2020' => Date.civil(2020, 5, 24) +} +begin_of_ramadan_feast[year.to_s] +}, + +"sacrifice_feast(year)" => Proc.new { |year| +begin_of_sacrifice_feast = { + '2014' => Date.civil(2014, 10, 4), + '2015' => Date.civil(2015, 9, 24), + '2016' => Date.civil(2016, 9, 12), + '2017' => Date.civil(2017, 9, 1), + '2018' => Date.civil(2018, 8, 21), + '2019' => Date.civil(2019, 8, 11), + '2020' => Date.civil(2020, 7, 31) +} +begin_of_sacrifice_feast[year.to_s] +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ua.rb b/vendor/holidays/lib/generated_definitions/ua.rb new file mode 100644 index 00000000..5d932376 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ua.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ua.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module UA # :nodoc: + def self.defined_regions + [:ua] + end + + def self.holidays_by_month + { + 0 => [{:function => "orthodox_easter(year)", :function_arguments => [:year], :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Великдень", :regions => [:ua]}, + {:function => "orthodox_easter(year)", :function_arguments => [:year], :function_modifier => 49, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Трійця", :regions => [:ua]}], + 1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Новий Рік", :regions => [:ua]}, + {:mday => 7, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Різдво Христове", :regions => [:ua]}], + 3 => [{:mday => 8, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Міжнародний жіночий день", :regions => [:ua]}], + 5 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День праці", :regions => [:ua]}, + {:mday => 2, :year_ranges => { :until => 2017 },:name => "День міжнародної солідарності трудящих", :regions => [:ua]}, + {:mday => 9, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День перемоги над нацизмом у Другій світовій війні", :regions => [:ua]}], + 6 => [{:mday => 28, :year_ranges => { :from => 1997 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День Конституції", :regions => [:ua]}], + 7 => [{:mday => 16, :year_ranges => { :limited => [1991] },:name => "День Незалежності України", :regions => [:ua]}], + 8 => [{:mday => 24, :year_ranges => { :from => 1992 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День Незалежності", :regions => [:ua]}], + 10 => [{:mday => 14, :year_ranges => { :from => 2015 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "День захисника України", :regions => [:ua]}], + 12 => [{:mday => 25, :year_ranges => { :from => 2017 },:observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Різдво Христове", :regions => [:ua]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/unitednations.rb b/vendor/holidays/lib/generated_definitions/unitednations.rb new file mode 100644 index 00000000..495c662f --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/unitednations.rb @@ -0,0 +1,81 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/unitednations.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module UNITEDNATIONS # :nodoc: + def self.defined_regions + [:unitednations] + end + + def self.holidays_by_month + { + 2 => [{:mday => 2, :name => "International Mother Language Day", :regions => [:unitednations]}], + 3 => [{:mday => 8, :name => "United Nations Day for Women's Rights and International Peace", :regions => [:unitednations]}, + {:mday => 21, :name => "International Day for the Elimination of Racial Discrimination", :regions => [:unitednations]}, + {:mday => 21, :name => "Beginning of the Week of Solidarity with the Peoples Struggling against Racism and Racial Discrimination", :regions => [:unitednations]}, + {:mday => 22, :name => "World Day for Water", :regions => [:unitednations]}, + {:mday => 23, :name => "World Meteorological Day", :regions => [:unitednations]}], + 4 => [{:mday => 7, :name => "World Health Day", :regions => [:unitednations]}, + {:mday => 23, :name => "World Book and Copyright Day", :regions => [:unitednations]}], + 5 => [{:mday => 3, :name => "World Press Freedom Day", :regions => [:unitednations]}, + {:mday => 15, :name => "International Day of Families", :regions => [:unitednations]}, + {:mday => 17, :name => "World Telecommunication Day", :regions => [:unitednations]}, + {:mday => 21, :name => "World Day for Cultural Diversity for Dialogue and Development", :regions => [:unitednations]}, + {:mday => 22, :name => "International Day for Biological Diversity", :regions => [:unitednations]}, + {:mday => 25, :name => "Beginning of the Week of Solidarity with the Peoples of Non-Self-Governing Territories", :regions => [:unitednations]}, + {:mday => 29, :name => "International Day of United Nations Peacekeepers", :regions => [:unitednations]}, + {:mday => 31, :name => "World No-Tobacco Day", :regions => [:unitednations]}], + 6 => [{:mday => 4, :name => "International Day of Innocent Children Victims of Aggression", :regions => [:unitednations]}, + {:mday => 5, :name => "World Environment Day", :regions => [:unitednations]}, + {:mday => 17, :name => "World Day to Combat Desertification and Drought", :regions => [:unitednations]}, + {:mday => 20, :name => "World Refugee Day", :regions => [:unitednations]}, + {:mday => 23, :name => "United Nations Public Service Day", :regions => [:unitednations]}, + {:mday => 26, :name => "International Day against Drug Abuse and Illicit Trafficking", :regions => [:unitednations]}, + {:mday => 26, :name => "International Day in Support of Victims of Torture", :regions => [:unitednations]}], + 7 => [{:wday => 6, :week => 1, :name => "International Day of Cooperatives", :regions => [:unitednations]}, + {:mday => 11, :name => "World Population Day", :regions => [:unitednations]}], + 8 => [{:mday => 9, :name => "International Day of the World's Indigenous People", :regions => [:unitednations]}, + {:mday => 12, :name => "International Youth Day", :regions => [:unitednations]}, + {:mday => 23, :name => "International Day for the Remembrance of the Slave Trade and Its Abolition", :regions => [:unitednations]}], + 9 => [{:mday => 8, :name => "International Literacy Day", :regions => [:unitednations]}, + {:mday => 16, :name => "International Day for the Preservation of the Ozone Layer", :regions => [:unitednations]}, + {:mday => 21, :name => "International Day of Peace", :regions => [:unitednations]}, + {:mday => 1, :name => "International Day of Older Persons", :regions => [:unitednations]}], + 10 => [{:mday => 4, :name => "World Space Week", :regions => [:unitednations]}, + {:mday => 5, :name => "World Teachers' Day", :regions => [:unitednations]}, + {:wday => 1, :week => 1, :name => "World Habitat Day", :regions => [:unitednations]}, + {:wday => 3, :week => 2, :name => "International Day for Natural Disaster Reduction", :regions => [:unitednations]}, + {:mday => 9, :name => "World Post Day", :regions => [:unitednations]}, + {:mday => 10, :name => "World Mental Health Day", :regions => [:unitednations]}, + {:mday => 16, :name => "World Food Day", :regions => [:unitednations]}, + {:mday => 17, :name => "International Day for the Eradication of Poverty", :regions => [:unitednations]}, + {:mday => 24, :name => "United Nations Day", :regions => [:unitednations]}, + {:mday => 24, :name => "World Development Information Day", :regions => [:unitednations]}, + {:mday => 24, :name => "Disarmament Week", :regions => [:unitednations]}], + 11 => [{:mday => 6, :name => "International Day for Preventing the Exploitation of the Environment in War and Armed Conflict", :regions => [:unitednations]}, + {:mday => 16, :name => "International Day for Tolerance", :regions => [:unitednations]}, + {:mday => 20, :name => "Africa Industrialization Day", :regions => [:unitednations]}, + {:mday => 20, :name => "Universal Children's Day", :regions => [:unitednations]}, + {:mday => 21, :name => "World Television Day", :regions => [:unitednations]}, + {:mday => 25, :name => "International Day for the Elimination of Violence against Women", :regions => [:unitednations]}, + {:mday => 29, :name => "International Day of Solidarity with the Palestinian People", :regions => [:unitednations]}], + 12 => [{:mday => 1, :name => "World AIDS Day", :regions => [:unitednations]}, + {:mday => 2, :name => "International Day for the Abolition of Slavery", :regions => [:unitednations]}, + {:mday => 3, :name => "International Day of Disabled Persons", :regions => [:unitednations]}, + {:mday => 5, :name => "International Volunteer Day for Economic and Social Development", :regions => [:unitednations]}, + {:mday => 7, :name => "International Civil Aviation Day", :regions => [:unitednations]}, + {:mday => 10, :name => "Human Rights Day", :regions => [:unitednations]}, + {:mday => 18, :name => "International Migrants Day", :regions => [:unitednations]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ups.rb b/vendor/holidays/lib/generated_definitions/ups.rb new file mode 100644 index 00000000..4c28026e --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ups.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ups.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module UPS # :nodoc: + def self.defined_regions + [:ups] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:ups]}], + 5 => [{:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:ups]}], + 7 => [{:mday => 4, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Independence Day", :regions => [:ups]}], + 9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:ups]}], + 11 => [{:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:ups]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Day After Thanksgiving", :regions => [:ups]}], + 12 => [{:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:ups]}, + {:mday => 31, :name => "New Year's Eve", :regions => [:ups]}] + } + end + + def self.custom_methods + { + "day_after_thanksgiving(year)" => Proc.new { |year| +Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1 +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/us.rb b/vendor/holidays/lib/generated_definitions/us.rb new file mode 100644 index 00000000..19af01db --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/us.rb @@ -0,0 +1,152 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/us.yaml, definitions/northamericainformal.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module US # :nodoc: + def self.defined_regions + [:us_fl, :us_la, :us, :us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn, :us_ms, :us_id, :us_ar, :us_tx, :us_dc, :us_md, :us_va, :us_vt, :us_ak, :us_ca, :us_me, :us_ma, :us_al, :us_ga, :us_ne, :us_mo, :us_sc, :us_wv, :us_vi, :us_ut, :us_ri, :us_az, :us_co, :us_il, :us_mt, :us_nm, :us_ny, :us_oh, :us_pa, :us_mi, :us_mn, :us_nv, :us_or, :us_sd, :us_wa, :us_wi, :us_wy, :us_ia, :us_ks, :us_nh, :us_ok, :ca] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Shrove Tuesday", :regions => [:us_fl]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Mardi Gras Day", :regions => [:us_la]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :type => :informal, :name => "Good Friday", :regions => [:us]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :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]}, + {:function => "easter(year)", :function_arguments => [:year], :type => :informal, :name => "Easter Sunday", :regions => [:us]}], + 1 => [{:mday => 1, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:us]}, + {:wday => 1, :week => 3, :name => "Martin Luther King's and Robert E. Lee's Birthdays", :regions => [:us_ms]}, + {:wday => 1, :week => 3, :name => "Idaho Human Rights Day", :regions => [:us_id]}, + {:wday => 1, :week => 3, :name => "Civil Rights Day", :regions => [:us_ar]}, + {:wday => 1, :week => 3, :name => "Martin Luther King, Jr. Day", :regions => [:us]}, + {:function => "us_inauguration_day(year)", :function_arguments => [:year], :name => "Inauguration Day", :regions => [:us_tx, :us_dc, :us_la, :us_md, :us_va]}, + {:function => "lee_jackson_day(year, month)", :function_arguments => [:year, :month], :name => "Lee-Jackson Day", :regions => [:us_va]}, + {:mday => 19, :name => "Confederate Heroes Day", :regions => [:us_tx]}], + 2 => [{:wday => 1, :week => 3, :name => "Presidents' Day", :regions => [:us]}, + {:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]}, + {:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}], + 3 => [{:wday => 2, :week => 1, :name => "Town Meeting Day", :regions => [:us_vt]}, + {:mday => 2, :name => "Texas Independence Day", :regions => [:us_tx]}, + {:mday => 26, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Prince Jonah Kuhio Kalanianaole Day", :regions => [:us_hi]}, + {:wday => 1, :week => -1, :name => "Seward's Day", :regions => [:us_ak]}, + {:mday => 31, :name => "César Chávez Day", :regions => [:us_ca]}, + {:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}], + 4 => [{:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Emancipation Day", :regions => [:us_dc]}, + {:wday => 1, :week => 3, :name => "Patriots' Day", :regions => [:us_me, :us_ma]}, + {:mday => 21, :name => "San Jacinto Day", :regions => [:us_tx]}, + {:wday => 1, :week => -1, :name => "Confederate Memorial Day", :regions => [:us_al, :us_ms]}, + {:mday => 26, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Confederate Memorial Day", :regions => [:us_fl]}, + {:function => "georgia_state_holiday(year, month)", :function_arguments => [:year, :month], :name => "State Holiday", :regions => [:us_ga]}, + {:mday => 28, :name => "Arbor Day", :regions => [:us_ne]}, + {:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]}, + {:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}], + 5 => [{:mday => 8, :name => "Truman Day", :regions => [:us_mo]}, + {:mday => 10, :name => "Confederate Memorial Day", :regions => [:us_sc]}, + {:wday => 1, :week => -1, :name => "Memorial Day", :regions => [:us]}, + {:wday => 0, :week => 2, :type => :informal, :name => "Mother's Day", :regions => [:us, :ca]}, + {:wday => 6, :week => 3, :type => :informal, :name => "Armed Forces Day", :regions => [:us]}], + 6 => [{:wday => 1, :week => 1, :name => "Jefferson Davis' Birthday", :regions => [:us_al]}, + {:mday => 3, :name => "Birthday of Jefferson Davis", :regions => [:us_fl]}, + {:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "King Kamehameha I Day", :regions => [:us_hi]}, + {:mday => 19, :name => "Emancipation Day in Texas", :regions => [:us_tx]}, + {:mday => 20, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "West Virginia Day", :regions => [:us_wv]}, + {:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}], + 7 => [{:mday => 3, :name => "Emancipation Day", :regions => [:us_vi]}, + {:mday => 4, :name => "Independence Day", :regions => [:us]}, + {:mday => 4, :function => "to_weekday_if_weekend(date)", :function_arguments => [:date], :name => "Independence Day (Holiday)", :regions => [:us_va]}, + {:mday => 24, :name => "Pioneer Day", :regions => [:us_ut]}], + 8 => [{:wday => 1, :week => 2, :name => "Victory Day", :regions => [:us_ri]}, + {:mday => 16, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Bennington Battle Day", :regions => [:us_vt]}, + {:wday => 5, :week => 3, :name => "Statehood Day", :regions => [:us_hi]}, + {:mday => 27, :name => "Lyndon Baines Johnson Day", :regions => [:us_tx]}], + 9 => [{:wday => 1, :week => 1, :name => "Labor Day", :regions => [:us]}, + {:function => "rosh_hashanah(year)", :function_arguments => [:year], :name => "Rosh Hashanah", :regions => [:us_tx]}, + {:function => "yom_kippur(year)", :function_arguments => [:year], :name => "Yom Kippur", :regions => [:us_tx]}], + 10 => [{:wday => 1, :week => 2, :name => "Columbus Day", :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]}, + {:wday => 1, :week => 2, :type => :informal, :name => "Columbus Day", :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]}, + {:mday => 18, :name => "Alaska Day", :regions => [:us_ak]}, + {:wday => 5, :week => -1, :name => "Nevada Day", :regions => [:us_nv]}, + {:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}], + 11 => [{:function => "election_day(year)", :function_arguments => [:year], :name => "Election Day", :regions => [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri]}, + {:mday => 11, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Veterans Day", :regions => [:us]}, + {:wday => 4, :week => 4, :name => "Thanksgiving", :regions => [:us]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Family Day", :regions => [:us_nv]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "State Holiday", :regions => [:us_ga]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Presidents' Day", :regions => [:us_nm]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Lincoln's Birthday", :regions => [:us_in]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "American Indian Heritage Day", :regions => [:us_md]}, + {:function => "day_after_thanksgiving(year)", :function_arguments => [:year], :name => "Day after Thanksgiving (Black Friday)", :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]}], + 12 => [{:mday => 24, :name => "Christmas Eve", :regions => [:us_ar, :us_mi, :us_nc, :us_sc, :us_tx, :us_wi]}, + {:mday => 24, :function => "christmas_eve_holiday(date)", :function_arguments => [:date], :name => "Christmas Eve (Holiday)", :regions => [:us_mi, :us_sc, :us_va]}, + {:mday => 25, :observed => "to_weekday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:us]}, + {:mday => 26, :name => "Day after Christmas", :regions => [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx]}, + {:mday => 31, :name => "New Year's Eve", :regions => [:us_mi, :us_wi]}] + } + end + + def self.custom_methods + { + "christmas_eve_holiday(date)" => Proc.new { |date| +beginning_of_month = Date.civil(date.year, date.month, 1) +(date.saturday? || date.sunday?) ? date.downto(beginning_of_month).find {|d| d if d.wday == 5} : date +}, + +"rosh_hashanah(year)" => Proc.new { |year| +rosh_hashanah_dates = { + '2014' => Date.civil(2014, 9, 25), + '2015' => Date.civil(2015, 9, 14), + '2016' => Date.civil(2016, 10, 3), + '2017' => Date.civil(2017, 9, 21), + '2018' => Date.civil(2018, 9, 10), + '2019' => Date.civil(2019, 9, 30), + '2020' => Date.civil(2020, 9, 19) +} +rosh_hashanah_dates[year.to_s] +}, + +"yom_kippur(year)" => Proc.new { |year| +yom_kippur_dates = { + '2014' => Date.civil(2014, 10, 4), + '2015' => Date.civil(2015, 9, 23), + '2016' => Date.civil(2016, 10, 12), + '2017' => Date.civil(2017, 9, 30), + '2018' => Date.civil(2018, 9, 19), + '2019' => Date.civil(2019, 10, 9), + '2020' => Date.civil(2020, 9, 28) +} +yom_kippur_dates[year.to_s] +}, + +"georgia_state_holiday(year, month)" => Proc.new { |year, month| +beginning_of_month = Date.civil(year, month, 1) +state_holiday = Date.civil(year, month, 26) +state_holiday.downto(beginning_of_month).find {|date| date if date.wday == 1 } +}, + +"lee_jackson_day(year, month)" => Proc.new { |year, month| +day_of_holiday = Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, month, 3, 1) +beginning_of_month = Date.civil(year, month, 1) +king_day = Date.civil(year, month, day_of_holiday) +king_day.downto(beginning_of_month).find {|date| date if date.wday == 5 } +}, + +"election_day(year)" => Proc.new { |year| +Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 1, 1) + 1 +}, + +"us_inauguration_day(year)" => Proc.new { |year| +year % 4 == 1 ? 20 : nil +}, + +"day_after_thanksgiving(year)" => Proc.new { |year| +Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, 11, 4, 4) + 1 +}, + + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/ve.rb b/vendor/holidays/lib/generated_definitions/ve.rb new file mode 100644 index 00000000..1b6778c7 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/ve.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/ve.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module VE # :nodoc: + def self.defined_regions + [:ve] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -48, :name => "Lunes Carnaval", :regions => [:ve]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -47, :name => "Martes Carnaval", :regions => [:ve]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -3, :name => "Jueves Santo", :regions => [:ve]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Viernes Santo", :regions => [:ve]}], + 1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:ve]}], + 4 => [{:mday => 19, :name => "Declaración Independencia", :regions => [:ve]}], + 5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:ve]}], + 6 => [{:mday => 24, :name => "Aniversario Batalla de Carabobo", :regions => [:ve]}], + 7 => [{:mday => 5, :name => "Día de la Independencia", :regions => [:ve]}, + {:mday => 24, :name => "Natalicio de Simón Bolívar", :regions => [:ve]}], + 10 => [{:mday => 12, :name => "Día de la Resistencia Indígena", :regions => [:ve]}], + 12 => [{:mday => 25, :name => "Día de Navidad", :regions => [:ve]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/vi.rb b/vendor/holidays/lib/generated_definitions/vi.rb new file mode 100644 index 00000000..cae0a177 --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/vi.rb @@ -0,0 +1,29 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/vi.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module VI # :nodoc: + def self.defined_regions + [:vi] + end + + def self.holidays_by_month + { + 1 => [{:mday => 1, :name => "Tết dương lịch", :regions => [:vi]}], + 3 => [{:mday => 10, :function => "lunar_to_solar(year, month, day, region)", :function_arguments => [:year, :month, :day, :region], :name => "Giỗ tổ Hùng Vương", :regions => [:vi]}], + 4 => [{:mday => 30, :name => "Ngày Giải phóng miền Nam, thống nhất đất nước", :regions => [:vi]}], + 5 => [{:mday => 1, :name => "Ngày Quốc tế Lao động", :regions => [:vi]}], + 9 => [{:mday => 2, :name => "Quốc khánh", :regions => [:vi]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/generated_definitions/za.rb b/vendor/holidays/lib/generated_definitions/za.rb new file mode 100644 index 00000000..2ed34d1f --- /dev/null +++ b/vendor/holidays/lib/generated_definitions/za.rb @@ -0,0 +1,36 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: definitions/za.yaml + # + # All the definitions are available at https://github.com/holidays/holidays + module ZA # :nodoc: + def self.defined_regions + [:za] + end + + def self.holidays_by_month + { + 0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:za]}, + {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Family Day", :regions => [:za]}], + 1 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:za]}], + 3 => [{:mday => 21, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Human Rights Day", :regions => [:za]}], + 4 => [{:mday => 27, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Freedom Day", :regions => [:za]}], + 5 => [{:mday => 1, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Workers Day", :regions => [:za]}], + 6 => [{:mday => 16, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Youth Day", :regions => [:za]}], + 8 => [{:mday => 9, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "National Women's Day", :regions => [:za]}], + 9 => [{:mday => 24, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Heritage Day", :regions => [:za]}], + 12 => [{:mday => 16, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Day of Reconciliation", :regions => [:za]}, + {:mday => 25, :observed => "to_monday_if_sunday(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:za]}, + {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Day of Goodwill", :regions => [:za]}] + } + end + + def self.custom_methods + { + + } + end + end +end diff --git a/vendor/holidays/lib/holidays.rb b/vendor/holidays/lib/holidays.rb new file mode 100644 index 00000000..8f60763a --- /dev/null +++ b/vendor/holidays/lib/holidays.rb @@ -0,0 +1,130 @@ +## encoding: utf-8 +$:.unshift File.dirname(__FILE__) + +require 'date' +require 'digest/md5' +require 'holidays/factory/definition' +require 'holidays/factory/date_calculator' +require 'holidays/factory/finder' +require 'holidays/errors' +require 'holidays/load_all_definitions' + +module Holidays + WEEKS = {:first => 1, :second => 2, :third => 3, :fourth => 4, :fifth => 5, :last => -1, :second_last => -2, :third_last => -3} + MONTH_LENGTHS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + DAY_SYMBOLS = Date::DAYNAMES.collect { |n| n.downcase.intern } + + DEFINITIONS_PATH = 'generated_definitions' + FULL_DEFINITIONS_PATH = File.expand_path(File.dirname(__FILE__) + "/#{DEFINITIONS_PATH}") + + class << self + def any_holidays_during_work_week?(date, *options) + monday = date - (date.wday - 1) + friday = date + (5 - date.wday) + + holidays = between(monday, friday, *options) + + holidays && holidays.count > 0 + end + + def on(date, *options) + between(date, date, *options) + end + + def between(start_date, end_date, *options) + raise ArgumentError unless start_date && end_date + + # remove the timezone + start_date = start_date.new_offset(0) + start_date.offset if start_date.respond_to?(:new_offset) + end_date = end_date.new_offset(0) + end_date.offset if end_date.respond_to?(:new_offset) + + start_date, end_date = get_date(start_date), get_date(end_date) + + raise ArgumentError if end_date < start_date + + if cached_holidays = Factory::Definition.cache_repository.find(start_date, end_date, options) + return cached_holidays + end + + Factory::Finder.between.call(start_date, end_date, options) + end + + #FIXME All other methods start with a date and require a date. For the next + # major version bump we should take the opportunity to change this + # signature to match, e.g. next_holidays(from_date, count, options) + def next_holidays(holidays_count, options, from_date = Date.today) + raise ArgumentError unless holidays_count + raise ArgumentError if options.empty? + raise ArgumentError unless options.is_a?(Array) + + # remove the timezone + from_date = from_date.new_offset(0) + from_date.offset if from_date.respond_to?(:new_offset) + + from_date = get_date(from_date) + + Factory::Finder.next_holiday.call(holidays_count, from_date, options) + end + + #FIXME All other methods start with a date and require a date. For the next + # major version bump we should take the opportunity to change this + # signature to match, e.g. year_holidays(from_date, options) + def year_holidays(options, from_date = Date.today) + raise ArgumentError if options.empty? + raise ArgumentError unless options.is_a?(Array) + + # remove the timezone + from_date = from_date.new_offset(0) + from_date.offset if from_date.respond_to?(:new_offset) + from_date = get_date(from_date) + + Factory::Finder.year_holiday.call(from_date, options) + end + + def cache_between(start_date, end_date, *options) + start_date, end_date = get_date(start_date), get_date(end_date) + cache_data = between(start_date, end_date, *options) + + Factory::Definition.cache_repository.cache_between(start_date, end_date, cache_data, options) + end + + def available_regions + Holidays::REGIONS + end + + def load_custom(*files) + regions, rules_by_month, custom_methods, _ = Factory::Definition.file_parser.parse_definition_files(files) + + custom_methods.each do |method_key, method_entity| + custom_methods[method_key] = Factory::Definition.custom_method_proc_decorator.call(method_entity) + end + + Factory::Definition.merger.call(regions, rules_by_month, custom_methods) + + rules_by_month + end + + def load_all + path = FULL_DEFINITIONS_PATH + "/" + + Dir.foreach(path) do |item| + next if item == '.' or item == '..' + + target = path+item + next if File.extname(target) != '.rb' + + require target + end + end + + private + + def get_date(date) + if date.respond_to?(:to_date) + date.to_date + else + Date.civil(date.year, date.mon, date.mday) + end + end + end +end + +Holidays::LoadAllDefinitions.call diff --git a/vendor/holidays/lib/holidays/core_extensions/date.rb b/vendor/holidays/lib/holidays/core_extensions/date.rb new file mode 100644 index 00000000..aa62654a --- /dev/null +++ b/vendor/holidays/lib/holidays/core_extensions/date.rb @@ -0,0 +1,57 @@ +module Holidays + module CoreExtensions + module Date + def self.included(base) + base.extend ClassMethods + end + + # Get holidays on the current date. + # + # Returns an array of hashes or nil. See Holidays#between for options + # and the output format. + # + # Date.civil('2008-01-01').holidays(:ca_) + # => [{:name => 'New Year\'s Day',...}] + # + # Also available via Holidays#on. + def holidays(*options) + Holidays.on(self, *options) + end + + # Check if the current date is a holiday. + # + # Returns true or false. + # + # Date.civil('2008-01-01').holiday?(:ca) + # => true + def holiday?(*options) + holidays = self.holidays(*options) + holidays && !holidays.empty? + end + + # Returns a new Date where one or more of the elements have been changed according to the +options+ parameter. + # The +options+ parameter is a hash with a combination of these keys: :year, :month, :day. + # + # Date.new(2007, 5, 12).change(day: 1) # => Date.new(2007, 5, 1) + # Date.new(2007, 5, 12).change(year: 2005, month: 1) # => Date.new(2005, 1, 12) + def change(options) + ::Date.new( + options.fetch(:year, year), + options.fetch(:month, month), + options.fetch(:day, day) + ) + end + + def end_of_month + last_day = ::Time.days_in_month( self.month, self.year ) + change(:day => last_day) + end + + module ClassMethods + def calculate_mday(year, month, week, wday) + Holidays::Factory::DateCalculator.day_of_month_calculator.call(year, month, week, wday) + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/core_extensions/time.rb b/vendor/holidays/lib/holidays/core_extensions/time.rb new file mode 100644 index 00000000..93ecaeb3 --- /dev/null +++ b/vendor/holidays/lib/holidays/core_extensions/time.rb @@ -0,0 +1,23 @@ +module Holidays + module CoreExtensions + module Time + def self.included(base) + base.extend ClassMethods + end + + module ClassMethods + COMMON_YEAR_DAYS_IN_MONTH = [nil, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + + # Returns the number of days in the given month. + # If no year is specified, it will use the current year. + def days_in_month(month, year = current.year) + if month == 2 && ::Date.gregorian_leap?(year) + 29 + else + COMMON_YEAR_DAYS_IN_MONTH[month] + end + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/date_calculator/day_of_month.rb b/vendor/holidays/lib/holidays/date_calculator/day_of_month.rb new file mode 100644 index 00000000..1cbc3482 --- /dev/null +++ b/vendor/holidays/lib/holidays/date_calculator/day_of_month.rb @@ -0,0 +1,68 @@ +module Holidays + module DateCalculator + # Calculate day of the month based on the week number and the day of the + # week. + # + # ==== Parameters + # [year] Integer. + # [month] Integer from 1-12. + # [week] One of :first, :second, :third, + # :fourth, :fifth or :last. + # [wday] Day of the week as an integer from 0 (Sunday) to 6 + # (Saturday) or as a symbol (e.g. :monday). + # + # Returns an integer. + # + # ===== Examples + # First Monday of January, 2008: + # Holidays::Factory::DateCalculator.day_of_month_calculator.call(2008, 1, :first, :monday) + # => 7 + # + # Third Thursday of December, 2008: + # Holidays::Factory::DateCalculator.day_of_month_calculator.call(2008, 12, :third, :thursday) + # => 18 + # + # Last Monday of January, 2008: + # Holidays::Factory::DateCalculator.day_of_month_calculator.call(2008, 1, :last, 1) + # => 28 + #-- + # see http://www.irt.org/articles/js050/index.htm + class DayOfMonth + def call(year, month, week, wday) + raise ArgumentError, "Week parameter must be one of Holidays::WEEKS (provided #{week})." unless weeks.include?(week) or weeks.has_value?(week) + + unless wday.kind_of?(Numeric) and wday.between?(0,6) or day_symbols.index(wday) + raise ArgumentError, "Wday parameter must be an integer between 0 and 6 or one of Holidays::DAY_SYMBOLS." + end + + week = weeks[week] if week.kind_of?(Symbol) + wday = day_symbols.index(wday) if wday.kind_of?(Symbol) + + # :first, :second, :third, :fourth or :fifth + if week > 0 + return ((week - 1) * 7) + 1 + ((wday - Date.civil(year, month,(week-1)*7 + 1).wday) % 7) + end + + days = month_lengths[month-1] + + days = 29 if month == 2 and Date.leap?(year) + + return days - ((Date.civil(year, month, days).wday - wday + 7) % 7) - (7 * (week.abs - 1)) + end + + private + + def weeks + Holidays::WEEKS + end + + def day_symbols + Holidays::DAY_SYMBOLS + end + + def month_lengths + Holidays::MONTH_LENGTHS + end + end + end +end diff --git a/vendor/holidays/lib/holidays/date_calculator/easter.rb b/vendor/holidays/lib/holidays/date_calculator/easter.rb new file mode 100644 index 00000000..3a83524b --- /dev/null +++ b/vendor/holidays/lib/holidays/date_calculator/easter.rb @@ -0,0 +1,91 @@ +module Holidays + module DateCalculator + module Easter + class Gregorian + def calculate_easter_for(year) + y = year + a = y % 19 + b = y / 100 + c = y % 100 + d = b / 4 + e = b % 4 + f = (b + 8) / 25 + g = (b - f + 1) / 3 + h = (19 * a + b - d - g + 15) % 30 + i = c / 4 + k = c % 4 + l = (32 + 2 * e + 2 * i - h - k) % 7 + m = (a + 11 * h + 22 * l) / 451 + + month = (h + l - 7 * m + 114) / 31 + day = ((h + l - 7 * m + 114) % 31) + 1 + + Date.civil(year, month, day) + end + + def calculate_orthodox_easter_for(year) + j_date = Julian.new.calculate_orthodox_easter_for(year) + + case + # up until 1582, julian and gregorian easter dates were identical + when year <= 1582 + offset = 0 + # between the years 1583 and 1699 10 days are added to the julian day count + when (year >= 1583 and year <= 1699) + offset = 10 + # after 1700, 1 day is added for each century, except if the century year is exactly divisible by 400 (in which case no days are added). + # Safe until 4100 AD, when one leap day will be removed. + when year >= 1700 + offset = (year - 1700).divmod(100)[0] + ((year - year.divmod(100)[1]).divmod(400)[1] == 0 ? 0 : 1) - (year - year.divmod(100)[1] - 1700).divmod(400)[0] + 10 + end + + + Date.jd(j_date.jd + offset) + end + end + + class Julian + # Copied from https://github.com/Loyolny/when_easter + # Graciously allowed by Michał Nierebiński (https://github.com/Loyolny) + def calculate_easter_for(year) + g = year % 19 + 1 + s = (year - 1600) / 100 - (year - 1600) / 400 + l = (((year - 1400) / 100) * 8) / 25 + + p_2 = (3 - 11 * g + s - l) % 30 + if p_2 == 29 || (p_2 == 28 && g > 11) + p = p_2 - 1 + else + p = p_2 + end + + d= (year + year / 4 - year / 100 + year / 400) % 7 + d_2 = (8 - d) % 7 + + p_3 = (80 + p) % 7 + x_2 = d_2 - p_3 + + x = (x_2 - 1) % 7 + 1 + e = p+x + + if e < 11 + Date.civil(year,3,e + 21) + else + Date.civil(year,4,e - 10) + end + end + + def calculate_orthodox_easter_for(year) + y = year + g = y % 19 + i = (19 * g + 15) % 30 + j = (year + year/4 + i) % 7 + j_month = 3 + (i - j + 40) / 44 + j_day = i - j + 28 - 31 * (j_month / 4) + + Date.civil(year, j_month, j_day) + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/date_calculator/lunar_date.rb b/vendor/holidays/lib/holidays/date_calculator/lunar_date.rb new file mode 100644 index 00000000..f1cd3152 --- /dev/null +++ b/vendor/holidays/lib/holidays/date_calculator/lunar_date.rb @@ -0,0 +1,371 @@ +module Holidays + module DateCalculator + # Copied from https://github.com/sunsidew/ruby_lunardate + # Graciously allowed by JeeWoong Yang (https://github.com/sunsidew) + class LunarDate + attr_accessor :year, :month, :day + + def to_solar(year, month, day, region) + days = 0 + year_diff = year - 1900 + year_info = CALENDAR_YEAR_INFO_MAP[region] + + year_diff.times do |year_idx| + days += year_info[year_idx][0] + end + + (month - 1).times do |month_idx| + total, _normal, _leap = lunardays_for_type(year_info[year_diff][month_idx + 1]) + days += total + end + + days += (day - 1) + + SOLAR_START_DATE + days + end + + def lunardays_for_type(month_type) + LUNARDAYS_FOR_MONTHTYPE[month_type] + end + + def to_s + format('%4d%02d%02d', year, month, day) + end + + private + + VIETNAMESE_LUNAR_YEAR_INFO = [ + [384, 1, 2, 1, 1, 2, 1, 2, 4, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [383, 1, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 5, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [384, 2, 1, 2, 1, 1, 4, 1, 2, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 4, 1, 2, 1, 2, 1, 1, 2].freeze, + [355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 3, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [384, 1, 2, 1, 1, 2, 1, 4, 2, 2, 1, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2].freeze, + [354, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze, + [385, 2, 1, 2, 4, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [384, 1, 4, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2].freeze, + [383, 1, 2, 2, 1, 1, 4, 1, 2, 1, 2, 2, 1].freeze, + [354, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 1, 6, 1, 2, 1, 2, 1, 1, 2].freeze, + [355, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1].freeze, + [384, 2, 2, 1, 1, 2, 1, 5, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [384, 2, 2, 1, 2, 2, 5, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2].freeze, + [355, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 1, 2, 5, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 2, 4, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2].freeze, + [354, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2].freeze, + [355, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2].freeze, + [354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [384, 2, 1, 5, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 1, 2, 1, 1, 4, 2, 1, 2, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2].freeze, + [383, 1, 2, 4, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 1, 2, 1, 4, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 2, 1, 1, 4, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1].freeze, + [384, 2, 2, 1, 4, 1, 2, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 1, 2, 1, 4, 2, 1, 1, 2].freeze, + [354, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1].freeze, + [355, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 1, 2, 1, 6, 1, 2, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 2, 1, 1, 2, 1, 1, 4, 2, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze, + [385, 2, 1, 2, 2, 1, 4, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [384, 1, 2, 1, 1, 4, 1, 2, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [383, 1, 2, 4, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 1, 2, 2, 1, 4, 2, 1, 1, 2].freeze, + [355, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 1, 2, 3, 2, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1].freeze, + [384, 2, 2, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 1, 4, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1].freeze, + [385, 2, 1, 2, 1, 2, 1, 4, 2, 2, 1, 2, 2].freeze, + [354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 2, 2, 1, 1, 4, 1, 2, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 6, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 1, 2, 1, 2, 1, 2, 4, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [355, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 2, 1, 2, 4, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 4, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 2, 1, 1, 4, 2, 1, 2, 2, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2].freeze, + [383, 1, 2, 2, 1, 4, 1, 2, 1, 1, 2, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2].freeze, + [354, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 4, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 4, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 1, 5, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1].freeze, + [384, 2, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 1, 1, 2, 3, 2, 1, 2, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 2, 1, 2, 2, 5, 1, 2, 1, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze, + [355, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze + ].freeze + + KOREAN_LUNAR_YEAR_INFO = [ + [384, 1, 2, 1, 1, 2, 1, 2, 4, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [383, 1, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 5, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [384, 2, 1, 2, 1, 1, 4, 1, 2, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 4, 1, 2, 1, 2, 1, 1, 2].freeze, + [355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 3, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [384, 1, 2, 1, 1, 2, 1, 4, 2, 2, 1, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2].freeze, + [354, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze, + [385, 2, 1, 2, 4, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [384, 1, 4, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2].freeze, + [383, 1, 2, 2, 1, 1, 4, 1, 2, 1, 2, 2, 1].freeze, + [354, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 1, 6, 1, 2, 1, 2, 1, 1, 2].freeze, + [355, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1].freeze, + [384, 2, 2, 1, 1, 2, 1, 5, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [384, 2, 2, 1, 2, 2, 5, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2].freeze, + [355, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 1, 2, 5, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 2, 4, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2].freeze, + [354, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2].freeze, + [355, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2].freeze, + [354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [384, 2, 1, 5, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 1, 2, 1, 1, 4, 2, 1, 2, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2].freeze, + [383, 1, 2, 4, 2, 1, 1, 2, 1, 1, 2, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 1, 2, 1, 4, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 2, 1, 1, 4, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1].freeze, + [384, 2, 2, 1, 4, 1, 2, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 1, 2, 1, 4, 2, 1, 1, 2].freeze, + [354, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1].freeze, + [355, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 1, 2, 1, 6, 1, 2, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 2, 1, 1, 2, 1, 1, 4, 2, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze, + [385, 2, 1, 2, 2, 1, 4, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [384, 1, 2, 1, 1, 4, 1, 2, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [383, 1, 2, 4, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 1, 2, 2, 1, 2, 2, 1, 4, 2, 1, 1, 2].freeze, + [355, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2].freeze, + [354, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 1, 2, 3, 2, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1].freeze, + [384, 2, 2, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 1, 4, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1].freeze, + [385, 2, 1, 2, 1, 2, 1, 4, 2, 2, 1, 2, 2].freeze, + [354, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2].freeze, + [384, 2, 2, 1, 1, 4, 1, 2, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 6, 2, 1, 2, 1, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 2, 1, 2, 1, 2, 1, 2, 4, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2].freeze, + [384, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [384, 2, 1, 2, 4, 2, 1, 1, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2].freeze, + [384, 1, 4, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1].freeze, + [384, 2, 1, 2, 1, 1, 4, 2, 1, 2, 2, 2, 1].freeze, + [355, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2].freeze, + [354, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2].freeze, + [383, 1, 2, 2, 1, 4, 1, 2, 1, 1, 2, 2, 1].freeze, + [355, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2].freeze, + [354, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1].freeze, + [384, 2, 1, 4, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 4, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2].freeze, + [384, 2, 2, 1, 2, 1, 5, 1, 1, 2, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [354, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1].freeze, + [384, 2, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 1].freeze, + [355, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1].freeze, + [355, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2].freeze, + [384, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2].freeze, + [354, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2].freeze, + [384, 2, 1, 2, 1, 1, 2, 3, 2, 1, 2, 2, 2].freeze, + [354, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2].freeze, + [354, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2].freeze, + [384, 2, 1, 2, 2, 5, 1, 2, 1, 1, 2, 1, 2].freeze, + [354, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1].freeze, + [355, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1].freeze + ].freeze + + MAX_YEAR_NUMBER = 150 + + # Given the region, CALENDAR_YEAR_INFO_MAP looks up the date + # table and uses it in the calculation + CALENDAR_YEAR_INFO_MAP = { + kr: KOREAN_LUNAR_YEAR_INFO, + vi: VIETNAMESE_LUNAR_YEAR_INFO + }.freeze + + # Provides number of days per lunar month type. Lunar months + # can be either 29 or 30 days long (29.5 days, rounded up or down). + # Keys 3 - 6 provide data for intercalary (leap month) occurrences. + # Format: [TOTAL, NORMAL, LEAP] + LUNARDAYS_FOR_MONTHTYPE = { + 1 => [29, 29, 0], + 2 => [30, 30, 0], + 3 => [58, 29, 29], + 4 => [59, 30, 29], + 5 => [59, 29, 30], + 6 => [60, 30, 30] + }.freeze + + # Provides the reference point for the Gregorian calendar and is + # used in all calculations + SOLAR_START_DATE = Date.new(1900, 1, 31).freeze + + end + end +end diff --git a/vendor/holidays/lib/holidays/date_calculator/weekend_modifier.rb b/vendor/holidays/lib/holidays/date_calculator/weekend_modifier.rb new file mode 100644 index 00000000..1a7653c6 --- /dev/null +++ b/vendor/holidays/lib/holidays/date_calculator/weekend_modifier.rb @@ -0,0 +1,80 @@ +module Holidays + module DateCalculator + class WeekendModifier + # Move date to Monday if it occurs on a Saturday on Sunday. + # Does not modify date if it is not a weekend. + # Used as a callback function. + def to_monday_if_weekend(date) + return date unless date.wday == 6 || date.wday == 0 + to_next_weekday(date) + end + + # Move date to Monday if it occurs on a Sunday. + # Does not modify the date if it is not a Sunday. + # Used as a callback function. + def to_monday_if_sunday(date) + return date unless date.wday == 0 + to_next_weekday(date) + end + + # Move Boxing Day if it falls on a weekend, leaving room for Christmas. + # Used as a callback function. + def to_weekday_if_boxing_weekend(date) + if date.wday == 6 || date.wday == 0 + date += 2 + elsif date.wday == 1 # https://github.com/holidays/holidays/issues/27 + date += 1 + end + + date + end + + # if Christmas falls on a Saturday, move it to the next Monday (Boxing Day will be Sunday and potentially Tuesday) + # if Christmas falls on a Sunday, move it to the next Tuesday (Boxing Day will go on Monday) + # + # if Boxing Day falls on a Saturday, move it to the next Monday (Christmas will go on Friday) + # if Boxing Day falls on a Sunday, move it to the next Tuesday (Christmas will go on Saturday & Monday) + def to_tuesday_if_sunday_or_monday_if_saturday(date) + date += 2 if [0, 6].include?(date.wday) + date + end + + # Call to_weekday_if_boxing_weekend but first get date based on year + # Used as a callback function. + def to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year) + to_weekday_if_boxing_weekend(Date.civil(year, 12, 26)) + end + + # Call to_weekday_if_boxing_weekend but first get date based on year + # Used as a callback function. + def to_weekday_if_boxing_weekend_from_year(year) + to_tuesday_if_sunday_or_monday_if_saturday(Date.civil(year, 12, 26)) + end + + # Move date to Monday if it occurs on a Sunday or to Friday if it occurs on a + # Saturday. + # Used as a callback function. + def to_weekday_if_weekend(date) + date += 1 if date.wday == 0 + date -= 1 if date.wday == 6 + date + end + + # Finds the next weekday. For example, if a 'Friday' date is received + # it will return the following Monday. If Sunday then return Monday, + # if Saturday return Monday, if Tuesday return Wednesday, etc. + def to_next_weekday(date) + case date.wday + when 6 + date += 2 + when 5 + date += 3 + else + date += 1 + end + + date + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/context/function_processor.rb b/vendor/holidays/lib/holidays/definition/context/function_processor.rb new file mode 100644 index 00000000..e0b1984f --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/context/function_processor.rb @@ -0,0 +1,91 @@ +require 'holidays/errors' + +module Holidays + module Definition + module Context + class FunctionProcessor + def initialize(custom_methods_repo, proc_result_cache_repo) + @custom_methods_repo = custom_methods_repo + @proc_result_cache_repo = proc_result_cache_repo + end + + def call(input, func_id, desired_func_args, func_modifier = nil) + validate!(input, func_id, desired_func_args) + + function = @custom_methods_repo.find(func_id) + raise Holidays::FunctionNotFound.new("Unable to find function with id '#{func_id}'") if function.nil? + + calculate(input, function, parse_arguments(input, desired_func_args), func_modifier) + end + + private + + VALID_ARGUMENTS = [:year, :month, :day, :date, :region] + + def validate!(input, func_id, desired_func_args) + raise ArgumentError if desired_func_args.nil? || desired_func_args.empty? + + desired_func_args.each do |name| + raise ArgumentError unless VALID_ARGUMENTS.include?(name) + end + + raise ArgumentError if desired_func_args.include?(:year) && !input[:year].is_a?(Integer) + raise ArgumentError if desired_func_args.include?(:month) && (input[:month] < 0 || input[:month] > 12) + raise ArgumentError if desired_func_args.include?(:day) && (input[:day] < 1 || input[:day] > 31) + raise ArgumentError if desired_func_args.include?(:region) && !input[:region].is_a?(Symbol) + end + + def parse_arguments(input, target_args) + args = [] + + if target_args.include?(:year) + args << input[:year] + end + + if target_args.include?(:month) + args << input[:month] + end + + if target_args.include?(:day) + args << input[:day] + end + + if target_args.include?(:date) + args << Date.civil(input[:year], input[:month], input[:day]) + end + + if target_args.include?(:region) + args << input[:region] + end + + args + end + + def calculate(input, id, args, modifier) + result = @proc_result_cache_repo.lookup(id, *args) + if result.kind_of?(Date) + if modifier + result = result + modifier # NOTE: This could be a positive OR negative number. + end + elsif result.is_a?(Integer) + begin + result = Date.civil(input[:year], input[:month], result) + rescue ArgumentError + raise Holidays::InvalidFunctionResponse.new("invalid day response from custom method call resulting in invalid date. Result: '#{result}'") + end + elsif result.nil? + # Do nothing. This is because some functions can return 'nil' today. + # I want to change this and so rather than come up with a clean + # implementation I'll do this so we don't throw an error in this specific + # situation. This should be removed once we have changed the existing + # custom definition functions. See https://github.com/holidays/holidays/issues/204 + else + raise Holidays::InvalidFunctionResponse.new("invalid response from custom method call, must be a 'date' or 'integer' representing the day. Result: '#{result}'") + end + + result + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/context/generator.rb b/vendor/holidays/lib/holidays/definition/context/generator.rb new file mode 100644 index 00000000..155207aa --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/context/generator.rb @@ -0,0 +1,209 @@ +require 'yaml' + +#FIXME This whole file is my next refactor target. We do wayyyyy too much by +# convention here. We need hard and fast rules and explicit errors when you +# try to parse something that isn't allowed. So if you are a dev recognize +# that a lot of the guard statements in here are to codify existing legacy +# logic. The fact is that we already require these guards, we just don't +# enforce it explicitly. Now we will. And by doing so things will begin +# to look very, very messy. +module Holidays + module Definition + module Context + class Generator + def initialize(custom_method_parser, custom_method_source_decorator, custom_methods_repository, test_parser, test_source_generator, module_source_generator) + @custom_method_parser = custom_method_parser + @custom_method_source_decorator = custom_method_source_decorator + @custom_methods_repository = custom_methods_repository + @test_parser = test_parser + @test_source_generator = test_source_generator + @module_source_generator = module_source_generator + end + + def parse_definition_files(files) + raise ArgumentError, "Must have at least one file to parse" if files.nil? || files.empty? + + all_regions = [] + all_rules_by_month = {} + all_custom_methods = {} + all_tests = [] + + files.flatten! + + files.each do |file| + definition_file = YAML.load_file(file) + + custom_methods = @custom_method_parser.call(definition_file['methods']) + + regions, rules_by_month = parse_month_definitions(definition_file['months'], custom_methods) + + all_regions << regions.flatten + + all_rules_by_month.merge!(rules_by_month) { |month, existing, new| + existing << new + existing.flatten! + } + + #FIXME This is a problem. We will have a 'global' list of methods. That's always bad. What effects will this have? + # This is an existing problem (just so we are clear). An issue would be extremely rare because we are generally parsing + # single files/custom files. But it IS possible that we would parse a bunch of things at the same time and step + # on each other so we need a solution. + all_custom_methods.merge!(custom_methods) + + all_tests += @test_parser.call(definition_file['tests']) + end + + all_regions.flatten!.uniq! + + [all_regions, all_rules_by_month, all_custom_methods, all_tests] + end + + def generate_definition_source(module_name, files, regions, rules_by_month, custom_methods, tests) + month_strings = generate_month_definition_strings(rules_by_month, custom_methods) + + # Build the custom methods string + custom_method_string = '' + custom_methods.each do |key, code| + custom_method_string << @custom_method_source_decorator.call(code) + ",\n\n" + end + + module_src = @module_source_generator.call(module_name, files, regions, month_strings, custom_method_string) + test_src = @test_source_generator.call(module_name, files, tests) + + return module_src, test_src || '' + end + + private + + #FIXME This should be a 'month_definitions_parser' like the above parser + def parse_month_definitions(month_definitions, parsed_custom_methods) + regions = [] + rules_by_month = {} + + if month_definitions + month_definitions.each do |month, definitions| + rules_by_month[month] = [] unless rules_by_month[month] + definitions.each do |definition| + rule = {} + + definition.each do |key, val| + # Ruby 2.4 doesn't have the `transform_keys` method. Once we drop 2.4 support we can + # use `val.transform_keys!(&:to_sym) if val.is_a?(Hash)` instead of this `if` statement. + if val.is_a?(Hash) + val = val.keys.each_with_object({}) do |k, result| + result[k.to_sym] = val[k] + end + end + + rule[key.to_sym] = val + end + + if rule[:year_ranges] && rule[:year_ranges].key?(:between) + start_year = rule[:year_ranges][:between]["start"].to_i + end_year = rule[:year_ranges][:between]["end"].to_i + + rule[:year_ranges][:between] = Range.new(start_year, end_year) + end + + rule[:regions] = rule[:regions].collect { |r| r.to_sym } + regions << rule[:regions] + + exists = false + rules_by_month[month].each do |ex| + if ex[:name] == rule[:name] and ex[:wday] == rule[:wday] and ex[:mday] == rule[:mday] and ex[:week] == rule[:week] and ex[:type] == rule[:type] and ex[:function] == rule[:function] and ex[:observed] == rule[:observed] and ex[:year_ranges] == rule[:year_ranges] + ex[:regions] << rule[:regions].flatten + exists = true + end + end + + unless exists + # This will add in the custom method arguments so they are immediately + # available for 'on the fly' def loading. + if rule[:function] + rule[:function_arguments] = get_function_arguments(rule[:function], parsed_custom_methods) + end + + rules_by_month[month] << rule + end + end + end + end + + [regions, rules_by_month] + end + + #FIXME This should really be split out and tested with its own unit tests. + def generate_month_definition_strings(rules_by_month, parsed_custom_methods) + month_strings = [] + + rules_by_month.each do |month, rules| + month_string = " #{month.to_s} => [" + rule_strings = [] + rules.each do |rule| + string = '{' + if rule[:mday] + string << ":mday => #{rule[:mday]}, " + end + + if rule[:function] + string << ":function => \"#{rule[:function].to_s}\", " + + # We need to add in the arguments so we can know what to send in when calling the custom proc during holiday lookups. + # NOTE: the allowed arguments are enforced in the custom methods parser. + string << ":function_arguments => #{get_function_arguments(rule[:function], parsed_custom_methods)}, " + + if rule[:function_modifier] + string << ":function_modifier => #{rule[:function_modifier].to_s}, " + end + end + + # This is the 'else'. It is possible for mday AND function + # to be set but this is the fallback. This whole area + # needs to be reworked! + if string == '{' + string << ":wday => #{rule[:wday]}, :week => #{rule[:week]}, " + end + + if rule[:year_ranges] && rule[:year_ranges].is_a?(Hash) + selector = rule[:year_ranges].keys.first + value = rule[:year_ranges][selector] + + string << ":year_ranges => { :#{selector} => #{value} }," + end + + if rule[:observed] + string << ":observed => \"#{rule[:observed].to_s}\", " + string << ":observed_arguments => #{get_function_arguments(rule[:observed], parsed_custom_methods)}, " + end + + if rule[:type] + string << ":type => :#{rule[:type]}, " + end + + # shouldn't allow the same region twice + string << ":name => \"#{rule[:name]}\", :regions => [:" + rule[:regions].uniq.join(', :') + "]}" + rule_strings << string + end + month_string << rule_strings.join(",\n ") + "]" + month_strings << month_string + end + + return month_strings + end + + # This method sucks. The issue here is that the custom methods repo has the 'general' methods (like easter) + # but the 'parsed_custom_methods' have the recently parsed stuff. We don't load those until they are needed later. + # This entire file is a refactor target so I am adding some tech debt to get me over the hump. + # What we should do is ensure that all custom methods are loaded into the repo as soon as they are parsed + # so we only have one place to look. + def get_function_arguments(function_id, parsed_custom_methods) + if method = @custom_methods_repository.find(function_id) + method.parameters.collect { |arg| arg[1] } + elsif method = parsed_custom_methods[function_id] + method.arguments.collect { |arg| arg.to_sym } + end + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/context/load.rb b/vendor/holidays/lib/holidays/definition/context/load.rb new file mode 100644 index 00000000..9cf84efd --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/context/load.rb @@ -0,0 +1,29 @@ +module Holidays + module Definition + module Context + class Load + def initialize(definition_merger, full_definitions_path) + @definition_merger = definition_merger + @full_definitions_path = full_definitions_path + end + + def call(region) + region_definition_file = "#{@full_definitions_path}/#{region}" + require region_definition_file + + target_region_module = Module.const_get("Holidays").const_get(region.upcase) + + @definition_merger.call( + region, + target_region_module.holidays_by_month, + target_region_module.custom_methods, + ) + + target_region_module.defined_regions + rescue NameError, LoadError => e + raise UnknownRegionError.new(e), "Could not load region prefix: #{region.to_s}" + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/context/merger.rb b/vendor/holidays/lib/holidays/definition/context/merger.rb new file mode 100644 index 00000000..e8b8164f --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/context/merger.rb @@ -0,0 +1,22 @@ +module Holidays + module Definition + module Context + # Merge a new set of definitions into the Holidays module. + class Merger + def initialize(holidays_by_month_repo, regions_repo, custom_methods_repo) + @holidays_repo = holidays_by_month_repo + @regions_repo = regions_repo + @custom_methods_repo = custom_methods_repo + end + + def call(target_regions, target_holidays, target_custom_methods) + #FIXME Does this need to come in this exact order? God I hope not. + # If not then we should swap the order so it matches the init. + @regions_repo.add(target_regions) + @holidays_repo.add(target_holidays) + @custom_methods_repo.add(target_custom_methods) + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/decorator/custom_method_proc.rb b/vendor/holidays/lib/holidays/definition/decorator/custom_method_proc.rb new file mode 100644 index 00000000..06c7cf05 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/decorator/custom_method_proc.rb @@ -0,0 +1,28 @@ +module Holidays + module Definition + module Decorator + class CustomMethodProc + def call(proc) + validate!(proc) + + eval("Proc.new { |#{parse_arguments(proc.arguments)}| + #{proc.source} + }") + end + + private + + def validate!(proc) + raise ArgumentError if proc.name.nil? || proc.name.empty? + raise ArgumentError if proc.arguments.nil? || proc.arguments.empty? + raise ArgumentError if proc.source.nil? || proc.source.empty? + end + + def parse_arguments(args) + a = args.join(", ") + a[0..-1] + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/decorator/custom_method_source.rb b/vendor/holidays/lib/holidays/definition/decorator/custom_method_source.rb new file mode 100644 index 00000000..049a2b09 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/decorator/custom_method_source.rb @@ -0,0 +1,30 @@ +module Holidays + module Definition + module Decorator + class CustomMethodSource + def call(proc) + validate!(proc) + + method_name = proc.name + args = args_string(proc.arguments) + source = proc.source + + "\"#{method_name.to_s}(#{args})\" => Proc.new { |#{args}|\n#{source}}" + end + + private + + def validate!(proc) + raise ArgumentError if proc.name.nil? || proc.name == "" + raise ArgumentError if proc.arguments.nil? || !proc.arguments.is_a?(Array) || proc.arguments.empty? + raise ArgumentError if proc.source.nil? || proc.source == "" + end + + def args_string(args) + a = args.join(", ") + a[0..-1] + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/decorator/test.rb b/vendor/holidays/lib/holidays/definition/decorator/test.rb new file mode 100644 index 00000000..49faa0e3 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/decorator/test.rb @@ -0,0 +1,37 @@ +module Holidays + module Definition + module Decorator + class Test + def call(t) + src = "" + + t.dates.each do |d| + date = "Date.civil(#{d.year}, #{d.month}, #{d.day})" + + holiday_call = "Holidays.on(#{date}, #{t.regions}" + + if t.options + holiday_call += ", #{decorate_options(t.options)}" + end + + if t.holiday? + src += "assert_equal \"#{t.name}\", (#{holiday_call})[0] || {})[:name]\n" + else + src += "assert_nil (#{holiday_call})[0] || {})[:name]\n" + end + end + + src + end + + private + + def decorate_options(options) + options.map do |o| + o.to_sym + end + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/entity/custom_method.rb b/vendor/holidays/lib/holidays/definition/entity/custom_method.rb new file mode 100644 index 00000000..aa508734 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/entity/custom_method.rb @@ -0,0 +1,11 @@ +module Holidays + module Definition + module Entity + CustomMethod = Struct.new(:name, :arguments, :source) do + def initialize(fields = {}) + super(*fields.values_at(*members)) + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/entity/test.rb b/vendor/holidays/lib/holidays/definition/entity/test.rb new file mode 100644 index 00000000..4becca72 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/entity/test.rb @@ -0,0 +1,11 @@ +module Holidays + module Definition + module Entity + Test = Struct.new(:dates, :regions, :options, :name, :holiday?) do + def initialize(fields = {}) + super(*fields.values_at(*members)) + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/generator/module.rb b/vendor/holidays/lib/holidays/definition/generator/module.rb new file mode 100644 index 00000000..545bd8a3 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/generator/module.rb @@ -0,0 +1,54 @@ +require 'holidays/errors' + +module Holidays + module Definition + module Generator + class Module + def call(module_name, files, regions, month_strings, custom_methods) + raise ArgumentError.new("module name cannot be nil") if module_name.nil? + raise ArgumentError.new("module name cannot be blank") if module_name.empty? + + raise ArgumentError.new("files cannot be nil") if files.nil? + raise ArgumentError.new("files cannot be empty") if files.empty? + raise ArgumentError.new("files must all be strings") unless files.all? { |f| f.is_a?(String) } + + raise ArgumentError.new("regions cannot be nil") if regions.nil? + raise ArgumentError.new("regions cannot be empty") if regions.empty? + + raise ArgumentError.new("month strings cannot be nil") if month_strings.nil? + raise ArgumentError.new("month strings cannot be empty") if month_strings.empty? + + module_src =<<-EOM +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: #{files.join(', ')} + # + # All the definitions are available at https://github.com/holidays/holidays + module #{module_name.to_s.upcase} # :nodoc: + def self.defined_regions + [:#{regions.join(', :')}] + end + + def self.holidays_by_month + { + #{month_strings.join(",\n")} + } + end + + def self.custom_methods + { + #{custom_methods} + } + end + end +end + EOM + + module_src + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/generator/regions.rb b/vendor/holidays/lib/holidays/definition/generator/regions.rb new file mode 100644 index 00000000..cff76580 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/generator/regions.rb @@ -0,0 +1,55 @@ +module Holidays + module Definition + module Generator + class Regions + # The "ca", "mx", and "us" holiday definitions include the "northamericainformal" + # holiday definitions, but that does not make these countries subregions of one another. + NORTH_AMERICA_REGIONS = %i[ca mx us].freeze + + def call(regions) + validate!(regions) + + <<-EOF +# encoding: utf-8 +module Holidays + REGIONS = #{to_array(regions)} + + PARENT_REGION_LOOKUP = #{generate_parent_lookup(regions)} +end +EOF + end + + private + + def validate!(regions) + raise ArgumentError.new("regions cannot be missing") if regions.nil? + raise ArgumentError.new("regions must be a hash") unless regions.is_a?(Hash) + raise ArgumentError.new("regions cannot be empty") if regions.empty? + end + + def to_array(regions) + all_regions = [] + + regions.each do |region, subregions| + all_regions << subregions + end + + all_regions.flatten.uniq + end + + def generate_parent_lookup(regions) + lookup = {} + + regions.each do |region, subregions| + subregions.each do |subregion| + parent_region = NORTH_AMERICA_REGIONS.include?(subregion) ? subregion : region + lookup[subregion] = parent_region unless lookup.has_key?(subregion) + end + end + + lookup + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/generator/test.rb b/vendor/holidays/lib/holidays/definition/generator/test.rb new file mode 100644 index 00000000..b2eb4b6b --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/generator/test.rb @@ -0,0 +1,51 @@ +require 'holidays/errors' + +module Holidays + module Definition + module Generator + class Test + def initialize(decorator) + @decorator = decorator + end + + def call(module_name, file_names, tests) + validate!(module_name, file_names, tests) + + test_src =<<-EndOfTests +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: #{file_names.join(', ')} +class #{module_name.to_s.capitalize}DefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_#{module_name.to_s.downcase}#{decorate(tests)} + end +end +EndOfTests + + test_src + end + + private + + def validate!(module_name, file_names, tests) + raise ArgumentError.new("module_name cannot be missing") if module_name.nil? || module_name.empty? + raise ArgumentError.new("file_names for '#{module_name}' cannot be missing") if file_names.nil? || file_names.empty? + raise ArgumentError.new("tests for '#{module_name}' cannot be missing") if tests.nil? + end + + def decorate(tests) + out = "" + + tests.each do |t| + out << "\n " + @decorator.call(t) + end + + out + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/parser/custom_method.rb b/vendor/holidays/lib/holidays/definition/parser/custom_method.rb new file mode 100644 index 00000000..e55ab64f --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/parser/custom_method.rb @@ -0,0 +1,67 @@ +require 'holidays/definition/entity/custom_method' + +module Holidays + module Definition + module Parser + class CustomMethod + def initialize(validator) + @validator = validator + end + + def call(methods) + return {} if methods.nil? || methods.empty? + + validate!(methods) + + custom_methods = {} + + methods.each do |name, pieces| + arguments = parse_arguments!(pieces["arguments"]) + + custom_methods[method_key(name, arguments)] = Entity::CustomMethod.new({ + name: name, + arguments: arguments, + source: pieces["ruby"], + }) + end + + custom_methods + end + + private + + def validate!(methods) + raise ArgumentError unless methods.all? do |name, pieces| + @validator.valid?( + { + :name => name, + :arguments => pieces["arguments"], + :source => pieces["ruby"] + } + ) + end + end + + def parse_arguments!(arguments) + splitArgs = arguments.split(",") + parsedArgs = [] + + splitArgs.each do |arg| + parsedArgs << arg.strip + end + + parsedArgs + end + + def method_key(name, args) + "#{name.to_s}(#{args_string(args)})" + end + + def args_string(args) + a = args.join(", ") + a[0..-1] + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/parser/test.rb b/vendor/holidays/lib/holidays/definition/parser/test.rb new file mode 100644 index 00000000..2b816a91 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/parser/test.rb @@ -0,0 +1,86 @@ +require 'holidays/definition/entity/test' + +module Holidays + module Definition + module Parser + class Test + def initialize(validator) + @validator = validator + end + + def call(tests) + return [] if tests.nil? + + validate!(tests) + + tests.map do |t| + given = t["given"] + expect = t["expect"] + + Entity::Test.new( + dates: parse_dates(given["date"]), + regions: parse_regions(given["regions"]), + options: parse_options(given["options"]), + name: expect["name"], + holiday?: is_holiday?(expect["holiday"]), + ) + end + end + + private + + def validate!(tests) + raise ArgumentError unless tests.all? do |t| + dates = t["given"]["date"] + unless dates.is_a?(Array) + dates = [ dates ] + end + + @validator.valid?( + { + :dates => dates, + :regions => t["given"]["regions"], + :options => t["given"]["options"], + :name => t["expect"]["name"], + :holiday => t["expect"]["holiday"], + } + ) + end + end + + def parse_dates(dates) + unless dates.is_a?(Array) + dates = [ dates ] + end + + dates.map do |d| + DateTime.parse(d) + end + end + + def parse_regions(regions) + regions.map do |r| + r.to_sym + end + end + + def parse_options(options) + if options + if options.is_a?(Array) + options.map do |o| + o.to_sym + end + else + [ options.to_sym ] + end + end + end + + # If flag is not present then default to 'true' + def is_holiday?(flag) + flag.nil? ? true : !!flag + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/repository/cache.rb b/vendor/holidays/lib/holidays/definition/repository/cache.rb new file mode 100644 index 00000000..269e2116 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/repository/cache.rb @@ -0,0 +1,47 @@ +module Holidays + module Definition + module Repository + class Cache + def initialize + reset! + end + + def cache_between(start_date, end_date, cache_data, options) + raise ArgumentError unless cache_data + raise ArgumentError unless start_date && end_date + + @cache_range[options] = start_date..end_date + @cache[options] = cache_data.group_by { |holiday| holiday[:date] } + end + + def find(start_date, end_date, options) + return nil unless in_cache_range?(start_date, end_date, options) + + if start_date == end_date + @cache[options].fetch(start_date, []) + else + @cache[options].select do |date, holidays| + date >= start_date && date <= end_date + end.flat_map { |date, holidays| holidays } + end + end + + def reset! + @cache = {} + @cache_range = {} + end + + private + + def in_cache_range?(start_date, end_date, options) + range = @cache_range[options] + if range + range.begin <= start_date && range.end >= end_date + else + false + end + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/repository/custom_methods.rb b/vendor/holidays/lib/holidays/definition/repository/custom_methods.rb new file mode 100644 index 00000000..f6ad60e9 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/repository/custom_methods.rb @@ -0,0 +1,27 @@ +module Holidays + module Definition + module Repository + class CustomMethods + def initialize + @custom_methods = {} + end + + # This performs a merge that overwrites any conflicts. + # While this is not ideal I'm leaving it as-is since I have no + # evidence of any current definitions that will cause an issue. + # + # FIXME: this should probably return an error if a method with the + # same ID already exists. + def add(new_custom_methods) + raise ArgumentError if new_custom_methods.nil? + @custom_methods.merge!(new_custom_methods) + end + + def find(method_id) + raise ArgumentError if method_id.nil? || method_id.empty? + @custom_methods[method_id] + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/repository/holidays_by_month.rb b/vendor/holidays/lib/holidays/definition/repository/holidays_by_month.rb new file mode 100644 index 00000000..ea8a27f5 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/repository/holidays_by_month.rb @@ -0,0 +1,57 @@ +module Holidays + module Definition + module Repository + class HolidaysByMonth + def initialize + @holidays_by_month = {} + end + + def all + @holidays_by_month + end + + def find_by_month(month) + raise ArgumentError unless month >= 0 && month <= 12 + @holidays_by_month[month] + end + + def add(new_holidays) + new_holidays.each do |month, holiday_defs| + @holidays_by_month[month] = [] unless @holidays_by_month[month] + + holiday_defs.each do |holiday_def| + exists = false + @holidays_by_month[month].each do |existing_def| + if definition_exists?(existing_def, holiday_def) + # append regions + existing_def[:regions] << holiday_def[:regions] + + # Should do this once we're done + existing_def[:regions].flatten! + existing_def[:regions].uniq! + exists = true + end + end + + @holidays_by_month[month] << holiday_def unless exists + end + end + end + + private + + def definition_exists?(existing_def, target_def) + existing_def[:name] == target_def[:name] && + existing_def[:wday] == target_def[:wday] && + existing_def[:mday] == target_def[:mday] && + existing_def[:week] == target_def[:week] && + existing_def[:function] == target_def[:function] && + existing_def[:function_modifier] == target_def[:function_modifier] && + existing_def[:type] == target_def[:type] && + existing_def[:observed] == target_def[:observed] && + existing_def[:year_ranges] == target_def[:year_ranges] + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/repository/proc_result_cache.rb b/vendor/holidays/lib/holidays/definition/repository/proc_result_cache.rb new file mode 100644 index 00000000..346fd1c8 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/repository/proc_result_cache.rb @@ -0,0 +1,51 @@ +module Holidays + module Definition + module Repository + # ==== Benchmarks + # + # Lookup Easter Sunday, with caching, by number of iterations: + # + # user system total real + # 0001 0.000000 0.000000 0.000000 ( 0.000000) + # 0010 0.000000 0.000000 0.000000 ( 0.000000) + # 0100 0.078000 0.000000 0.078000 ( 0.078000) + # 1000 0.641000 0.000000 0.641000 ( 0.641000) + # 5000 3.172000 0.015000 3.187000 ( 3.219000) + # + # Lookup Easter Sunday, without caching, by number of iterations: + # + # user system total real + # 0001 0.000000 0.000000 0.000000 ( 0.000000) + # 0010 0.016000 0.000000 0.016000 ( 0.016000) + # 0100 0.125000 0.000000 0.125000 ( 0.125000) + # 1000 1.234000 0.000000 1.234000 ( 1.234000) + # 5000 6.094000 0.031000 6.125000 ( 6.141000) + class ProcResultCache + def initialize + @proc_cache = {} + end + + def lookup(function, *function_arguments) + validate!(function, function_arguments) + + proc_key = build_proc_key(function, function_arguments) + @proc_cache[proc_key] = function.call(*function_arguments) unless @proc_cache[proc_key] + @proc_cache[proc_key] + end + + private + + def validate!(function, function_arguments) + raise ArgumentError.new("function must be a proc") unless function.is_a?(Proc) + function_arguments.each do |arg| + raise ArgumentError.new("function arguments '#{function_arguments}' must contain either integers or dates") unless arg.is_a?(Integer) || arg.is_a?(Date) || arg.is_a?(Symbol) + end + end + + def build_proc_key(function, function_arguments) + Digest::MD5.hexdigest("#{function.to_s}_#{function_arguments.join('_')}") + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/repository/regions.rb b/vendor/holidays/lib/holidays/definition/repository/regions.rb new file mode 100644 index 00000000..583021e0 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/repository/regions.rb @@ -0,0 +1,46 @@ +module Holidays + module Definition + module Repository + class Regions + def initialize(all_generated_regions, parent_region_lookup) + @loaded_regions = [] + @all_generated_regions = all_generated_regions + @parent_region_lookup = parent_region_lookup + end + + def all_generated + @all_generated_regions + end + + def parent_region_lookup(r) + @parent_region_lookup[r] + end + + def all_loaded + @loaded_regions + end + + def loaded?(region) + raise ArgumentError unless region.is_a?(Symbol) + @loaded_regions.include?(region) + end + + def add(regions) + regions = [regions] unless regions.is_a?(Array) + + regions.each do |region| + raise ArgumentError unless region.is_a?(Symbol) + end + + @loaded_regions = @loaded_regions | regions + @loaded_regions.uniq! + end + + def search(prefix) + raise ArgumentError unless prefix.is_a?(Symbol) + @loaded_regions.select { |region| region.to_s =~ Regexp.new("^#{prefix}") } + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/validator/custom_method.rb b/vendor/holidays/lib/holidays/definition/validator/custom_method.rb new file mode 100644 index 00000000..8ade748e --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/validator/custom_method.rb @@ -0,0 +1,31 @@ +module Holidays + module Definition + module Validator + class CustomMethod + VALID_ARGUMENTS = ["date", "year", "month", "day", "region"] + + def valid?(m) + valid_name?(m[:name]) && + valid_arguments?(m[:arguments]) && + valid_source?(m[:source]) + end + + private + + def valid_name?(name) + !name.nil? && !name.empty? + end + + def valid_arguments?(arguments) + arguments.split(",").all? { |arg| + arg == arg.chomp && VALID_ARGUMENTS.include?(arg.strip) + } + end + + def valid_source?(source) + !source.nil? && !source.empty? + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/validator/region.rb b/vendor/holidays/lib/holidays/definition/validator/region.rb new file mode 100644 index 00000000..77c2c484 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/validator/region.rb @@ -0,0 +1,36 @@ +module Holidays + module Definition + module Validator + class Region + def initialize(regions_repo) + @regions_repo = regions_repo + end + + def valid?(r) + return false unless r.is_a?(Symbol) + + region = find_wildcard_base(r) + + (region == :any || + @regions_repo.loaded?(region) || + @regions_repo.all_generated.include?(region)) + end + + private + + # Ex: :gb_ transformed to :gb + def find_wildcard_base(region) + r = region.to_s + + if r =~ /_$/ + base = r.split('_').first + else + base = r + end + + base.to_sym + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/definition/validator/test.rb b/vendor/holidays/lib/holidays/definition/validator/test.rb new file mode 100644 index 00000000..d08e3ad1 --- /dev/null +++ b/vendor/holidays/lib/holidays/definition/validator/test.rb @@ -0,0 +1,71 @@ +module Holidays + module Definition + module Validator + class Test + def valid?(t) + valid_dates?(t[:dates]) && + valid_regions?(t[:regions]) && + valid_name?(t[:name]) && + valid_holiday?(t[:holiday]) && + valid_options?(t[:options]) && + required_fields?(t) + end + + private + + def valid_dates?(dates) + return false unless dates + + dates.all? do |d| + begin + DateTime.parse(d) + true + rescue TypeError, ArgumentError + false + end + end + end + + def valid_regions?(regions) + return false unless regions + + regions.all? do |r| + r.is_a?(String) + end + end + + # Can be missing + def valid_name?(n) + return true unless n + n.is_a?(String) + end + + # Can be missing + def valid_holiday?(h) + return true unless h + h.is_a?(TrueClass) + end + + # Okay to be missing and can be either string or array of strings + def valid_options?(options) + return true unless options + + if options.is_a?(Array) + options.all? do |o| + o.is_a?(String) + end + elsif options.is_a?(String) + true + else + false + end + end + + def required_fields?(t) + return false if t[:name].nil? && t[:holiday].nil? + true + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/errors.rb b/vendor/holidays/lib/holidays/errors.rb new file mode 100644 index 00000000..b76ec418 --- /dev/null +++ b/vendor/holidays/lib/holidays/errors.rb @@ -0,0 +1,11 @@ +module Holidays + class Error < StandardError; end + + class FunctionNotFound < Error; end + class InvalidFunctionResponse < Error; end + + class UnknownRegionError < Error ; end + class InvalidRegion < Error; end + + class DefinitionTestError < Error; end +end diff --git a/vendor/holidays/lib/holidays/factory/date_calculator.rb b/vendor/holidays/lib/holidays/factory/date_calculator.rb new file mode 100644 index 00000000..36343003 --- /dev/null +++ b/vendor/holidays/lib/holidays/factory/date_calculator.rb @@ -0,0 +1,42 @@ +require 'holidays/date_calculator/easter' +require 'holidays/date_calculator/weekend_modifier' +require 'holidays/date_calculator/day_of_month' +require 'holidays/date_calculator/lunar_date' + +module Holidays + module Factory + module DateCalculator + module Easter + module Gregorian + class << self + def easter_calculator + Holidays::DateCalculator::Easter::Gregorian.new + end + end + end + + module Julian + class << self + def easter_calculator + Holidays::DateCalculator::Easter::Julian.new + end + end + end + end + + class << self + def lunar_date + Holidays::DateCalculator::LunarDate.new + end + + def weekend_modifier + Holidays::DateCalculator::WeekendModifier.new + end + + def day_of_month_calculator + Holidays::DateCalculator::DayOfMonth.new + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/factory/definition.rb b/vendor/holidays/lib/holidays/factory/definition.rb new file mode 100644 index 00000000..5626870f --- /dev/null +++ b/vendor/holidays/lib/holidays/factory/definition.rb @@ -0,0 +1,143 @@ +require 'holidays/definition/context/generator' +require 'holidays/definition/context/merger' +require 'holidays/definition/context/function_processor' +require 'holidays/definition/context/load' +require 'holidays/definition/decorator/custom_method_proc' +require 'holidays/definition/decorator/custom_method_source' +require 'holidays/definition/decorator/test' +require 'holidays/definition/generator/module' +require 'holidays/definition/generator/regions' +require 'holidays/definition/generator/test' +require 'holidays/definition/parser/custom_method' +require 'holidays/definition/parser/test' +require 'holidays/definition/repository/holidays_by_month' +require 'holidays/definition/repository/regions' +require 'holidays/definition/repository/cache' +require 'holidays/definition/repository/proc_result_cache' +require 'holidays/definition/repository/custom_methods' +require 'holidays/definition/validator/custom_method' +require 'holidays/definition/validator/region' +require 'holidays/definition/validator/test' + +module Holidays + module Factory + module Definition + class << self + def file_parser + Holidays::Definition::Context::Generator.new( + custom_method_parser, + custom_method_source_decorator, + custom_methods_repository, + test_parser, + test_generator, + module_generator, + ) + end + + def source_generator + Holidays::Definition::Context::Generator.new( + custom_method_parser, + custom_method_source_decorator, + custom_methods_repository, + test_parser, + test_generator, + module_generator, + ) + end + + def function_processor + Holidays::Definition::Context::FunctionProcessor.new( + custom_methods_repository, + proc_result_cache_repository, + ) + end + + def merger + Holidays::Definition::Context::Merger.new( + holidays_by_month_repository, + regions_repository, + custom_methods_repository, + ) + end + + def custom_method_parser + Holidays::Definition::Parser::CustomMethod.new( + custom_method_validator, + ) + end + + def custom_method_proc_decorator + Holidays::Definition::Decorator::CustomMethodProc.new + end + + def custom_method_source_decorator + Holidays::Definition::Decorator::CustomMethodSource.new + end + + def region_validator + Holidays::Definition::Validator::Region.new( + regions_repository + ) + end + + def custom_method_validator + Holidays::Definition::Validator::CustomMethod.new + end + + def holidays_by_month_repository + @holidays_repo ||= Holidays::Definition::Repository::HolidaysByMonth.new + end + + def regions_repository + @regions_repo ||= Holidays::Definition::Repository::Regions.new( + Holidays::REGIONS, + Holidays::PARENT_REGION_LOOKUP, + ) + end + + def cache_repository + @cache_repo ||= Holidays::Definition::Repository::Cache.new + end + + def proc_result_cache_repository + @proc_result_cache_repo ||= Holidays::Definition::Repository::ProcResultCache.new + end + + def custom_methods_repository + @custom_methods_repository ||= Holidays::Definition::Repository::CustomMethods.new + end + + def regions_generator + Holidays::Definition::Generator::Regions.new + end + + def loader + Holidays::Definition::Context::Load.new( + merger, + Holidays::FULL_DEFINITIONS_PATH, + ) + end + + def module_generator + Holidays::Definition::Generator::Module.new + end + + def test_generator + Holidays::Definition::Generator::Test.new( + test_decorator, + ) + end + + def test_decorator + Holidays::Definition::Decorator::Test.new + end + + def test_parser + Holidays::Definition::Parser::Test.new( + Holidays::Definition::Validator::Test.new, + ) + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/factory/finder.rb b/vendor/holidays/lib/holidays/factory/finder.rb new file mode 100644 index 00000000..399ce66c --- /dev/null +++ b/vendor/holidays/lib/holidays/factory/finder.rb @@ -0,0 +1,70 @@ +require 'holidays/finder/context/between' +require 'holidays/finder/context/dates_driver_builder' +require 'holidays/finder/context/next_holiday' +require 'holidays/finder/context/parse_options' +require 'holidays/finder/context/search' +require 'holidays/finder/context/year_holiday' +require 'holidays/finder/rules/in_region' +require 'holidays/finder/rules/year_range' + +module Holidays + module Factory + module Finder + class << self + def search + Holidays::Finder::Context::Search.new( + Factory::Definition.holidays_by_month_repository, + Factory::Definition.function_processor, + Factory::DateCalculator.day_of_month_calculator, + rules, + ) + end + + def between + Holidays::Finder::Context::Between.new( + search, + dates_driver_builder, + parse_options, + ) + end + + def next_holiday + Holidays::Finder::Context::NextHoliday.new( + search, + dates_driver_builder, + parse_options, + ) + end + + def year_holiday + Holidays::Finder::Context::YearHoliday.new( + search, + dates_driver_builder, + parse_options, + ) + end + + def parse_options + Holidays::Finder::Context::ParseOptions.new( + Factory::Definition.regions_repository, + Factory::Definition.region_validator, + Factory::Definition.loader, + ) + end + + private + + def dates_driver_builder + Holidays::Finder::Context::DatesDriverBuilder.new + end + + def rules + { + :in_region => Holidays::Finder::Rules::InRegion, + :year_range => Holidays::Finder::Rules::YearRange, + } + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/context/between.rb b/vendor/holidays/lib/holidays/finder/context/between.rb new file mode 100644 index 00000000..4a2c37f1 --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/context/between.rb @@ -0,0 +1,45 @@ +module Holidays + module Finder + module Context + class Between + def initialize(definition_search, dates_driver_builder, options_parser) + @definition_search = definition_search + @dates_driver_builder = dates_driver_builder + @options_parser = options_parser + end + + def call(start_date, end_date, options) + validate!(start_date, end_date) + + regions, observed, informal = @options_parser.call(options) + dates_driver = @dates_driver_builder.call(start_date, end_date) + + #FIXME Why are we calling the options_parser to convert the observed/informal + # symbols to bool and then...converting them back? O_o + opts = gather_options(observed, informal) + + @definition_search + .call(dates_driver, regions, opts) + .select { |holiday| holiday[:date].between?(start_date, end_date) } + .sort_by { |a| a[:date] } + end + + private + + def validate!(start_date, end_date) + raise ArgumentError unless start_date + raise ArgumentError unless end_date + end + + def gather_options(observed, informal) + opts = [] + + opts << :observed if observed + opts << :informal if informal + + opts + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/context/dates_driver_builder.rb b/vendor/holidays/lib/holidays/finder/context/dates_driver_builder.rb new file mode 100644 index 00000000..a9d0dd2c --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/context/dates_driver_builder.rb @@ -0,0 +1,64 @@ +# This context builds a hash that contains {:year => []}. The idea is that +# we will iterate over each year and then over each month internally and check to see if the +# supplied dates match any holidays for the region and date. So if we supply start_date of 2015/1/1 +# and end_date of 2015/6/1 then we will return a date driver of {:2015 => [0, 1, 2, 5, 6, 7]}. +# In the logic in the various other 'finder' contexts we will iterate over this and compare dates +# in these months to the supplied range to determine whether they should be returned to the user. +module Holidays + module Finder + module Context + class DatesDriverBuilder + def call(start_date, end_date) + dates_driver = {} + + (start_date..end_date).each do |date| + dates_driver[date.year] = [] unless dates_driver[date.year] + dates_driver[date.year] << date.month + dates_driver = add_border_months(date, dates_driver) + end + clean(dates_driver) + end + + private + + # As part of https://github.com/holidays/holidays/issues/146 I am returning + # additional months in an attempt to catch month-spanning date situations (i.e. + # dates falling on 2/1 but being observed on 1/31). By including the additional months + # we are increasing runtimes slightly but improving accuracy, which is more important + # to me at this stage. + def add_border_months(current_date, dates_driver) + if current_date.month == 1 + dates_driver[current_date.year] << 2 + + prev_year = current_date.year - 1 + dates_driver[prev_year] = [] unless dates_driver[prev_year] + dates_driver[prev_year] << 12 + elsif current_date.month == 12 + dates_driver[current_date.year] << 11 + + next_year = current_date.year + 1 + dates_driver[next_year] = [] unless dates_driver[next_year] + dates_driver[next_year] << 1 + else + dates_driver[current_date.year] << current_date.month - 1 << current_date.month + 1 + end + + dates_driver + end + + def clean(dates_driver) + dates_driver.each do |year, months| + # Always add variable month '0' for proc calc purposes. For example, 'easter' lives in + # 'month 0' but is vital to calculating a lot of easter-related dates. + dates_driver[year] << 0 + + dates_driver[year].uniq! + dates_driver[year].sort! + end + + dates_driver + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/context/next_holiday.rb b/vendor/holidays/lib/holidays/finder/context/next_holiday.rb new file mode 100644 index 00000000..7670488f --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/context/next_holiday.rb @@ -0,0 +1,57 @@ +module Holidays + module Finder + module Context + class NextHoliday + def initialize(definition_search, dates_driver_builder, options_parser) + @definition_search = definition_search + @dates_driver_builder = dates_driver_builder + @options_parser = options_parser + end + + def call(holidays_count, from_date, options) + validate!(holidays_count, from_date) + + regions, observed, informal = @options_parser.call(options) + + holidays = [] + opts = gather_options(observed, informal) + + # This could be smarter but I don't have any evidence that just checking for + # the next 12 months will cause us issues. If it does we can implement something + # smarter here to check in smaller increments. + dates_driver = @dates_driver_builder.call(from_date, from_date >> 12) + + @definition_search + .call(dates_driver, regions, opts) + .sort_by { |a| a[:date] } + .each do |holiday| + if holiday[:date] >= from_date + holidays << holiday + holidays_count -= 1 + break if holidays_count == 0 + end + end + + holidays.sort_by { |a| a[:date] } + end + + private + + def validate!(holidays_count, from_date) + raise ArgumentError unless holidays_count + raise ArgumentError if holidays_count <= 0 + raise ArgumentError unless from_date + end + + def gather_options(observed, informal) + opts = [] + + opts << :observed if observed + opts << :informal if informal + + opts + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/context/parse_options.rb b/vendor/holidays/lib/holidays/finder/context/parse_options.rb new file mode 100644 index 00000000..83462012 --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/context/parse_options.rb @@ -0,0 +1,104 @@ +module Holidays + module Finder + module Context + class ParseOptions + def initialize(regions_repo, region_validator, definition_loader) + @regions_repo = regions_repo + @region_validator = region_validator + @definition_loader = definition_loader + end + + # Returns [(arr)regions, (bool)observed, (bool)informal] + def call(*options) + options.flatten! + + #TODO This is garbage. These two deletes MUST come before the + # parse_regions call, otherwise it thinks that :observed and :informal + # are regions to parse. We should be splitting these things out. + observed = options.delete(:observed) ? true : false + informal = options.delete(:informal) ? true : false + regions = parse_regions!(options) + + return regions, observed, informal + end + + private + + # Check regions against list of supported regions and return an array of + # symbols. + # + # If a wildcard region is found (e.g. :ca_) it is expanded into all + # of its available sub regions. + def parse_regions!(regions) + regions = [regions] unless regions.kind_of?(Array) + + if regions.empty? + regions = [:any] + else + regions = regions.collect { |r| r.to_sym } + end + + validate!(regions) + + loaded_regions = [] + + if regions.include?(:any) + @regions_repo.all_generated.each do |r| + if @regions_repo.loaded?(r) + loaded_regions << r + next + end + + target = @regions_repo.parent_region_lookup(r) + load_region!(target) + + loaded_regions << r + end + else + regions.each do |r| + if is_wildcard?(r) + loaded_regions << load_wildcard_parent!(r) + else + parent = @regions_repo.parent_region_lookup(r) + + target = parent || r + + if @regions_repo.loaded?(target) + loaded_regions << r + next + end + + load_region!(target) + + loaded_regions << r + end + end + end + + loaded_regions.flatten.compact.uniq + end + + def validate!(regions) + regions.each do |r| + raise InvalidRegion unless @region_validator.valid?(r) + end + end + + def is_wildcard?(r) + r.to_s =~ /_$/ + end + + def load_wildcard_parent!(wildcard_region) + prefix = wildcard_region.to_s.split('_').first.to_sym + load_region!(prefix) + end + + def load_region!(r) + @definition_loader.call(r) + rescue NameError, LoadError => e + raise UnknownRegionError.new(e), "Could not load region: #{r}" + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/context/search.rb b/vendor/holidays/lib/holidays/finder/context/search.rb new file mode 100644 index 00000000..9cc39321 --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/context/search.rb @@ -0,0 +1,110 @@ +module Holidays + module Finder + module Context + class Search + def initialize(holidays_by_month_repo, custom_method_processor, day_of_month_calculator, rules) + @holidays_by_month_repo = holidays_by_month_repo + @custom_method_processor = custom_method_processor + @day_of_month_calculator = day_of_month_calculator + @rules = rules + end + + def call(dates_driver, regions, options) + validate!(dates_driver) + + holidays = [] + dates_driver.each do |year, months| + months.each do |month| + next unless hbm = @holidays_by_month_repo.find_by_month(month) + hbm.each do |h| + next if informal_type?(h[:type]) && !informal_set?(options) + next unless @rules[:in_region].call(regions, h[:regions]) + + if h[:year_ranges] + next unless @rules[:year_range].call(year, h[:year_ranges]) + end + + date = build_date(year, month, h) + next unless date + + if observed_set?(options) && h[:observed] + date = build_observed_date(date, regions, h) + end + + holidays << {:date => date, :name => h[:name], :regions => h[:regions]} + end + end + end + + holidays + end + + private + + def validate!(dates_driver) + #FIXME This should give some kind of error message that indicates the + # problem. + raise ArgumentError if dates_driver.nil? || dates_driver.empty? + + dates_driver.each do |year, months| + months.each do |month| + raise ArgumentError unless month >= 0 && month <= 12 + end + end + end + + def informal_type?(type) + type && [:informal, 'informal'].include?(type) + end + + def informal_set?(options) + options && options.include?(:informal) == true + end + + def observed_set?(options) + options && options.include?(:observed) == true + end + + def build_date(year, month, h) + if h[:function] + holiday = custom_holiday(year, month, h) + #FIXME The result should always be present, see https://github.com/holidays/holidays/issues/204 for more information + current_month = holiday&.month + current_day = holiday&.mday + else + current_month = month + current_day = h[:mday] || @day_of_month_calculator.call(year, month, h[:week], h[:wday]) + end + + # Silently skip bad mdays + #TODO Should we be doing something different here? We have no concept of logging right now. Maybe we should add it? + Date.civil(year, current_month, current_day) rescue nil + end + + def custom_holiday(year, month, h) + @custom_method_processor.call( + build_custom_method_input(year, month, h[:mday], h[:regions]), + h[:function], h[:function_arguments], h[:function_modifier], + ) + end + + def build_custom_method_input(year, month, day, regions) + { + year: year, + month: month, + day: day, + region: regions.first, #FIXME This isn't ideal but will work for our current use case... + } + end + + def build_observed_date(date, regions, h) + @custom_method_processor.call( + build_custom_method_input(date.year, date.month, date.day, regions), + h[:observed], + [:date], + ) + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/context/year_holiday.rb b/vendor/holidays/lib/holidays/finder/context/year_holiday.rb new file mode 100644 index 00000000..1f687ce1 --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/context/year_holiday.rb @@ -0,0 +1,57 @@ +module Holidays + module Finder + module Context + class YearHoliday + def initialize(definition_search, dates_driver_builder, options_parser) + @definition_search = definition_search + @dates_driver_builder = dates_driver_builder + @options_parser = options_parser + end + + def call(from_date, options) + validate!(from_date) + + regions, observed, informal = @options_parser.call(options) + + # This could be smarter but I don't have any evidence that just checking for + # the next 12 months will cause us issues. If it does we can implement something + # smarter here to check in smaller increments. + # + #FIXME Could this be until the to_date instead? Save us some processing? + # This is matching what was in holidays.rb currently so I'm keeping it. -pp + dates_driver = @dates_driver_builder.call(from_date, from_date >> 12) + + to_date = Date.civil(from_date.year, 12, 31) + holidays = [] + ret_holidays = [] + opts = gather_options(observed, informal) + + ret_holidays = @definition_search.call(dates_driver, regions, opts) + + ret_holidays.each do |holiday| + if holiday[:date] >= from_date && holiday[:date] <= to_date + holidays << holiday + end + end + + holidays.sort{|a, b| a[:date] <=> b[:date] } + end + + private + + def validate!(from_date) + raise ArgumentError unless from_date && from_date.is_a?(Date) + end + + def gather_options(observed, informal) + opts = [] + + opts << :observed if observed == true + opts << :informal if informal == true + + opts + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/rules/in_region.rb b/vendor/holidays/lib/holidays/finder/rules/in_region.rb new file mode 100644 index 00000000..0ef2eba2 --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/rules/in_region.rb @@ -0,0 +1,31 @@ +module Holidays + module Finder + module Rules + class InRegion + class << self + def call(requested, available) + return true if requested.include?(:any) + + # When an underscore is encountered, derive the parent regions + # symbol and check for both. + requested = requested.collect do |r| + if r.to_s =~ /_/ + chunks = r.to_s.split('_') + + chunks.length.downto(1).map do |num| + chunks[0..-num].join('_').to_sym + end + else + r + end + end + + requested = requested.flatten.uniq + + available.any? { |avail| requested.include?(avail) } + end + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/finder/rules/year_range.rb b/vendor/holidays/lib/holidays/finder/rules/year_range.rb new file mode 100644 index 00000000..84f98b3c --- /dev/null +++ b/vendor/holidays/lib/holidays/finder/rules/year_range.rb @@ -0,0 +1,58 @@ +module Holidays + module Finder + module Rules + class YearRange + class << self + UNTIL = :until + FROM = :from + LIMITED = :limited + BETWEEN = :between + + def call(target_year, year_range_defs) + validate!(target_year, year_range_defs) + + operator = year_range_defs.keys.first + rule_value = year_range_defs[operator] + + case operator + when UNTIL + matched = target_year <= rule_value + when FROM + matched = target_year >= rule_value + when LIMITED + matched = rule_value.include?(target_year) + when BETWEEN + matched = rule_value.cover?(target_year) + else + matched = false + end + + matched + end + + private + + def validate!(target_year, year_ranges) + raise ArgumentError.new("target_year must be a number") unless target_year.is_a?(Integer) + raise ArgumentError.new("year_ranges cannot be missing") if year_ranges.nil? || year_ranges.empty? + raise ArgumentError.new("year_ranges must contain a hash with a single operator") unless year_ranges.is_a?(Hash) && year_ranges.size == 1 + + operator = year_ranges.keys.first + value = year_ranges[operator] + + raise ArgumentError.new("Invalid operator found: '#{operator}'") unless [UNTIL, FROM, LIMITED, BETWEEN].include?(operator) + + case operator + when UNTIL, FROM + raise ArgumentError.new("#{UNTIL} and #{FROM} operator value must be a number, received: '#{value}'") unless value.is_a?(Integer) + when LIMITED + raise ArgumentError.new(":limited operator value must be an array containing at least one integer value, received: '#{value}'") unless value.is_a?(Array) && value.size >= 1 && value.all? { |v| v.is_a?(Integer) } + when BETWEEN + raise ArgumentError.new(":between operator value must be a range, received: '#{value}'") unless value.is_a?(Range) + end + end + end + end + end + end +end diff --git a/vendor/holidays/lib/holidays/load_all_definitions.rb b/vendor/holidays/lib/holidays/load_all_definitions.rb new file mode 100644 index 00000000..5180df9a --- /dev/null +++ b/vendor/holidays/lib/holidays/load_all_definitions.rb @@ -0,0 +1,56 @@ +module Holidays + #TODO This file should be renamed. It's no longer about definitions, really. + class LoadAllDefinitions + class << self + def call + #FIXME I need a better way to do this. I'm thinking of putting these 'common' methods + # into some kind of definition file so it can be loaded automatically but I'm afraid + # of making that big of a breaking API change since these are public. For the time + # being I'll load them manually like this. + # + # NOTE: These are no longer public! We can do whatever we want here! + global_methods = { + "easter(year)" => gregorian_easter.method(:calculate_easter_for).to_proc, + "orthodox_easter(year)" => gregorian_easter.method(:calculate_orthodox_easter_for).to_proc, + "orthodox_easter_julian(year)" => julian_easter.method(:calculate_orthodox_easter_for).to_proc, + "to_monday_if_sunday(date)" => weekend_modifier.method(:to_monday_if_sunday).to_proc, + "to_monday_if_weekend(date)" => weekend_modifier.method(:to_monday_if_weekend).to_proc, + "to_weekday_if_boxing_weekend(date)" => weekend_modifier.method(:to_weekday_if_boxing_weekend).to_proc, + "to_weekday_if_boxing_weekend_from_year(year)" => weekend_modifier.method(:to_weekday_if_boxing_weekend_from_year).to_proc, + "to_weekday_if_weekend(date)" => weekend_modifier.method(:to_weekday_if_weekend).to_proc, + "calculate_day_of_month(year, month, day, wday)" => day_of_month_calculator.method(:call).to_proc, + "to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(year)" => weekend_modifier.method(:to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday).to_proc, + "to_tuesday_if_sunday_or_monday_if_saturday(date)" => weekend_modifier.method(:to_tuesday_if_sunday_or_monday_if_saturday).to_proc, + "lunar_to_solar(year, month, day, region)" => lunar_date.method(:to_solar).to_proc, + } + + Factory::Definition.custom_methods_repository.add(global_methods) + + static_regions_definition = "#{Holidays::DEFINITIONS_PATH}/REGIONS.rb" + require static_regions_definition + end + + private + + def gregorian_easter + Factory::DateCalculator::Easter::Gregorian.easter_calculator + end + + def julian_easter + Factory::DateCalculator::Easter::Julian.easter_calculator + end + + def weekend_modifier + Factory::DateCalculator.weekend_modifier + end + + def day_of_month_calculator + Factory::DateCalculator.day_of_month_calculator + end + + def lunar_date + Factory::DateCalculator.lunar_date + end + end + end +end diff --git a/vendor/holidays/lib/holidays/version.rb b/vendor/holidays/lib/holidays/version.rb new file mode 100644 index 00000000..fe911100 --- /dev/null +++ b/vendor/holidays/lib/holidays/version.rb @@ -0,0 +1,3 @@ +module Holidays + VERSION = '8.4.1' +end diff --git a/vendor/holidays/test/coverage_report.rb b/vendor/holidays/test/coverage_report.rb new file mode 100644 index 00000000..2410ba03 --- /dev/null +++ b/vendor/holidays/test/coverage_report.rb @@ -0,0 +1,26 @@ +require 'simplecov' + +# For reasons I don't understand jruby implementations report lower coverage +# than other ruby versions. Ruby 2.5.3, for instance, is at 92%. +# +# We set the floor based on jruby so that all automated tests pass on Travis CI. +SimpleCov.minimum_coverage 89 + +SimpleCov.add_filter [ + # Apparently simplecov doesn't automatically filter 'spec' or 'test' so we + # have to do it manually. + 'test', + + # Only filtered because I tend to not see value in testing factories. + 'lib/holidays/factory/', + + # jruby coverage flips out here and doesn't count much of the large date + # arrays used by this class. This results in an extremely low reported + # coverage for this specific file but only in jruby, not other ruby versions. + # Since it obliterates coverage percentages I'll filter it until I can come + # up with a solution. + 'lib/holidays/date_calculator/lunar_date.rb', +] + +SimpleCov.coverage_dir 'reports/coverage' +SimpleCov.start diff --git a/vendor/holidays/test/data/test_custom_govt_holiday_defs.yaml b/vendor/holidays/test/data/test_custom_govt_holiday_defs.yaml new file mode 100644 index 00000000..5e0a038d --- /dev/null +++ b/vendor/holidays/test/data/test_custom_govt_holiday_defs.yaml @@ -0,0 +1,5 @@ +months: + 3: + - name: Yaaay Government Day + regions: [custom_multiple_files, custom_multiple_files_govt] + mday: 1 \ No newline at end of file diff --git a/vendor/holidays/test/data/test_custom_informal_holidays_defs.yaml b/vendor/holidays/test/data/test_custom_informal_holidays_defs.yaml new file mode 100644 index 00000000..2a7ccf8a --- /dev/null +++ b/vendor/holidays/test/data/test_custom_informal_holidays_defs.yaml @@ -0,0 +1,11 @@ +--- +months: + 1: + - name: informal day with type as string + regions: [custom_informal] + mday: 1 + type: informal + - name: informal day with type as symbol + regions: [custom_informal] + mday: 5 + type: :informal \ No newline at end of file diff --git a/vendor/holidays/test/data/test_custom_year_range_holiday_defs.yaml b/vendor/holidays/test/data/test_custom_year_range_holiday_defs.yaml new file mode 100644 index 00000000..4a2df15d --- /dev/null +++ b/vendor/holidays/test/data/test_custom_year_range_holiday_defs.yaml @@ -0,0 +1,31 @@ +months: + 6: + - name: after_year + regions: [custom_year_range_file] + mday: 1 + year_ranges: + from: 2016 + - name: before_year + regions: [custom_year_range_file] + mday: 2 + year_ranges: + until: 2017 + - name: between_year + regions: [custom_year_range_file] + mday: 3 + year_ranges: + between: + start: 2016 + end: 2018 + - name: limited_year + regions: [custom_year_range_file] + mday: 4 + year_ranges: + limited: [2016,2018,2019] + +tests: + - given: + date: '2017-01-01' + regions: [custom_year_range_file] + expect: + name: "after_year" diff --git a/vendor/holidays/test/data/test_invalid_region.rb b/vendor/holidays/test/data/test_invalid_region.rb new file mode 100644 index 00000000..cb9a7415 --- /dev/null +++ b/vendor/holidays/test/data/test_invalid_region.rb @@ -0,0 +1,15 @@ +module Holidays + module BAD_REGION_NAME + def self.defined_regions + [:test_region] + end + + def self.holidays_by_month + {} + end + + def self.custom_methods + {} + end + end +end diff --git a/vendor/holidays/test/data/test_multiple_custom_holiday_defs.yaml b/vendor/holidays/test/data/test_multiple_custom_holiday_defs.yaml new file mode 100644 index 00000000..3227025e --- /dev/null +++ b/vendor/holidays/test/data/test_multiple_custom_holiday_defs.yaml @@ -0,0 +1,12 @@ +months: + 10: + - name: Company Founding! + regions: [custom_multiple_files] + mday: 5 + +tests: + - given: + date: "2013-10-5" + regions: ["custom_multiple_files"] + expect: + name: "Company Founding!" diff --git a/vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_1.yaml b/vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_1.yaml new file mode 100644 index 00000000..e386851e --- /dev/null +++ b/vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_1.yaml @@ -0,0 +1,38 @@ +months: + 0: + - name: With Function Modifier + regions: [multiple_with_conflict_1] + function: easter(year) + function_modifier: 60 + - name: With Function Only Different Function Name + regions: [multiple_with_conflict_1] + function: conflict_custom_method_1(year) + - name: With Function Only Same Function Name + regions: [multiple_with_conflict_1] + function: conflict_custom_method_identical_name_between_regions(year) + - name: With Function Only Same Function Name - Region 1 + regions: [multiple_with_conflict_1] + function: conflict_custom_method_identical_name_between_regions_but_different_holiday_names(year) + 1: + - name: New Year's Day + regions: [multiple_with_conflict_1] + mday: 1 + observed: to_monday_if_weekend(date) + 10: + - name: Testing Conflict Month 10 + regions: [multiple_with_conflict_1] + mday: 5 + +methods: + conflict_custom_method_1: + arguments: year + ruby: | + Date.civil(year, 8, 1) + conflict_custom_method_identical_name_between_regions: + arguments: year + ruby: | + Date.civil(year, 9, 1) + conflict_custom_method_identical_name_between_regions_but_different_holiday_names: + arguments: year + ruby: | + Date.civil(year, 9, 15) diff --git a/vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_2.yaml b/vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_2.yaml new file mode 100644 index 00000000..1e657baf --- /dev/null +++ b/vendor/holidays/test/data/test_multiple_regions_with_conflicts_region_2.yaml @@ -0,0 +1,38 @@ +months: + 0: + - name: With Function Modifier + regions: [multiple_with_conflict_2] + function: easter(year) + function_modifier: 64 + - name: With Function Only Different Function Name + regions: [multiple_with_conflict_2] + function: conflict_custom_method_2(year) + - name: With Function Only Same Function Name + regions: [multiple_with_conflict_2] + function: conflict_custom_method_identical_name_between_regions(year) + - name: With Function Only Same Function Name - Region 2 + regions: [multiple_with_conflict_2] + function: conflict_custom_method_identical_name_between_regions_but_different_holiday_names(year) + 1: + - name: New Year's Day + regions: [multiple_with_conflict_2] + mday: 1 + observed: to_tuesday_if_sunday_or_monday_if_saturday(date) + 10: + - name: Testing Conflict Month 10 + regions: [multiple_with_conflict_2] + mday: 7 + +methods: + conflict_custom_method_2: + arguments: year + ruby: | + Date.civil(year, 12, 1) + conflict_custom_method_identical_name_between_regions: + arguments: year + ruby: | + Date.civil(year, 11, 1) + conflict_custom_method_identical_name_between_regions_but_different_holiday_names: + arguments: year + ruby: | + Date.civil(year, 11, 15) diff --git a/vendor/holidays/test/data/test_region.rb b/vendor/holidays/test/data/test_region.rb new file mode 100644 index 00000000..4236bb50 --- /dev/null +++ b/vendor/holidays/test/data/test_region.rb @@ -0,0 +1,15 @@ +module Holidays + module TEST_REGION + def self.defined_regions + [:test_region, :test_region2] + end + + def self.holidays_by_month + {} + end + + def self.custom_methods + {} + end + end +end diff --git a/vendor/holidays/test/data/test_single_custom_holiday_defs.yaml b/vendor/holidays/test/data/test_single_custom_holiday_defs.yaml new file mode 100644 index 00000000..f42a0bee --- /dev/null +++ b/vendor/holidays/test/data/test_single_custom_holiday_defs.yaml @@ -0,0 +1,12 @@ +months: + 6: + - name: Company Founding + regions: [custom_single_file] + mday: 20 + +tests: + - given: + date: '2013-06-20' + regions: [custom_single_file] + expect: + name: "Company Founding" diff --git a/vendor/holidays/test/data/test_single_custom_holiday_with_custom_procs.yaml b/vendor/holidays/test/data/test_single_custom_holiday_with_custom_procs.yaml new file mode 100644 index 00000000..47f94502 --- /dev/null +++ b/vendor/holidays/test/data/test_single_custom_holiday_with_custom_procs.yaml @@ -0,0 +1,28 @@ +months: + 0: + - name: Custom Holiday + regions: [custom_single_file] + function: custom_method(year, month) + function_modifier: 5 + 6: + - name: Company Founding + regions: [custom_single_file] + mday: 20 +methods: + custom_method: + arguments: year, month + source: | + d = Date.civil(year, month, 1) + d + 2 + +tests: + - given: + date: '2013-06-20' + regions: [custom_single_file] + expect: + name: "Company Founding" + - given: + date: '2015-01-01' + regions: [custom_single_file] + expect: + name: "Custom Holiday" diff --git a/vendor/holidays/test/defs/test_defs_ar.rb b/vendor/holidays/test/defs/test_defs_ar.rb new file mode 100644 index 00000000..dfd7bbd0 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ar.rb @@ -0,0 +1,53 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ar.yaml +class ArDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ar + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2016, 1, 1), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Lunes", (Holidays.on(Date.civil(2016, 2, 8), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Martes", (Holidays.on(Date.civil(2016, 2, 9), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Lunes", (Holidays.on(Date.civil(2017, 2, 27), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Martes", (Holidays.on(Date.civil(2017, 2, 28), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Lunes", (Holidays.on(Date.civil(2018, 2, 12), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Martes", (Holidays.on(Date.civil(2018, 2, 13), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día Nacional de la Memoria por la Verdad y la Justicia", (Holidays.on(Date.civil(2016, 3, 24), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día del Veterano y de los Caídos en la Guerra de Malvinas", (Holidays.on(Date.civil(2016, 4, 2), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2016, 5, 1), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Revolución de Mayo", (Holidays.on(Date.civil(2016, 5, 25), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Bandera", (Holidays.on(Date.civil(2016, 6, 20), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Feriado puente turístico", (Holidays.on(Date.civil(2016, 7, 8), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 9), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Paso a la Inmortalidad del General José de San Martín", (Holidays.on(Date.civil(2016, 8, 15), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día del Respeto a la Diversidad Cultural", (Holidays.on(Date.civil(2016, 10, 12), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Soberanía Nacional", (Holidays.on(Date.civil(2016, 11, 20), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción de María", (Holidays.on(Date.civil(2016, 12, 8), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Feriado puente turístico", (Holidays.on(Date.civil(2016, 12, 9), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2016, 12, 25), [:ar], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_at.rb b/vendor/holidays/test/defs/test_defs_at.rb new file mode 100644 index 00000000..ec01a3fe --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_at.rb @@ -0,0 +1,31 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/at.yaml +class AtDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_at + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2009, 1, 1), [:at], [:informal])[0] || {})[:name] + + assert_equal "Ostermontag", (Holidays.on(Date.civil(2009, 4, 13), [:at])[0] || {})[:name] + + assert_equal "Christi Himmelfahrt", (Holidays.on(Date.civil(2009, 5, 21), [:at])[0] || {})[:name] + + assert_equal "Pfingstmontag", (Holidays.on(Date.civil(2009, 6, 1), [:at])[0] || {})[:name] + + assert_equal "Nationalfeiertag", (Holidays.on(Date.civil(2009, 10, 26), [:at], [:informal])[0] || {})[:name] + + assert_equal "Mariä Empfängnis", (Holidays.on(Date.civil(2009, 12, 8), [:at], [:informal])[0] || {})[:name] + + assert_equal "1. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 25), [:at], [:informal])[0] || {})[:name] + + assert_equal "2. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 26), [:at], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 5, 8), [:at])[0] || {})[:name] + + assert_equal "Fronleichnam", (Holidays.on(Date.civil(2017, 6, 15), [:at])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_au.rb b/vendor/holidays/test/defs/test_defs_au.rb new file mode 100644 index 00000000..2a50fdee --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_au.rb @@ -0,0 +1,200 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/au.yaml +class AuDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_au + assert_equal "Good Friday", (Holidays.on(Date.civil(2017, 4, 14), [:au])[0] || {})[:name] + + assert_equal "Easter Saturday", (Holidays.on(Date.civil(2017, 4, 15), [:au_nsw])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2010, 4, 4), [:au_nsw])[0] || {})[:name] +assert_equal "Easter Sunday", (Holidays.on(Date.civil(2017, 4, 16), [:au_nsw])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2013, 10, 7), [:au_qld])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2012, 5, 7), [:au_qld])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2015, 10, 5), [:au_qld])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2016, 5, 2), [:au_qld])[0] || {})[:name] + + assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2012, 6, 11), [:au_qld])[0] || {})[:name] +assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2012, 10, 1), [:au_qld])[0] || {})[:name] +assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2013, 6, 10), [:au_qld])[0] || {})[:name] +assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2015, 6, 8), [:au_qld])[0] || {})[:name] +assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2016, 10, 3), [:au_qld])[0] || {})[:name] + + assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2014, 9, 29), [:au_wa])[0] || {})[:name] +assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2015, 9, 28), [:au_wa])[0] || {})[:name] +assert_equal "Queen's Birthday", (Holidays.on(Date.civil(2016, 9, 26), [:au_wa])[0] || {})[:name] + + assert_equal "Family & Community Day", (Holidays.on(Date.civil(2014, 9, 29), [:au_act])[0] || {})[:name] + + assert_equal "Family & Community Day", (Holidays.on(Date.civil(2015, 9, 28), [:au_act])[0] || {})[:name] + + assert_equal "Family & Community Day", (Holidays.on(Date.civil(2016, 9, 26), [:au_act])[0] || {})[:name] + + assert_equal "Australia Day", (Holidays.on(Date.civil(2014, 1, 26), [:au_qld])[0] || {})[:name] + + assert_equal "Australia Day", (Holidays.on(Date.civil(2014, 1, 27), [:au_qld], [:observed])[0] || {})[:name] + + assert_equal "Cairns Show", (Holidays.on(Date.civil(2014, 7, 18), [:au_qld_cairns])[0] || {})[:name] + + assert_equal "Cairns Show", (Holidays.on(Date.civil(2013, 7, 19), [:au_qld_cairns])[0] || {})[:name] + + assert_equal "Royal Hobart Show", (Holidays.on(Date.civil(2013, 10, 24), [:au_tas_south])[0] || {})[:name] + + assert_equal "Royal Hobart Show", (Holidays.on(Date.civil(2014, 10, 23), [:au_tas_south])[0] || {})[:name] + + assert_equal "Royal Hobart Show", (Holidays.on(Date.civil(2015, 10, 22), [:au_tas_south])[0] || {})[:name] + + assert_equal "Royal Hobart Show", (Holidays.on(Date.civil(2016, 10, 20), [:au_tas_south])[0] || {})[:name] + + assert_equal "Recreation Day", (Holidays.on(Date.civil(2013, 11, 4), [:au_tas_north])[0] || {})[:name] + + assert_equal "Recreation Day", (Holidays.on(Date.civil(2014, 11, 3), [:au_tas_north])[0] || {})[:name] + + assert_equal "Recreation Day", (Holidays.on(Date.civil(2015, 11, 2), [:au_tas_north])[0] || {})[:name] + + assert_equal "Recreation Day", (Holidays.on(Date.civil(2016, 11, 7), [:au_tas_north])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 12, 26), [:au_tas])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 11, 14), [:au_qld_brisbane])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 12, 26), [:au_nt])[0] || {})[:name] + + assert_equal "Proclamation Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_sa])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_nt])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2014, 11, 4), [:au_vic])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 11, 3), [:au_vic])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_vic])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2014, 5, 19), [:au_sa])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2005, 3, 14), [:au_sa])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 12, 26), [:au_sa])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 4, 27), [:au_qld], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2014, 11, 14), [:au_qld])[0] || {})[:name] + + assert_equal "Melbourne Cup Day", (Holidays.on(Date.civil(2014, 11, 4), [:au_vic_melbourne])[0] || {})[:name] + + assert_equal "Melbourne Cup Day", (Holidays.on(Date.civil(2015, 11, 3), [:au_vic_melbourne])[0] || {})[:name] + + assert_equal "Friday before the AFL Grand Final", (Holidays.on(Date.civil(2015, 10, 2), [:au_vic])[0] || {})[:name] + + assert_equal "Friday before the AFL Grand Final", (Holidays.on(Date.civil(2016, 9, 30), [:au_vic])[0] || {})[:name] + + assert_equal "Friday before the AFL Grand Final", (Holidays.on(Date.civil(2017, 9, 29), [:au_vic])[0] || {})[:name] + + assert_equal "May Public Holiday", (Holidays.on(Date.civil(2005, 5, 16), [:au_sa])[0] || {})[:name] + + assert_equal "March Public Holiday", (Holidays.on(Date.civil(2014, 3, 10), [:au_sa])[0] || {})[:name] + + assert_equal "March Public Holiday", (Holidays.on(Date.civil(2015, 3, 9), [:au_sa])[0] || {})[:name] + + assert_equal "March Public Holiday", (Holidays.on(Date.civil(2016, 3, 14), [:au_sa])[0] || {})[:name] + + assert_equal "March Public Holiday", (Holidays.on(Date.civil(2017, 3, 13), [:au_sa])[0] || {})[:name] + + assert_equal "ANZAC Day", (Holidays.on(Date.civil(2015, 4, 25), [:au_qld, :au_wa])[0] || {})[:name] + + assert_equal "ANZAC Day", (Holidays.on(Date.civil(2015, 4, 27), [:au_wa], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2015, 12, 26), [:au_qld])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2015, 12, 28), [:au_qld], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 12, 26), [:au_sa])[0] || {})[:name] + + assert_equal "Proclamation Day", (Holidays.on(Date.civil(2015, 12, 28), [:au_sa])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 12, 26), [:au_tas])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2015, 12, 28), [:au_tas])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 12, 26), [:au_nt])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2015, 12, 28), [:au_nt])[0] || {})[:name] + + assert_equal "Royal Hobart Regatta", (Holidays.on(Date.civil(2012, 2, 13), [:au_tas_south])[0] || {})[:name] + + assert_equal "Royal Hobart Regatta", (Holidays.on(Date.civil(2014, 2, 10), [:au_tas_south])[0] || {})[:name] + + assert_equal "Royal Hobart Regatta", (Holidays.on(Date.civil(2015, 2, 9), [:au_tas_south])[0] || {})[:name] + + assert_equal "Royal Hobart Regatta", (Holidays.on(Date.civil(2016, 2, 8), [:au_tas_south])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_qld])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_qld], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_nsw])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_nsw], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_act])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_act], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_tas])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_tas], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_wa])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_wa], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_sa])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:au_sa], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_nsw])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_nsw], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_act])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_act], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_tas])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_tas], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_wa])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_wa], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:au_sa])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:au_sa], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_vic], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 27), [:au_nt], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 1), [:au, :au_qld, :au_nsw, :au_act, :au_vic, :au_sa, :au_wa, :au_nt])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:au, :au_qld, :au_nsw, :au_act, :au_vic, :au_sa, :au_wa, :au_nt], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:au_tas])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 3, 27), [:au_qld])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2017, 4, 16), [:au_qld])[0] || {})[:name] + + assert_equal "G20 Day", (Holidays.on(Date.civil(2014, 11, 14), [:au_qld_brisbane])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_be_fr.rb b/vendor/holidays/test/defs/test_defs_be_fr.rb new file mode 100644 index 00000000..07436de8 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_be_fr.rb @@ -0,0 +1,45 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/be_fr.yaml +class Be_frDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_be_fr + assert_equal "Jour de l'an", (Holidays.on(Date.civil(2007, 1, 1), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Pâques", (Holidays.on(Date.civil(2007, 4, 8), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Lundi de Pâques", (Holidays.on(Date.civil(2007, 4, 9), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Fête du travail", (Holidays.on(Date.civil(2007, 5, 1), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Ascension", (Holidays.on(Date.civil(2007, 5, 17), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Pentecôte", (Holidays.on(Date.civil(2007, 5, 27), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Lundi de Pentecôte", (Holidays.on(Date.civil(2007, 5, 28), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Fête nationale", (Holidays.on(Date.civil(2007, 7, 21), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Assomption", (Holidays.on(Date.civil(2007, 8, 15), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Toussaint", (Holidays.on(Date.civil(2007, 11, 1), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Armistice 1918", (Holidays.on(Date.civil(2007, 11, 11), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Noël", (Holidays.on(Date.civil(2007, 12, 25), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Pâques", (Holidays.on(Date.civil(2017, 4, 16), [:be_fr])[0] || {})[:name] + + assert_equal "Lundi de Pâques", (Holidays.on(Date.civil(2017, 4, 17), [:be_fr])[0] || {})[:name] + + assert_equal "Ascension", (Holidays.on(Date.civil(2017, 5, 25), [:be_fr])[0] || {})[:name] + + assert_equal "Pentecôte", (Holidays.on(Date.civil(2017, 6, 4), [:be_fr])[0] || {})[:name] + + assert_equal "Lundi de Pentecôte", (Holidays.on(Date.civil(2017, 6, 5), [:be_fr])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_be_nl.rb b/vendor/holidays/test/defs/test_defs_be_nl.rb new file mode 100644 index 00000000..ff367730 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_be_nl.rb @@ -0,0 +1,45 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/be_nl.yaml +class Be_nlDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_be_nl + assert_equal "Nieuwjaar", (Holidays.on(Date.civil(2007, 1, 1), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pasen", (Holidays.on(Date.civil(2007, 4, 8), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Paasmaandag", (Holidays.on(Date.civil(2007, 4, 9), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Feest van de Arbeid", (Holidays.on(Date.civil(2007, 5, 1), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "O.H. Hemelvaart", (Holidays.on(Date.civil(2007, 5, 17), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pinksteren", (Holidays.on(Date.civil(2007, 5, 27), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pinkstermaandag", (Holidays.on(Date.civil(2007, 5, 28), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Nationale Feestdag", (Holidays.on(Date.civil(2007, 7, 21), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "O.L.V. Hemelvaart", (Holidays.on(Date.civil(2007, 8, 15), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Allerheiligen", (Holidays.on(Date.civil(2007, 11, 1), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Wapenstilstand 1918", (Holidays.on(Date.civil(2007, 11, 11), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Kerstmis", (Holidays.on(Date.civil(2007, 12, 25), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pasen", (Holidays.on(Date.civil(2017, 4, 16), [:be_nl])[0] || {})[:name] + + assert_equal "Paasmaandag", (Holidays.on(Date.civil(2017, 4, 17), [:be_nl])[0] || {})[:name] + + assert_equal "O.H. Hemelvaart", (Holidays.on(Date.civil(2017, 5, 25), [:be_nl])[0] || {})[:name] + + assert_equal "Pinksteren", (Holidays.on(Date.civil(2017, 6, 4), [:be_nl])[0] || {})[:name] + + assert_equal "Pinkstermaandag", (Holidays.on(Date.civil(2017, 6, 5), [:be_nl])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_bg.rb b/vendor/holidays/test/defs/test_defs_bg.rb new file mode 100644 index 00000000..c9911647 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_bg.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/bg.yaml +class BgDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_bg + assert_equal "New Year's Day", (Holidays.on(Date.civil(2015, 1, 1), [:bg_en])[0] || {})[:name] + + assert_equal "Liberation Day", (Holidays.on(Date.civil(2015, 3, 3), [:bg_en])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2015, 3, 28), [:bg_en])[0] || {})[:name] + + assert_equal "Holy Saturday", (Holidays.on(Date.civil(2015, 3, 29), [:bg_en])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2015, 3, 30), [:bg_en])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2015, 3, 31), [:bg_en])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2015, 5, 1), [:bg_en])[0] || {})[:name] + + assert_equal "St. George's Day", (Holidays.on(Date.civil(2015, 5, 6), [:bg_en])[0] || {})[:name] + + assert_equal "Slavic Literacy Day", (Holidays.on(Date.civil(2015, 5, 24), [:bg_en])[0] || {})[:name] + + assert_equal "Unification Day", (Holidays.on(Date.civil(2015, 9, 6), [:bg_en])[0] || {})[:name] + + assert_equal "The Independence Day", (Holidays.on(Date.civil(2015, 9, 22), [:bg_en])[0] || {})[:name] + + assert_equal "Revival Leader's Day", (Holidays.on(Date.civil(2015, 11, 1), [:bg_en])[0] || {})[:name] + + assert_equal "Christmas Eve", (Holidays.on(Date.civil(2015, 12, 24), [:bg_en])[0] || {})[:name] + + assert_equal "Christmas", (Holidays.on(Date.civil(2015, 12, 25), [:bg_en])[0] || {})[:name] + + assert_equal "Christmas", (Holidays.on(Date.civil(2015, 12, 26), [:bg_en])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_br.rb b/vendor/holidays/test/defs/test_defs_br.rb new file mode 100644 index 00000000..7b153044 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_br.rb @@ -0,0 +1,45 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/br.yaml +class BrDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_br + assert_equal "Dia da Confraternização Universal", (Holidays.on(Date.civil(2008, 1, 1), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2005, 2, 8), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2006, 2, 28), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2007, 2, 20), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2008, 2, 5), [:br], [:informal])[0] || {})[:name] + + assert_equal "Sexta-feira Santa", (Holidays.on(Date.civil(2008, 3, 21), [:br], [:informal])[0] || {})[:name] + + assert_equal "Páscoa", (Holidays.on(Date.civil(2008, 3, 23), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia de Tiradentes", (Holidays.on(Date.civil(2008, 4, 21), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia do Trabalho", (Holidays.on(Date.civil(2008, 5, 1), [:br], [:informal])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2005, 5, 26), [:br], [:informal])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2007, 6, 7), [:br], [:informal])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2008, 5, 22), [:br], [:informal])[0] || {})[:name] + + assert_equal "Proclamação da Independência", (Holidays.on(Date.civil(2008, 9, 7), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia de Nossa Senhora Aparecida", (Holidays.on(Date.civil(2008, 10, 12), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia de Finados", (Holidays.on(Date.civil(2008, 11, 2), [:br], [:informal])[0] || {})[:name] + + assert_equal "Proclamação da República", (Holidays.on(Date.civil(2008, 11, 15), [:br], [:informal])[0] || {})[:name] + + assert_equal "Natal", (Holidays.on(Date.civil(2008, 12, 25), [:br], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ca.rb b/vendor/holidays/test/defs/test_defs_ca.rb new file mode 100644 index 00000000..e208d8fd --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ca.rb @@ -0,0 +1,272 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ca.yaml, definitions/northamericainformal.yaml +class CaDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ca + assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2008, 3, 21), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2013, 3, 31), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2008, 7, 1), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2008, 9, 1), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(1990, 2, 19), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_ab])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1970, 2, 16), [:ca_ab])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1988, 2, 15), [:ca_ab])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1989, 2, 20), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2007, 2, 19), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1970, 2, 16), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1988, 2, 15), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1989, 2, 20), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2006, 2, 20), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2008, 2, 18), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1970, 2, 16), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1988, 2, 15), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1989, 2, 20), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2006, 2, 20), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2007, 2, 19), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 11), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 10), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2018, 2, 12), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2000, 2, 14), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 14), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2012, 2, 13), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 2, 11), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2044, 2, 8), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2019, 2, 18), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2020, 2, 17), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2000, 2, 21), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 21), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 2, 19), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2018, 2, 19), [:ca_nb])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2019, 2, 18), [:ca_nb])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 2, 18), [:ca_nb])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 2, 20), [:ca_nb])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2015, 2, 16), [:ca_ns])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2016, 2, 15), [:ca_ns])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2017, 2, 20), [:ca_ns])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2000, 2, 21), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2012, 2, 20), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2013, 2, 18), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2014, 2, 17), [:ca_ns])[0] || {})[:name] + + assert_equal "Islander Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_pe])[0] || {})[:name] + + assert_equal "Islander Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_pe])[0] || {})[:name] + + assert_equal "Victoria Day", (Holidays.on(Date.civil(2004, 5, 24), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2005, 5, 23), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2006, 5, 22), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2007, 5, 21), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2008, 5, 19), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] + + assert_equal "B.C. Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_bc])[0] || {})[:name] + + assert_equal "Saskatchewan Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_sk])[0] || {})[:name] + + assert_equal "Heritage Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_ab], [:informal])[0] || {})[:name] + + assert_equal "Natal Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_ns], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_on], [:informal])[0] || {})[:name] +assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_on], [:informal])[0] || {})[:name] +assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_on], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_nt])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_nu])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_pe], [:informal])[0] || {})[:name] + + assert_equal "New Brunswick Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_nb])[0] || {})[:name] + + assert_equal "B.C. Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_bc])[0] || {})[:name] + + assert_equal "Saskatchewan Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_sk])[0] || {})[:name] + + assert_equal "Heritage Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_ab], [:informal])[0] || {})[:name] + + assert_equal "Natal Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_ns], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_nt])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_nu])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_pe], [:informal])[0] || {})[:name] + + assert_equal "New Brunswick Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_nb])[0] || {})[:name] + + assert_equal "B.C. Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_bc])[0] || {})[:name] + + assert_equal "Saskatchewan Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_sk])[0] || {})[:name] + + assert_equal "Heritage Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_ab], [:informal])[0] || {})[:name] + + assert_equal "Natal Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_ns], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_nt])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_nu])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_pe], [:informal])[0] || {})[:name] + + assert_equal "New Brunswick Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_nb])[0] || {})[:name] + + assert_equal "Remembrance Day", (Holidays.on(Date.civil(2010, 11, 11), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt], [:observed])[0] || {})[:name] +assert_equal "Remembrance Day", (Holidays.on(Date.civil(2012, 11, 12), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt], [:observed])[0] || {})[:name] +assert_equal "Remembrance Day", (Holidays.on(Date.civil(2017, 11, 13), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt], [:observed])[0] || {})[:name] + + assert_equal "Remembrance Day", (Holidays.on(Date.civil(2016, 11, 11), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2011, 1, 3), [:ca], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:ca], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2016, 1, 1), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2011, 7, 1), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2012, 7, 2), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2017, 7, 3), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 25), [:ca])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2018, 12, 25), [:ca])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 25), [:ca])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2022, 12, 25), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 24), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2012, 12, 25), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 24), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2010, 12, 28), [:ca_on], [:observed])[0] || {})[:name] +assert_equal "Boxing Day", (Holidays.on(Date.civil(2012, 12, 26), [:ca_on], [:observed])[0] || {})[:name] +assert_equal "Boxing Day", (Holidays.on(Date.civil(2015, 12, 28), [:ca_on], [:observed])[0] || {})[:name] +assert_equal "Boxing Day", (Holidays.on(Date.civil(2016, 12, 27), [:ca_on], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_equal "National Aboriginal Day", (Holidays.on(Date.civil(2017, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_equal "National Aboriginal Day", (Holidays.on(Date.civil(2018, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2019, 8, 5), [:ca_mb], [:informal])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2020, 8, 3), [:ca_mb], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 8, 3), [:ca_mb])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_mb], [:informal])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2045, 8, 7), [:ca_mb], [:informal])[0] || {})[:name] + + assert_equal "Nunavut Day", (Holidays.on(Date.civil(2020, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_equal "Nunavut Day", (Holidays.on(Date.civil(2021, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_equal "Groundhog Day", (Holidays.on(Date.civil(2013, 2, 2), [:us], [:informal])[0] || {})[:name] + + assert_equal "Valentine's Day", (Holidays.on(Date.civil(2013, 2, 14), [:us], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2013, 3, 17), [:us], [:informal])[0] || {})[:name] + + assert_equal "April Fool's Day", (Holidays.on(Date.civil(2013, 4, 1), [:us], [:informal])[0] || {})[:name] + + assert_equal "Earth Day", (Holidays.on(Date.civil(2013, 4, 22), [:us], [:informal])[0] || {})[:name] + + assert_equal "Mother's Day", (Holidays.on(Date.civil(2013, 5, 12), [:us], [:informal])[0] || {})[:name] + + assert_equal "Armed Forces Day", (Holidays.on(Date.civil(2013, 5, 18), [:us], [:informal])[0] || {})[:name] + + assert_equal "Father's Day", (Holidays.on(Date.civil(2013, 6, 16), [:us], [:informal])[0] || {})[:name] + + assert_equal "Halloween", (Holidays.on(Date.civil(2013, 10, 31), [:us], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ch.rb b/vendor/holidays/test/defs/test_defs_ch.rb new file mode 100644 index 00000000..9cdaedbf --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ch.rb @@ -0,0 +1,51 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ch.yaml +class ChDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ch + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2018, 1, 1), [:ch])[0] || {})[:name] + + assert_equal "Bundesfeiertag", (Holidays.on(Date.civil(2012, 8, 1), [:ch])[0] || {})[:name] + + assert_equal "Weihnachten", (Holidays.on(Date.civil(2012, 12, 25), [:ch])[0] || {})[:name] + + assert_equal "Auffahrt", (Holidays.on(Date.civil(2012, 5, 17), [:ch])[0] || {})[:name] + + assert_equal "Bundesfeiertag", (Holidays.on(Date.civil(2012, 8, 1), [:ch_zh])[0] || {})[:name] + + assert_equal "Weihnachten", (Holidays.on(Date.civil(2012, 12, 25), [:ch_zh])[0] || {})[:name] + + assert_equal "Auffahrt", (Holidays.on(Date.civil(2012, 5, 17), [:ch_zh])[0] || {})[:name] + + assert_equal "Tag der Arbeit", (Holidays.on(Date.civil(2012, 5, 1), [:ch_zh])[0] || {})[:name] + + assert_equal "Stefanstag", (Holidays.on(Date.civil(2012, 12, 26), [:ch_zh])[0] || {})[:name] + + assert_equal "Lundi du Jeûne fédéral", (Holidays.on(Date.civil(2012, 9, 17), [:ch_vd])[0] || {})[:name] + + assert_equal "Lundi du Jeûne fédéral", (Holidays.on(Date.civil(2013, 9, 16), [:ch_vd])[0] || {})[:name] + + assert_equal "Lundi du Jeûne fédéral", (Holidays.on(Date.civil(2014, 9, 22), [:ch_vd])[0] || {})[:name] + + assert_equal "Jeûne genevois", (Holidays.on(Date.civil(2012, 9, 6), [:ch_ge])[0] || {})[:name] + + assert_equal "Jeûne genevois", (Holidays.on(Date.civil(2013, 9, 5), [:ch_ge])[0] || {})[:name] + + assert_equal "Jeûne genevois", (Holidays.on(Date.civil(2014, 9, 11), [:ch_ge])[0] || {})[:name] + + assert_equal "Näfelser Fahrt", (Holidays.on(Date.civil(2012, 4, 12), [:ch_gl])[0] || {})[:name] + + assert_equal "Näfelser Fahrt", (Holidays.on(Date.civil(2013, 4, 4), [:ch_gl])[0] || {})[:name] + + assert_equal "Näfelser Fahrt", (Holidays.on(Date.civil(2014, 4, 3), [:ch_gl])[0] || {})[:name] + + assert_equal "Zibelemärit", (Holidays.on(Date.civil(2014, 11, 24), [:ch_be])[0] || {})[:name] + + assert_equal "Zibelemärit", (Holidays.on(Date.civil(2020, 11, 23), [:ch_be])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_cl.rb b/vendor/holidays/test/defs/test_defs_cl.rb new file mode 100644 index 00000000..7b13b0d1 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_cl.rb @@ -0,0 +1,69 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/cl.yaml +class ClDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_cl + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2014, 1, 1), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2011, 4, 22), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2011, 4, 23), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2012, 4, 6), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2012, 4, 7), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2013, 3, 29), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2013, 3, 30), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2014, 4, 18), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2014, 4, 19), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2015, 4, 3), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2015, 4, 4), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2016, 3, 26), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2014, 5, 1), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de las Glorias Navales", (Holidays.on(Date.civil(2014, 5, 21), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(1999, 6, 29), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2000, 6, 26), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2017, 6, 26), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2018, 7, 2), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de la Virgen del Carmen", (Holidays.on(Date.civil(2014, 7, 16), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Asunción de la Virgen", (Holidays.on(Date.civil(2014, 8, 15), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Independencia Nacional", (Holidays.on(Date.civil(2014, 9, 18), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de las Glorias del Ejército", (Holidays.on(Date.civil(2014, 9, 19), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Encuentro de Dos Mundos", (Holidays.on(Date.civil(1999, 10, 12), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Encuentro de Dos Mundos", (Holidays.on(Date.civil(2017, 10, 9), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de las Iglesias Evangélicas y Protestantes", (Holidays.on(Date.civil(2017, 10, 27), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2014, 11, 1), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción de María", (Holidays.on(Date.civil(2014, 12, 8), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2014, 12, 25), [:cl], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_co.rb b/vendor/holidays/test/defs/test_defs_co.rb new file mode 100644 index 00000000..c70c635a --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_co.rb @@ -0,0 +1,113 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/co.yaml +class CoDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_co + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2014, 1, 1), [:co])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2017, 1, 1), [:co])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2014, 1, 6), [:co])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2015, 1, 12), [:co])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2017, 1, 9), [:co])[0] || {})[:name] + + assert_equal "Día de San José", (Holidays.on(Date.civil(2014, 3, 24), [:co])[0] || {})[:name] + + assert_equal "Día de San José", (Holidays.on(Date.civil(2017, 3, 20), [:co])[0] || {})[:name] + + assert_equal "Día de San José", (Holidays.on(Date.civil(2018, 3, 19), [:co])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2015, 4, 2), [:co])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2017, 4, 13), [:co])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2018, 3, 29), [:co])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2014, 4, 18), [:co])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:co])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2018, 3, 30), [:co])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2013, 5, 1), [:co])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2016, 5, 1), [:co])[0] || {})[:name] + + assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2014, 6, 2), [:co])[0] || {})[:name] + + assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2016, 5, 9), [:co])[0] || {})[:name] + + assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2017, 5, 29), [:co])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2014, 6, 23), [:co])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2016, 5, 30), [:co])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2017, 6, 19), [:co])[0] || {})[:name] + + assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2014, 6, 30), [:co])[0] || {})[:name] + + assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2016, 6, 6), [:co])[0] || {})[:name] + + assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2017, 6, 26), [:co])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2016, 7, 4), [:co])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2017, 7, 3), [:co])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2014, 7, 20), [:co])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 20), [:co])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2018, 7, 20), [:co])[0] || {})[:name] + + assert_equal "Batalla de Boyacá", (Holidays.on(Date.civil(2014, 8, 7), [:co])[0] || {})[:name] + + assert_equal "Batalla de Boyacá", (Holidays.on(Date.civil(2016, 8, 7), [:co])[0] || {})[:name] + + assert_equal "Batalla de Boyacá", (Holidays.on(Date.civil(2018, 8, 7), [:co])[0] || {})[:name] + + assert_equal "La Asunción de la Virgen", (Holidays.on(Date.civil(2014, 8, 18), [:co])[0] || {})[:name] + + assert_equal "La Asunción de la Virgen", (Holidays.on(Date.civil(2016, 8, 15), [:co])[0] || {})[:name] + + assert_equal "La Asunción de la Virgen", (Holidays.on(Date.civil(2017, 8, 21), [:co])[0] || {})[:name] + + assert_equal "Día de la Raza", (Holidays.on(Date.civil(2014, 10, 13), [:co])[0] || {})[:name] + + assert_equal "Día de la Raza", (Holidays.on(Date.civil(2016, 10, 17), [:co])[0] || {})[:name] + + assert_equal "Día de la Raza", (Holidays.on(Date.civil(2017, 10, 16), [:co])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2014, 11, 3), [:co])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2016, 11, 7), [:co])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2017, 11, 6), [:co])[0] || {})[:name] + + assert_equal "Independencia de Cartagena", (Holidays.on(Date.civil(2014, 11, 17), [:co])[0] || {})[:name] + + assert_equal "Independencia de Cartagena", (Holidays.on(Date.civil(2016, 11, 14), [:co])[0] || {})[:name] + + assert_equal "Independencia de Cartagena", (Holidays.on(Date.civil(2017, 11, 13), [:co])[0] || {})[:name] + + assert_equal "Día de la Inmaculada Concepción", (Holidays.on(Date.civil(2013, 12, 8), [:co])[0] || {})[:name] + + assert_equal "Día de la Inmaculada Concepción", (Holidays.on(Date.civil(2014, 12, 8), [:co])[0] || {})[:name] + + assert_equal "Día de la Inmaculada Concepción", (Holidays.on(Date.civil(2016, 12, 8), [:co])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2014, 12, 25), [:co])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2016, 12, 25), [:co])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2017, 12, 25), [:co])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_cr.rb b/vendor/holidays/test/defs/test_defs_cr.rb new file mode 100644 index 00000000..4db97d7d --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_cr.rb @@ -0,0 +1,29 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/cr.yaml +class CrDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_cr + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2015, 1, 1), [:cr])[0] || {})[:name] + + assert_equal "Día de Juan Santamaría", (Holidays.on(Date.civil(2015, 4, 11), [:cr])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2015, 5, 1), [:cr])[0] || {})[:name] + + assert_equal "Día de la Anexión de Guanacaste", (Holidays.on(Date.civil(2015, 7, 25), [:cr])[0] || {})[:name] + + assert_equal "Día de la Virgen de los Angeles", (Holidays.on(Date.civil(2015, 8, 2), [:cr])[0] || {})[:name] + + assert_equal "Día de la Madre", (Holidays.on(Date.civil(2015, 8, 15), [:cr])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2015, 9, 15), [:cr])[0] || {})[:name] + + assert_equal "Día de las Culturas", (Holidays.on(Date.civil(2015, 10, 12), [:cr])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2016, 12, 25), [:cr])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_cz.rb b/vendor/holidays/test/defs/test_defs_cz.rb new file mode 100644 index 00000000..11fb5fec --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_cz.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/cz.yaml +class CzDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_cz + assert_equal "Den obnovy samostatného českého státu", (Holidays.on(Date.civil(2010, 1, 1), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Velký pátek", (Holidays.on(Date.civil(2016, 3, 25), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Velikonoční pondělí", (Holidays.on(Date.civil(2010, 4, 5), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Svátek práce", (Holidays.on(Date.civil(2010, 5, 1), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den vítězství", (Holidays.on(Date.civil(2010, 5, 8), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den slovanských věrozvěstů Cyrila a Metoděje", (Holidays.on(Date.civil(2010, 7, 5), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den upálení mistra Jana Husa", (Holidays.on(Date.civil(2010, 7, 6), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den české státnosti", (Holidays.on(Date.civil(2010, 9, 28), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den vzniku samostatného československého státu", (Holidays.on(Date.civil(2010, 10, 28), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den boje za svobodu a demokracii", (Holidays.on(Date.civil(2010, 11, 17), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Štědrý den", (Holidays.on(Date.civil(2010, 12, 24), [:cz], [:informal])[0] || {})[:name] + + assert_equal "1. svátek vánoční", (Holidays.on(Date.civil(2010, 12, 25), [:cz], [:informal])[0] || {})[:name] + + assert_equal "2. svátek vánoční", (Holidays.on(Date.civil(2010, 12, 26), [:cz], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_de.rb b/vendor/holidays/test/defs/test_defs_de.rb new file mode 100644 index 00000000..fd8ef250 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_de.rb @@ -0,0 +1,85 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/de.yaml +class DeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_de + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2009, 1, 1), [:de], [:informal])[0] || {})[:name] + + assert_equal "Karfreitag", (Holidays.on(Date.civil(2009, 4, 10), [:de], [:informal])[0] || {})[:name] + + assert_equal "Ostersonntag", (Holidays.on(Date.civil(2009, 4, 12), [:de], [:informal])[0] || {})[:name] + + assert_equal "Ostermontag", (Holidays.on(Date.civil(2009, 4, 13), [:de], [:informal])[0] || {})[:name] + + assert_equal "Tag der Arbeit", (Holidays.on(Date.civil(2009, 5, 1), [:de], [:informal])[0] || {})[:name] + + assert_equal "Christi Himmelfahrt", (Holidays.on(Date.civil(2009, 5, 21), [:de], [:informal])[0] || {})[:name] + + assert_equal "Pfingstsonntag", (Holidays.on(Date.civil(2009, 5, 31), [:de], [:informal])[0] || {})[:name] + + assert_equal "Pfingstmontag", (Holidays.on(Date.civil(2009, 6, 1), [:de], [:informal])[0] || {})[:name] + + assert_equal "Tag der Deutschen Einheit", (Holidays.on(Date.civil(2009, 10, 3), [:de], [:informal])[0] || {})[:name] + + assert_equal "Heilig Abend", (Holidays.on(Date.civil(2009, 12, 24), [:de], [:informal])[0] || {})[:name] + + assert_equal "1. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 25), [:de], [:informal])[0] || {})[:name] + + assert_equal "2. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 26), [:de], [:informal])[0] || {})[:name] + + assert_equal "Silvester", (Holidays.on(Date.civil(2009, 12, 31), [:de], [:informal])[0] || {})[:name] + + assert_equal "Heilige Drei Könige", (Holidays.on(Date.civil(2009, 1, 6), [:de_bw, :de_by, :de_st, :de_])[0] || {})[:name] + + assert_equal "Fronleichnam", (Holidays.on(Date.civil(2009, 6, 11), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath])[0] || {})[:name] + + assert_equal "Mariä Himmelfahrt", (Holidays.on(Date.civil(2009, 8, 15), [:de_by, :de_sl, :de_])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2009, 10, 31), [:de_bb, :de_mv, :de_sn, :de_st, :de_th, :de_])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2009, 10, 31), [:de_bw], [:informal])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2017, 10, 31), [:de])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 10, 31), [:de])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 10, 31), [:de])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2018, 10, 31), [:de_bb, :de_hb, :de_hh, :de_mv, :de_ni, :de_sh, :de_sn, :de_st, :de_th])[0] || {})[:name] + + assert_equal "Allerheiligen", (Holidays.on(Date.civil(2009, 11, 1), [:de_bw, :de_by, :de_nw, :de_rp, :de_sl, :de_])[0] || {})[:name] + + assert_equal "Friedensfest", (Holidays.on(Date.civil(2015, 8, 8), [:de_by_augsburg])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 8, 8), [:de, :de_bw, :de_by, :de_bb, :de_he, :de_mv, :de_nw, :de_rp, :de_sl, :de_sn, :de_st, :de_th])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 5, 8), [:de])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 8, 8), [:de])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2004, 11, 17), [:de_sn])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2005, 11, 16), [:de_sn])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2006, 11, 22), [:de_sn])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2009, 11, 18), [:de_sn])[0] || {})[:name] + + assert_equal "Weiberfastnacht", (Holidays.on(Date.civil(2016, 2, 4), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn], [:informal])[0] || {})[:name] + + assert_equal "Rosenmontag", (Holidays.on(Date.civil(2016, 2, 8), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn], [:informal])[0] || {})[:name] + + assert_equal "Aschermittwoch", (Holidays.on(Date.civil(2016, 2, 10), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 3, 8), [:de_be])[0] || {})[:name] + + assert_equal "Internationaler Frauentag", (Holidays.on(Date.civil(2019, 3, 8), [:de_be])[0] || {})[:name] + + assert_equal "Tag der Befreiung", (Holidays.on(Date.civil(2020, 5, 8), [:de_be])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_dk.rb b/vendor/holidays/test/defs/test_defs_dk.rb new file mode 100644 index 00000000..1f92e691 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_dk.rb @@ -0,0 +1,43 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/dk.yaml +class DkDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_dk + assert_equal "Nytårsdag", (Holidays.on(Date.civil(2007, 1, 1), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Fastelavn", (Holidays.on(Date.civil(2007, 2, 18), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. påskedag", (Holidays.on(Date.civil(2007, 4, 9), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Dronningens fødselsdag", (Holidays.on(Date.civil(2007, 4, 16), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Skærtorsdag", (Holidays.on(Date.civil(2007, 4, 5), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Langfredag", (Holidays.on(Date.civil(2007, 4, 6), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Påskedag", (Holidays.on(Date.civil(2007, 4, 8), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Arbejdernes kampdag", (Holidays.on(Date.civil(2007, 5, 1), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Store Bededag", (Holidays.on(Date.civil(2007, 5, 4), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Kristi Himmelfartsdag", (Holidays.on(Date.civil(2007, 5, 17), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Pinsedag", (Holidays.on(Date.civil(2007, 5, 27), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. Pinsedag", (Holidays.on(Date.civil(2007, 5, 28), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Grundlovsdag", (Holidays.on(Date.civil(2007, 6, 5), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Juleaftensdag", (Holidays.on(Date.civil(2007, 12, 24), [:dk], [:informal])[0] || {})[:name] + + assert_equal "1. juledag", (Holidays.on(Date.civil(2007, 12, 25), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. juledag", (Holidays.on(Date.civil(2007, 12, 26), [:dk], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ecbtarget.rb b/vendor/holidays/test/defs/test_defs_ecbtarget.rb new file mode 100644 index 00000000..2ea42243 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ecbtarget.rb @@ -0,0 +1,27 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ecbtarget.yaml +class EcbtargetDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ecbtarget + assert_equal "New Year's Day", (Holidays.on(Date.civil(2013, 1, 1), [:ecbtarget])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2013, 5, 1), [:ecbtarget])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2013, 3, 29), [:ecbtarget])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2013, 4, 1), [:ecbtarget])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2013, 12, 25), [:ecbtarget])[0] || {})[:name] + + assert_equal "Christmas Holiday", (Holidays.on(Date.civil(2013, 12, 26), [:ecbtarget])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2013, 3, 29), [:ecbtarget])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2013, 4, 1), [:ecbtarget])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ee.rb b/vendor/holidays/test/defs/test_defs_ee.rb new file mode 100644 index 00000000..7c2e17b0 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ee.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ee.yaml +class EeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ee + assert_equal "uusaasta", (Holidays.on(Date.civil(2017, 1, 1), [:ee])[0] || {})[:name] + + assert_equal "iseseisvuspäev", (Holidays.on(Date.civil(2017, 2, 24), [:ee])[0] || {})[:name] + + assert_equal "kevadpüha", (Holidays.on(Date.civil(2017, 5, 1), [:ee])[0] || {})[:name] + + assert_equal "võidupüha ja jaanilaupäev", (Holidays.on(Date.civil(2017, 6, 23), [:ee])[0] || {})[:name] + + assert_equal "jaanipäev", (Holidays.on(Date.civil(2017, 6, 24), [:ee])[0] || {})[:name] + + assert_equal "taasiseseisvumispäev", (Holidays.on(Date.civil(2017, 8, 20), [:ee])[0] || {})[:name] + + assert_equal "jõululaupäev", (Holidays.on(Date.civil(2017, 12, 24), [:ee])[0] || {})[:name] + + assert_equal "esimene jõulupüha", (Holidays.on(Date.civil(2017, 12, 25), [:ee])[0] || {})[:name] + + assert_equal "teine jõulupüha", (Holidays.on(Date.civil(2017, 12, 26), [:ee])[0] || {})[:name] + + assert_equal "suur reede", (Holidays.on(Date.civil(2017, 4, 14), [:ee])[0] || {})[:name] +assert_equal "suur reede", (Holidays.on(Date.civil(2018, 3, 30), [:ee])[0] || {})[:name] +assert_equal "suur reede", (Holidays.on(Date.civil(2019, 4, 19), [:ee])[0] || {})[:name] + + assert_equal "ülestõusmispühade 1. püha", (Holidays.on(Date.civil(2017, 4, 16), [:ee])[0] || {})[:name] +assert_equal "ülestõusmispühade 1. püha", (Holidays.on(Date.civil(2018, 4, 1), [:ee])[0] || {})[:name] +assert_equal "ülestõusmispühade 1. püha", (Holidays.on(Date.civil(2019, 4, 21), [:ee])[0] || {})[:name] + + assert_equal "nelipühade 1. püha", (Holidays.on(Date.civil(2017, 6, 4), [:ee])[0] || {})[:name] +assert_equal "nelipühade 1. püha", (Holidays.on(Date.civil(2018, 5, 20), [:ee])[0] || {})[:name] +assert_equal "nelipühade 1. püha", (Holidays.on(Date.civil(2019, 6, 9), [:ee])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_el.rb b/vendor/holidays/test/defs/test_defs_el.rb new file mode 100644 index 00000000..cac52355 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_el.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/el.yaml +class ElDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_el + assert_equal "Πρωτοχρονιά", (Holidays.on(Date.civil(2011, 1, 1), [:el], [:informal])[0] || {})[:name] + + assert_equal "Θεοφάνεια", (Holidays.on(Date.civil(2011, 1, 6), [:el], [:informal])[0] || {})[:name] + + assert_equal "Μεγάλη Παρασκευή", (Holidays.on(Date.civil(2011, 4, 22), [:el], [:informal])[0] || {})[:name] + + assert_equal "Μεγάλο Σάββατο", (Holidays.on(Date.civil(1970, 4, 25), [:el], [:informal])[0] || {})[:name] + + assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(1985, 4, 14), [:el], [:informal])[0] || {})[:name] + + assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(2011, 4, 24), [:el], [:informal])[0] || {})[:name] + + assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(2027, 5, 2), [:el], [:informal])[0] || {})[:name] + + assert_equal "Δευτέρα του Πάσχα", (Holidays.on(Date.civil(2046, 4, 30), [:el], [:informal])[0] || {})[:name] + + assert_equal "Πρωτομαγιά", (Holidays.on(Date.civil(2011, 5, 1), [:el], [:informal])[0] || {})[:name] + + assert_equal "Αγίου Πνεύματος", (Holidays.on(Date.civil(2011, 6, 13), [:el], [:informal])[0] || {})[:name] + + assert_equal "Αγίου Πνεύματος", (Holidays.on(Date.civil(2012, 6, 4), [:el], [:informal])[0] || {})[:name] + + assert_equal "Καθαρά Δευτέρα", (Holidays.on(Date.civil(2011, 3, 7), [:el], [:informal])[0] || {})[:name] + + assert_equal "Καθαρά Δευτέρα", (Holidays.on(Date.civil(2012, 2, 27), [:el], [:informal])[0] || {})[:name] + + assert_equal "Χριστούγεννα", (Holidays.on(Date.civil(2011, 12, 25), [:el], [:informal])[0] || {})[:name] + + assert_equal "Δεύτερη ημέρα των Χριστουγέννων", (Holidays.on(Date.civil(2011, 12, 26), [:el], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_es.rb b/vendor/holidays/test/defs/test_defs_es.rb new file mode 100644 index 00000000..c337622e --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_es.rb @@ -0,0 +1,137 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/es.yaml +class EsDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_es + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2009, 1, 1), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día de Reyes", (Holidays.on(Date.civil(2009, 1, 6), [:es], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2009, 4, 10), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2009, 5, 1), [:es], [:informal])[0] || {})[:name] + + assert_equal "Asunción", (Holidays.on(Date.civil(2009, 8, 15), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día de la Hispanidad", (Holidays.on(Date.civil(2009, 10, 12), [:es], [:informal])[0] || {})[:name] + + assert_equal "Todos los Santos", (Holidays.on(Date.civil(2009, 11, 1), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día de la Constitución", (Holidays.on(Date.civil(2009, 12, 6), [:es], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción", (Holidays.on(Date.civil(2009, 12, 8), [:es], [:informal])[0] || {})[:name] + + assert_equal "Navidad del Señor", (Holidays.on(Date.civil(2009, 12, 25), [:es], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_pv], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_na], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_an], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ib], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_cm], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_mu], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_m], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ar], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_cl], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_cn], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_lo], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ga], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ce], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_o], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ex], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_], [:informal])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_pv])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_ct])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_na])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_v])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_vc])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_an])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_v])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_vc])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_cm])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_mu])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_m])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_])[0] || {})[:name] + + assert_equal "Día de Castilla y León", (Holidays.on(Date.civil(2009, 4, 23), [:es_cl])[0] || {})[:name] + + assert_equal "San Jorge, Día de Aragón", (Holidays.on(Date.civil(2009, 4, 23), [:es_ar])[0] || {})[:name] + + assert_equal "Día de Castilla y León", (Holidays.on(Date.civil(2009, 4, 23), [:es_])[0] || {})[:name] + + assert_equal "Día de Valencia", (Holidays.on(Date.civil(2009, 10, 9), [:es_vc])[0] || {})[:name] + + assert_equal "Día de Valencia", (Holidays.on(Date.civil(2009, 10, 9), [:es_v])[0] || {})[:name] + + assert_equal "Día de Valencia", (Holidays.on(Date.civil(2009, 10, 9), [:es_])[0] || {})[:name] + + assert_equal "San Esteban", (Holidays.on(Date.civil(2009, 12, 26), [:es_ib])[0] || {})[:name] + + assert_equal "San Esteban", (Holidays.on(Date.civil(2009, 12, 26), [:es_ct])[0] || {})[:name] + + assert_equal "San Esteban", (Holidays.on(Date.civil(2009, 12, 26), [:es_])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2012, 1, 1), [:es])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2012, 1, 2), [:es], [:observed])[0] || {})[:name] + + assert_equal "Día de Andalucía", (Holidays.on(Date.civil(2009, 2, 28), [:es_an])[0] || {})[:name] + + assert_equal "Día de las Islas Baleares", (Holidays.on(Date.civil(2009, 3, 1), [:es_ib])[0] || {})[:name] + + assert_equal "Fiesta de la Comunidad", (Holidays.on(Date.civil(2006, 5, 2), [:es_m])[0] || {})[:name] + + assert_equal "Día de las Canarias", (Holidays.on(Date.civil(2006, 5, 30), [:es_cn])[0] || {})[:name] + + assert_equal "Día de la Región Castilla-La Mancha", (Holidays.on(Date.civil(2009, 5, 31), [:es_cm])[0] || {})[:name] + + assert_equal "Día de la Región de Murcia", (Holidays.on(Date.civil(2009, 6, 9), [:es_mu])[0] || {})[:name] + + assert_equal "Día de La Rioja", (Holidays.on(Date.civil(2009, 6, 9), [:es_lo])[0] || {})[:name] + + assert_equal "Santiago Apostol", (Holidays.on(Date.civil(2009, 7, 23), [:es_ga])[0] || {})[:name] + + assert_equal "Día de Ceuta", (Holidays.on(Date.civil(2009, 9, 2), [:es_ce])[0] || {})[:name] + + assert_equal "Día de Asturias", (Holidays.on(Date.civil(2009, 9, 8), [:es_o])[0] || {})[:name] + + assert_equal "Día de Extremadura", (Holidays.on(Date.civil(2009, 9, 8), [:es_ex])[0] || {})[:name] + + assert_equal "Fiesta Nacional de Cataluña", (Holidays.on(Date.civil(2009, 9, 11), [:es_ct])[0] || {})[:name] + + assert_equal "Lunes de Pascua Granada", (Holidays.on(Date.civil(2020, 6, 1), [:es_ct])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_europe.rb b/vendor/holidays/test/defs/test_defs_europe.rb new file mode 100644 index 00000000..50d4b922 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_europe.rb @@ -0,0 +1,1476 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/at.yaml, definitions/be_fr.yaml, definitions/be_nl.yaml, definitions/ch.yaml, definitions/cz.yaml, definitions/dk.yaml, definitions/de.yaml, definitions/el.yaml, definitions/es.yaml, definitions/fr.yaml, definitions/gb.yaml, definitions/hr.yaml, definitions/hu.yaml, definitions/ie.yaml, definitions/is.yaml, definitions/it.yaml, definitions/li.yaml, definitions/lt.yaml, definitions/lv.yaml, definitions/nl.yaml, definitions/no.yaml, definitions/pl.yaml, definitions/pt.yaml, definitions/ro.yaml, definitions/sk.yaml, definitions/si.yaml, definitions/bg.yaml, definitions/ua.yaml +class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_europe + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2009, 1, 1), [:at], [:informal])[0] || {})[:name] + + assert_equal "Ostermontag", (Holidays.on(Date.civil(2009, 4, 13), [:at])[0] || {})[:name] + + assert_equal "Christi Himmelfahrt", (Holidays.on(Date.civil(2009, 5, 21), [:at])[0] || {})[:name] + + assert_equal "Pfingstmontag", (Holidays.on(Date.civil(2009, 6, 1), [:at])[0] || {})[:name] + + assert_equal "Nationalfeiertag", (Holidays.on(Date.civil(2009, 10, 26), [:at], [:informal])[0] || {})[:name] + + assert_equal "Mariä Empfängnis", (Holidays.on(Date.civil(2009, 12, 8), [:at], [:informal])[0] || {})[:name] + + assert_equal "1. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 25), [:at], [:informal])[0] || {})[:name] + + assert_equal "2. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 26), [:at], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 5, 8), [:at])[0] || {})[:name] + + assert_equal "Fronleichnam", (Holidays.on(Date.civil(2017, 6, 15), [:at])[0] || {})[:name] + + assert_equal "Jour de l'an", (Holidays.on(Date.civil(2007, 1, 1), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Pâques", (Holidays.on(Date.civil(2007, 4, 8), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Lundi de Pâques", (Holidays.on(Date.civil(2007, 4, 9), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Fête du travail", (Holidays.on(Date.civil(2007, 5, 1), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Ascension", (Holidays.on(Date.civil(2007, 5, 17), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Pentecôte", (Holidays.on(Date.civil(2007, 5, 27), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Lundi de Pentecôte", (Holidays.on(Date.civil(2007, 5, 28), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Fête nationale", (Holidays.on(Date.civil(2007, 7, 21), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Assomption", (Holidays.on(Date.civil(2007, 8, 15), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Toussaint", (Holidays.on(Date.civil(2007, 11, 1), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Armistice 1918", (Holidays.on(Date.civil(2007, 11, 11), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Noël", (Holidays.on(Date.civil(2007, 12, 25), [:be_fr], [:informal])[0] || {})[:name] + + assert_equal "Pâques", (Holidays.on(Date.civil(2017, 4, 16), [:be_fr])[0] || {})[:name] + + assert_equal "Lundi de Pâques", (Holidays.on(Date.civil(2017, 4, 17), [:be_fr])[0] || {})[:name] + + assert_equal "Ascension", (Holidays.on(Date.civil(2017, 5, 25), [:be_fr])[0] || {})[:name] + + assert_equal "Pentecôte", (Holidays.on(Date.civil(2017, 6, 4), [:be_fr])[0] || {})[:name] + + assert_equal "Lundi de Pentecôte", (Holidays.on(Date.civil(2017, 6, 5), [:be_fr])[0] || {})[:name] + + assert_equal "Nieuwjaar", (Holidays.on(Date.civil(2007, 1, 1), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pasen", (Holidays.on(Date.civil(2007, 4, 8), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Paasmaandag", (Holidays.on(Date.civil(2007, 4, 9), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Feest van de Arbeid", (Holidays.on(Date.civil(2007, 5, 1), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "O.H. Hemelvaart", (Holidays.on(Date.civil(2007, 5, 17), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pinksteren", (Holidays.on(Date.civil(2007, 5, 27), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pinkstermaandag", (Holidays.on(Date.civil(2007, 5, 28), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Nationale Feestdag", (Holidays.on(Date.civil(2007, 7, 21), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "O.L.V. Hemelvaart", (Holidays.on(Date.civil(2007, 8, 15), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Allerheiligen", (Holidays.on(Date.civil(2007, 11, 1), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Wapenstilstand 1918", (Holidays.on(Date.civil(2007, 11, 11), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Kerstmis", (Holidays.on(Date.civil(2007, 12, 25), [:be_nl], [:informal])[0] || {})[:name] + + assert_equal "Pasen", (Holidays.on(Date.civil(2017, 4, 16), [:be_nl])[0] || {})[:name] + + assert_equal "Paasmaandag", (Holidays.on(Date.civil(2017, 4, 17), [:be_nl])[0] || {})[:name] + + assert_equal "O.H. Hemelvaart", (Holidays.on(Date.civil(2017, 5, 25), [:be_nl])[0] || {})[:name] + + assert_equal "Pinksteren", (Holidays.on(Date.civil(2017, 6, 4), [:be_nl])[0] || {})[:name] + + assert_equal "Pinkstermaandag", (Holidays.on(Date.civil(2017, 6, 5), [:be_nl])[0] || {})[:name] + + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2018, 1, 1), [:ch])[0] || {})[:name] + + assert_equal "Bundesfeiertag", (Holidays.on(Date.civil(2012, 8, 1), [:ch])[0] || {})[:name] + + assert_equal "Weihnachten", (Holidays.on(Date.civil(2012, 12, 25), [:ch])[0] || {})[:name] + + assert_equal "Auffahrt", (Holidays.on(Date.civil(2012, 5, 17), [:ch])[0] || {})[:name] + + assert_equal "Bundesfeiertag", (Holidays.on(Date.civil(2012, 8, 1), [:ch_zh])[0] || {})[:name] + + assert_equal "Weihnachten", (Holidays.on(Date.civil(2012, 12, 25), [:ch_zh])[0] || {})[:name] + + assert_equal "Auffahrt", (Holidays.on(Date.civil(2012, 5, 17), [:ch_zh])[0] || {})[:name] + + assert_equal "Tag der Arbeit", (Holidays.on(Date.civil(2012, 5, 1), [:ch_zh])[0] || {})[:name] + + assert_equal "Stefanstag", (Holidays.on(Date.civil(2012, 12, 26), [:ch_zh])[0] || {})[:name] + + assert_equal "Lundi du Jeûne fédéral", (Holidays.on(Date.civil(2012, 9, 17), [:ch_vd])[0] || {})[:name] + + assert_equal "Lundi du Jeûne fédéral", (Holidays.on(Date.civil(2013, 9, 16), [:ch_vd])[0] || {})[:name] + + assert_equal "Lundi du Jeûne fédéral", (Holidays.on(Date.civil(2014, 9, 22), [:ch_vd])[0] || {})[:name] + + assert_equal "Jeûne genevois", (Holidays.on(Date.civil(2012, 9, 6), [:ch_ge])[0] || {})[:name] + + assert_equal "Jeûne genevois", (Holidays.on(Date.civil(2013, 9, 5), [:ch_ge])[0] || {})[:name] + + assert_equal "Jeûne genevois", (Holidays.on(Date.civil(2014, 9, 11), [:ch_ge])[0] || {})[:name] + + assert_equal "Näfelser Fahrt", (Holidays.on(Date.civil(2012, 4, 12), [:ch_gl])[0] || {})[:name] + + assert_equal "Näfelser Fahrt", (Holidays.on(Date.civil(2013, 4, 4), [:ch_gl])[0] || {})[:name] + + assert_equal "Näfelser Fahrt", (Holidays.on(Date.civil(2014, 4, 3), [:ch_gl])[0] || {})[:name] + + assert_equal "Zibelemärit", (Holidays.on(Date.civil(2014, 11, 24), [:ch_be])[0] || {})[:name] + + assert_equal "Zibelemärit", (Holidays.on(Date.civil(2020, 11, 23), [:ch_be])[0] || {})[:name] + + assert_equal "Den obnovy samostatného českého státu", (Holidays.on(Date.civil(2010, 1, 1), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Velký pátek", (Holidays.on(Date.civil(2016, 3, 25), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Velikonoční pondělí", (Holidays.on(Date.civil(2010, 4, 5), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Svátek práce", (Holidays.on(Date.civil(2010, 5, 1), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den vítězství", (Holidays.on(Date.civil(2010, 5, 8), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den slovanských věrozvěstů Cyrila a Metoděje", (Holidays.on(Date.civil(2010, 7, 5), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den upálení mistra Jana Husa", (Holidays.on(Date.civil(2010, 7, 6), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den české státnosti", (Holidays.on(Date.civil(2010, 9, 28), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den vzniku samostatného československého státu", (Holidays.on(Date.civil(2010, 10, 28), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Den boje za svobodu a demokracii", (Holidays.on(Date.civil(2010, 11, 17), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Štědrý den", (Holidays.on(Date.civil(2010, 12, 24), [:cz], [:informal])[0] || {})[:name] + + assert_equal "1. svátek vánoční", (Holidays.on(Date.civil(2010, 12, 25), [:cz], [:informal])[0] || {})[:name] + + assert_equal "2. svátek vánoční", (Holidays.on(Date.civil(2010, 12, 26), [:cz], [:informal])[0] || {})[:name] + + assert_equal "Nytårsdag", (Holidays.on(Date.civil(2007, 1, 1), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Fastelavn", (Holidays.on(Date.civil(2007, 2, 18), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. påskedag", (Holidays.on(Date.civil(2007, 4, 9), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Dronningens fødselsdag", (Holidays.on(Date.civil(2007, 4, 16), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Skærtorsdag", (Holidays.on(Date.civil(2007, 4, 5), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Langfredag", (Holidays.on(Date.civil(2007, 4, 6), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Påskedag", (Holidays.on(Date.civil(2007, 4, 8), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Arbejdernes kampdag", (Holidays.on(Date.civil(2007, 5, 1), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Store Bededag", (Holidays.on(Date.civil(2007, 5, 4), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Kristi Himmelfartsdag", (Holidays.on(Date.civil(2007, 5, 17), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Pinsedag", (Holidays.on(Date.civil(2007, 5, 27), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. Pinsedag", (Holidays.on(Date.civil(2007, 5, 28), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Grundlovsdag", (Holidays.on(Date.civil(2007, 6, 5), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Juleaftensdag", (Holidays.on(Date.civil(2007, 12, 24), [:dk], [:informal])[0] || {})[:name] + + assert_equal "1. juledag", (Holidays.on(Date.civil(2007, 12, 25), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. juledag", (Holidays.on(Date.civil(2007, 12, 26), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2009, 1, 1), [:de], [:informal])[0] || {})[:name] + + assert_equal "Karfreitag", (Holidays.on(Date.civil(2009, 4, 10), [:de], [:informal])[0] || {})[:name] + + assert_equal "Ostersonntag", (Holidays.on(Date.civil(2009, 4, 12), [:de], [:informal])[0] || {})[:name] + + assert_equal "Ostermontag", (Holidays.on(Date.civil(2009, 4, 13), [:de], [:informal])[0] || {})[:name] + + assert_equal "Tag der Arbeit", (Holidays.on(Date.civil(2009, 5, 1), [:de], [:informal])[0] || {})[:name] + + assert_equal "Christi Himmelfahrt", (Holidays.on(Date.civil(2009, 5, 21), [:de], [:informal])[0] || {})[:name] + + assert_equal "Pfingstsonntag", (Holidays.on(Date.civil(2009, 5, 31), [:de], [:informal])[0] || {})[:name] + + assert_equal "Pfingstmontag", (Holidays.on(Date.civil(2009, 6, 1), [:de], [:informal])[0] || {})[:name] + + assert_equal "Tag der Deutschen Einheit", (Holidays.on(Date.civil(2009, 10, 3), [:de], [:informal])[0] || {})[:name] + + assert_equal "Heilig Abend", (Holidays.on(Date.civil(2009, 12, 24), [:de], [:informal])[0] || {})[:name] + + assert_equal "1. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 25), [:de], [:informal])[0] || {})[:name] + + assert_equal "2. Weihnachtstag", (Holidays.on(Date.civil(2009, 12, 26), [:de], [:informal])[0] || {})[:name] + + assert_equal "Silvester", (Holidays.on(Date.civil(2009, 12, 31), [:de], [:informal])[0] || {})[:name] + + assert_equal "Heilige Drei Könige", (Holidays.on(Date.civil(2009, 1, 6), [:de_bw, :de_by, :de_st, :de_])[0] || {})[:name] + + assert_equal "Fronleichnam", (Holidays.on(Date.civil(2009, 6, 11), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn_sorbian, :de_th_cath])[0] || {})[:name] + + assert_equal "Mariä Himmelfahrt", (Holidays.on(Date.civil(2009, 8, 15), [:de_by, :de_sl, :de_])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2009, 10, 31), [:de_bb, :de_mv, :de_sn, :de_st, :de_th, :de_])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2009, 10, 31), [:de_bw], [:informal])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2017, 10, 31), [:de])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 10, 31), [:de])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 10, 31), [:de])[0] || {})[:name] + + assert_equal "Reformationstag", (Holidays.on(Date.civil(2018, 10, 31), [:de_bb, :de_hb, :de_hh, :de_mv, :de_ni, :de_sh, :de_sn, :de_st, :de_th])[0] || {})[:name] + + assert_equal "Allerheiligen", (Holidays.on(Date.civil(2009, 11, 1), [:de_bw, :de_by, :de_nw, :de_rp, :de_sl, :de_])[0] || {})[:name] + + assert_equal "Friedensfest", (Holidays.on(Date.civil(2015, 8, 8), [:de_by_augsburg])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 8, 8), [:de, :de_bw, :de_by, :de_bb, :de_he, :de_mv, :de_nw, :de_rp, :de_sl, :de_sn, :de_st, :de_th])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 5, 8), [:de])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 8, 8), [:de])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2004, 11, 17), [:de_sn])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2005, 11, 16), [:de_sn])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2006, 11, 22), [:de_sn])[0] || {})[:name] + + assert_equal "Buß- und Bettag", (Holidays.on(Date.civil(2009, 11, 18), [:de_sn])[0] || {})[:name] + + assert_equal "Weiberfastnacht", (Holidays.on(Date.civil(2016, 2, 4), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn], [:informal])[0] || {})[:name] + + assert_equal "Rosenmontag", (Holidays.on(Date.civil(2016, 2, 8), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn], [:informal])[0] || {})[:name] + + assert_equal "Aschermittwoch", (Holidays.on(Date.civil(2016, 2, 10), [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 3, 8), [:de_be])[0] || {})[:name] + + assert_equal "Internationaler Frauentag", (Holidays.on(Date.civil(2019, 3, 8), [:de_be])[0] || {})[:name] + + assert_equal "Tag der Befreiung", (Holidays.on(Date.civil(2020, 5, 8), [:de_be])[0] || {})[:name] + + assert_equal "Πρωτοχρονιά", (Holidays.on(Date.civil(2011, 1, 1), [:el], [:informal])[0] || {})[:name] + + assert_equal "Θεοφάνεια", (Holidays.on(Date.civil(2011, 1, 6), [:el], [:informal])[0] || {})[:name] + + assert_equal "Μεγάλη Παρασκευή", (Holidays.on(Date.civil(2011, 4, 22), [:el], [:informal])[0] || {})[:name] + + assert_equal "Μεγάλο Σάββατο", (Holidays.on(Date.civil(1970, 4, 25), [:el], [:informal])[0] || {})[:name] + + assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(1985, 4, 14), [:el], [:informal])[0] || {})[:name] + + assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(2011, 4, 24), [:el], [:informal])[0] || {})[:name] + + assert_equal "Κυριακή του Πάσχα", (Holidays.on(Date.civil(2027, 5, 2), [:el], [:informal])[0] || {})[:name] + + assert_equal "Δευτέρα του Πάσχα", (Holidays.on(Date.civil(2046, 4, 30), [:el], [:informal])[0] || {})[:name] + + assert_equal "Πρωτομαγιά", (Holidays.on(Date.civil(2011, 5, 1), [:el], [:informal])[0] || {})[:name] + + assert_equal "Αγίου Πνεύματος", (Holidays.on(Date.civil(2011, 6, 13), [:el], [:informal])[0] || {})[:name] + + assert_equal "Αγίου Πνεύματος", (Holidays.on(Date.civil(2012, 6, 4), [:el], [:informal])[0] || {})[:name] + + assert_equal "Καθαρά Δευτέρα", (Holidays.on(Date.civil(2011, 3, 7), [:el], [:informal])[0] || {})[:name] + + assert_equal "Καθαρά Δευτέρα", (Holidays.on(Date.civil(2012, 2, 27), [:el], [:informal])[0] || {})[:name] + + assert_equal "Χριστούγεννα", (Holidays.on(Date.civil(2011, 12, 25), [:el], [:informal])[0] || {})[:name] + + assert_equal "Δεύτερη ημέρα των Χριστουγέννων", (Holidays.on(Date.civil(2011, 12, 26), [:el], [:informal])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2009, 1, 1), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día de Reyes", (Holidays.on(Date.civil(2009, 1, 6), [:es], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2009, 4, 10), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2009, 5, 1), [:es], [:informal])[0] || {})[:name] + + assert_equal "Asunción", (Holidays.on(Date.civil(2009, 8, 15), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día de la Hispanidad", (Holidays.on(Date.civil(2009, 10, 12), [:es], [:informal])[0] || {})[:name] + + assert_equal "Todos los Santos", (Holidays.on(Date.civil(2009, 11, 1), [:es], [:informal])[0] || {})[:name] + + assert_equal "Día de la Constitución", (Holidays.on(Date.civil(2009, 12, 6), [:es], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción", (Holidays.on(Date.civil(2009, 12, 8), [:es], [:informal])[0] || {})[:name] + + assert_equal "Navidad del Señor", (Holidays.on(Date.civil(2009, 12, 25), [:es], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_pv], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_na], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_an], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ib], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_cm], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_mu], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_m], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ar], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_cl], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_cn], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_lo], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ga], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ce], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_o], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_ex], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_], [:informal])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_pv])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_ct])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_na])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_v])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_vc])[0] || {})[:name] + + assert_equal "Lunes de Pascua", (Holidays.on(Date.civil(2009, 4, 13), [:es_])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2009, 4, 9), [:es_an])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_v])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_vc])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_cm])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_mu])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_m])[0] || {})[:name] + + assert_equal "San José", (Holidays.on(Date.civil(2009, 3, 19), [:es_])[0] || {})[:name] + + assert_equal "Día de Castilla y León", (Holidays.on(Date.civil(2009, 4, 23), [:es_cl])[0] || {})[:name] + + assert_equal "San Jorge, Día de Aragón", (Holidays.on(Date.civil(2009, 4, 23), [:es_ar])[0] || {})[:name] + + assert_equal "Día de Castilla y León", (Holidays.on(Date.civil(2009, 4, 23), [:es_])[0] || {})[:name] + + assert_equal "Día de Valencia", (Holidays.on(Date.civil(2009, 10, 9), [:es_vc])[0] || {})[:name] + + assert_equal "Día de Valencia", (Holidays.on(Date.civil(2009, 10, 9), [:es_v])[0] || {})[:name] + + assert_equal "Día de Valencia", (Holidays.on(Date.civil(2009, 10, 9), [:es_])[0] || {})[:name] + + assert_equal "San Esteban", (Holidays.on(Date.civil(2009, 12, 26), [:es_ib])[0] || {})[:name] + + assert_equal "San Esteban", (Holidays.on(Date.civil(2009, 12, 26), [:es_ct])[0] || {})[:name] + + assert_equal "San Esteban", (Holidays.on(Date.civil(2009, 12, 26), [:es_])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2012, 1, 1), [:es])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2012, 1, 2), [:es], [:observed])[0] || {})[:name] + + assert_equal "Día de Andalucía", (Holidays.on(Date.civil(2009, 2, 28), [:es_an])[0] || {})[:name] + + assert_equal "Día de las Islas Baleares", (Holidays.on(Date.civil(2009, 3, 1), [:es_ib])[0] || {})[:name] + + assert_equal "Fiesta de la Comunidad", (Holidays.on(Date.civil(2006, 5, 2), [:es_m])[0] || {})[:name] + + assert_equal "Día de las Canarias", (Holidays.on(Date.civil(2006, 5, 30), [:es_cn])[0] || {})[:name] + + assert_equal "Día de la Región Castilla-La Mancha", (Holidays.on(Date.civil(2009, 5, 31), [:es_cm])[0] || {})[:name] + + assert_equal "Día de la Región de Murcia", (Holidays.on(Date.civil(2009, 6, 9), [:es_mu])[0] || {})[:name] + + assert_equal "Día de La Rioja", (Holidays.on(Date.civil(2009, 6, 9), [:es_lo])[0] || {})[:name] + + assert_equal "Santiago Apostol", (Holidays.on(Date.civil(2009, 7, 23), [:es_ga])[0] || {})[:name] + + assert_equal "Día de Ceuta", (Holidays.on(Date.civil(2009, 9, 2), [:es_ce])[0] || {})[:name] + + assert_equal "Día de Asturias", (Holidays.on(Date.civil(2009, 9, 8), [:es_o])[0] || {})[:name] + + assert_equal "Día de Extremadura", (Holidays.on(Date.civil(2009, 9, 8), [:es_ex])[0] || {})[:name] + + assert_equal "Fiesta Nacional de Cataluña", (Holidays.on(Date.civil(2009, 9, 11), [:es_ct])[0] || {})[:name] + + assert_equal "Lunes de Pascua Granada", (Holidays.on(Date.civil(2020, 6, 1), [:es_ct])[0] || {})[:name] + + assert_equal "Jour de l'an", (Holidays.on(Date.civil(2007, 1, 1), [:fr])[0] || {})[:name] + + assert_equal "Lundi de Pâques", (Holidays.on(Date.civil(2007, 4, 9), [:fr])[0] || {})[:name] + + assert_equal "Fête du travail", (Holidays.on(Date.civil(2007, 5, 1), [:fr])[0] || {})[:name] + + assert_equal "Victoire 1945", (Holidays.on(Date.civil(2007, 5, 8), [:fr])[0] || {})[:name] + + assert_equal "Ascension", (Holidays.on(Date.civil(2007, 5, 17), [:fr])[0] || {})[:name] + + assert_equal "Lundi de Pentecôte", (Holidays.on(Date.civil(2007, 5, 28), [:fr])[0] || {})[:name] + + assert_equal "Fête nationale", (Holidays.on(Date.civil(2007, 7, 14), [:fr])[0] || {})[:name] + + assert_equal "Assomption", (Holidays.on(Date.civil(2007, 8, 15), [:fr])[0] || {})[:name] + + assert_equal "Toussaint", (Holidays.on(Date.civil(2007, 11, 1), [:fr])[0] || {})[:name] + + assert_equal "Armistice 1918", (Holidays.on(Date.civil(2007, 11, 11), [:fr])[0] || {})[:name] + + assert_equal "Noël", (Holidays.on(Date.civil(2007, 12, 25), [:fr])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2007, 4, 8), [:fr])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2007, 5, 27), [:fr])[0] || {})[:name] + + assert_equal "Pâques", (Holidays.on(Date.civil(2007, 4, 8), [:fr], [:informal])[0] || {})[:name] + + assert_equal "Pentecôte", (Holidays.on(Date.civil(2007, 5, 27), [:fr], [:informal])[0] || {})[:name] + + assert_equal "Saint-Étienne", (Holidays.on(Date.civil(2017, 12, 26), [:fr_a, :fr_m], [:informal])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2008, 3, 21), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2008, 3, 23), [:gb], [:informal])[0] || {})[:name] + + assert_equal "May Day", (Holidays.on(Date.civil(2008, 5, 5), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 5, 26), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Guy Fawkes Day", (Holidays.on(Date.civil(2008, 11, 5), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2008, 12, 26), [:gb], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2008, 3, 17), [:gb_nir], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2018, 3, 17), [:gb_nir], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2018, 3, 19), [:gb_nir], [:observed, :informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2019, 3, 17), [:gb_nir], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2019, 3, 18), [:gb_nir], [:observed, :informal])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2020, 7, 12), [:gb_nir])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 7, 12), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2020, 7, 13), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2008, 7, 12), [:gb_nir])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2008, 7, 14), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2021, 7, 12), [:gb_nir])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2021, 7, 12), [:gb_nir], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 7, 13), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2006, 11, 30), [:gb_sct], [:informal])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2006, 11, 30), [:gb_sct], [:informal, :observed])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2002, 12, 2), [:gb_sct], [:informal, :observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2004, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2005, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2006, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2007, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2007, 11, 30), [:gb_sct], [:informal])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2007, 11, 30), [:gb_sct], [:informal, :observed])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2016, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2019, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2019, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2019, 12, 2), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2009, 12, 25), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 27), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2008, 12, 26), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2009, 12, 28), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2010, 12, 28), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2011, 12, 27), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2010, 1, 1), [:gb], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2011, 1, 3), [:gb], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:gb], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2010, 1, 4), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2011, 1, 4), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2012, 1, 3), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2013, 1, 2), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2014, 1, 2), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_wls])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_wls])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_eng])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_eng])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_nir])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_nir])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_eaw])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_eaw])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_])[0] || {})[:name] + + assert_equal "Liberation Day", (Holidays.on(Date.civil(2018, 5, 9), [:je])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2018, 4, 2), [:je])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2018, 8, 27), [:je])[0] || {})[:name] + + assert_equal "Nova godina", (Holidays.on(Date.civil(2012, 1, 1), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Bogojavljenje ili Sveta tri kralja", (Holidays.on(Date.civil(2012, 1, 6), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Praznik rada", (Holidays.on(Date.civil(2012, 5, 1), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan antifašističke borbe", (Holidays.on(Date.civil(2012, 6, 22), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan državnosti", (Holidays.on(Date.civil(2020, 5, 30), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja", (Holidays.on(Date.civil(2012, 8, 5), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Velika Gospa", (Holidays.on(Date.civil(2012, 8, 15), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje", (Holidays.on(Date.civil(2020, 11, 18), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Svi sveti", (Holidays.on(Date.civil(2012, 11, 1), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Božić", (Holidays.on(Date.civil(2012, 12, 25), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Sveti Stjepan", (Holidays.on(Date.civil(2012, 12, 26), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2008, 5, 22), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2009, 6, 11), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2010, 6, 3), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2012, 6, 7), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2013, 5, 30), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2014, 6, 19), [:hr])[0] || {})[:name] + + assert_equal "Újév", (Holidays.on(Date.civil(2012, 1, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Újév", (Holidays.on(Date.civil(2011, 1, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "1848/49-es forradalom és szabadságharc ünnepe", (Holidays.on(Date.civil(2012, 3, 15), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2011, 4, 25), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2012, 4, 9), [:hu], [:informal])[0] || {})[:name] + + assert_equal "A munka ünnepe", (Holidays.on(Date.civil(2012, 5, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2011, 6, 13), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2012, 5, 28), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Az államalapítás ünnepe", (Holidays.on(Date.civil(2012, 8, 20), [:hu], [:informal])[0] || {})[:name] + + assert_equal "1956-os forradalom és szabadságharc ünnepe", (Holidays.on(Date.civil(2012, 10, 23), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Mindenszentek", (Holidays.on(Date.civil(2012, 11, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Karácsony", (Holidays.on(Date.civil(2012, 12, 25), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Karácsony", (Holidays.on(Date.civil(2012, 12, 26), [:hu], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2012, 3, 14), [:hu])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2016, 3, 28), [:hu])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 3, 25), [:hu])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2017, 4, 17), [:hu])[0] || {})[:name] + + assert_equal "Nagypéntek", (Holidays.on(Date.civil(2017, 4, 14), [:hu])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:ie])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2008, 3, 17), [:ie])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:ie])[0] || {})[:name] + + assert_equal "May Day", (Holidays.on(Date.civil(2008, 5, 5), [:ie])[0] || {})[:name] + + assert_equal "June Bank Holiday", (Holidays.on(Date.civil(2008, 6, 2), [:ie])[0] || {})[:name] + + assert_equal "August Bank Holiday", (Holidays.on(Date.civil(2008, 8, 4), [:ie])[0] || {})[:name] + + assert_equal "October Bank Holiday", (Holidays.on(Date.civil(2008, 10, 27), [:ie])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:ie])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2008, 12, 26), [:ie])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2012, 3, 19), [:ie], [:observed])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2012, 4, 9), [:ie], [:observed])[0] || {})[:name] + + assert_equal "May Day", (Holidays.on(Date.civil(2012, 5, 7), [:ie], [:observed])[0] || {})[:name] + + assert_equal "June Bank Holiday", (Holidays.on(Date.civil(2012, 6, 4), [:ie], [:observed])[0] || {})[:name] + + assert_equal "August Bank Holiday", (Holidays.on(Date.civil(2012, 8, 6), [:ie], [:observed])[0] || {})[:name] + + assert_equal "October Bank Holiday", (Holidays.on(Date.civil(2012, 10, 29), [:ie], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2011, 12, 26), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2011, 12, 27), [:ie], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2012, 12, 25), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2012, 12, 26), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2015, 12, 28), [:ie], [:observed])[0] || {})[:name] + + assert_equal "Nýársdagur", (Holidays.on(Date.civil(2007, 1, 1), [:is], [:informal])[0] || {})[:name] + + assert_equal "Þrettándinn", (Holidays.on(Date.civil(2007, 1, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Bóndadagur", (Holidays.on(Date.civil(2007, 1, 19), [:is], [:informal])[0] || {})[:name] + + assert_equal "Konudagur", (Holidays.on(Date.civil(2007, 2, 18), [:is], [:informal])[0] || {})[:name] + + assert_equal "Skírdagur", (Holidays.on(Date.civil(2007, 4, 5), [:is], [:informal])[0] || {})[:name] + + assert_equal "Föstudaginn langi", (Holidays.on(Date.civil(2007, 4, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Páskadagur", (Holidays.on(Date.civil(2007, 4, 8), [:is], [:informal])[0] || {})[:name] + + assert_equal "Annar í páskum", (Holidays.on(Date.civil(2007, 4, 9), [:is], [:informal])[0] || {})[:name] + + assert_equal "Sumardagurinn fyrsti", (Holidays.on(Date.civil(2007, 4, 19), [:is], [:informal])[0] || {})[:name] + + assert_equal "Verkalýðsdagurinn", (Holidays.on(Date.civil(2007, 5, 1), [:is], [:informal])[0] || {})[:name] + + assert_equal "Uppstigningardagur", (Holidays.on(Date.civil(2007, 5, 17), [:is], [:informal])[0] || {})[:name] + + assert_equal "Hvítasunnudagur", (Holidays.on(Date.civil(2007, 5, 27), [:is], [:informal])[0] || {})[:name] + + assert_equal "Annar í hvítasunnu", (Holidays.on(Date.civil(2007, 5, 28), [:is], [:informal])[0] || {})[:name] + + assert_equal "Sjómannadagurinn", (Holidays.on(Date.civil(2007, 6, 3), [:is], [:informal])[0] || {})[:name] + + assert_equal "Lýðveldisdagurinn", (Holidays.on(Date.civil(2007, 6, 17), [:is], [:informal])[0] || {})[:name] + + assert_equal "Frídagur verslunarmanna", (Holidays.on(Date.civil(2007, 8, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 24), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 25), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 26), [:is], [:informal])[0] || {})[:name] + + assert_equal "Gamlárskvöld", (Holidays.on(Date.civil(2007, 12, 31), [:is], [:informal])[0] || {})[:name] + + assert_equal "Capodanno", (Holidays.on(Date.civil(2007, 1, 1), [:it], [:informal])[0] || {})[:name] + + assert_equal "Epifania", (Holidays.on(Date.civil(2007, 1, 6), [:it], [:informal])[0] || {})[:name] + + assert_equal "Pasqua", (Holidays.on(Date.civil(2007, 4, 8), [:it], [:informal])[0] || {})[:name] + + assert_equal "Lunedì dell'Angelo", (Holidays.on(Date.civil(2007, 4, 9), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa della Liberazione", (Holidays.on(Date.civil(2007, 4, 25), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Liberale", (Holidays.on(Date.civil(2019, 4, 27), [:it_tv], [:informal])[0] || {})[:name] + + assert_equal "Festa dei Lavoratori", (Holidays.on(Date.civil(2007, 5, 1), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Zeno", (Holidays.on(Date.civil(2019, 5, 21), [:it_vr], [:informal])[0] || {})[:name] + + assert_equal "Festa della Repubblica", (Holidays.on(Date.civil(2007, 6, 2), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di Sant'Antonio di Padova", (Holidays.on(Date.civil(2019, 6, 13), [:it_pd], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Giovanni Battista", (Holidays.on(Date.civil(2019, 6, 24), [:it_fi, :it_ge, :it_to], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 6, 24), [:it])[0] || {})[:name] + + assert_equal "Festa di San Pietro e Paolo", (Holidays.on(Date.civil(2019, 6, 29), [:it_rm], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 6, 29), [:it])[0] || {})[:name] + + assert_equal "Assunzione", (Holidays.on(Date.civil(2007, 8, 15), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa della Madonna di Monte Berico", (Holidays.on(Date.civil(2019, 9, 8), [:it_vi], [:informal])[0] || {})[:name] + + assert_equal "Ognissanti", (Holidays.on(Date.civil(2007, 11, 1), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Martino", (Holidays.on(Date.civil(2019, 11, 11), [:it_bl], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Bellino", (Holidays.on(Date.civil(2019, 11, 26), [:it_ro], [:informal])[0] || {})[:name] + + assert_equal "Immacolata Concezione", (Holidays.on(Date.civil(2007, 12, 8), [:it], [:informal])[0] || {})[:name] + + assert_equal "Natale", (Holidays.on(Date.civil(2007, 12, 25), [:it], [:informal])[0] || {})[:name] + + assert_equal "Santo Stefano", (Holidays.on(Date.civil(2007, 12, 26), [:it], [:informal])[0] || {})[:name] + + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2009, 1, 1), [:li], [:informal])[0] || {})[:name] + + assert_equal "Fasnachtsdienstag", (Holidays.on(Date.civil(2011, 3, 8), [:li], [:informal])[0] || {})[:name] + + assert_equal "Karfreitag", (Holidays.on(Date.civil(2009, 4, 10), [:li], [:informal])[0] || {})[:name] + + assert_equal "Ostern", (Holidays.on(Date.civil(2009, 4, 12), [:li], [:informal])[0] || {})[:name] + + assert_equal "Ostermontag", (Holidays.on(Date.civil(2009, 4, 13), [:li], [:informal])[0] || {})[:name] + + assert_equal "Auffahrt", (Holidays.on(Date.civil(2009, 5, 21), [:li], [:informal])[0] || {})[:name] + + assert_equal "Pfingstmontag", (Holidays.on(Date.civil(2009, 6, 1), [:li], [:informal])[0] || {})[:name] + + assert_equal "Weihnachten", (Holidays.on(Date.civil(2009, 12, 25), [:li], [:informal])[0] || {})[:name] + + assert_equal "Stefanstag", (Holidays.on(Date.civil(2009, 12, 26), [:li], [:informal])[0] || {})[:name] + + assert_equal "Fronleichnam", (Holidays.on(Date.civil(2009, 6, 11), [:li])[0] || {})[:name] + + assert_equal "Staatsfeiertag", (Holidays.on(Date.civil(2009, 8, 15), [:li])[0] || {})[:name] + + assert_equal "Allerheiligen", (Holidays.on(Date.civil(2009, 11, 1), [:li])[0] || {})[:name] + + assert_equal "Naujieji metai", (Holidays.on(Date.civil(2008, 1, 1), [:lt])[0] || {})[:name] + + assert_equal "Valstybės atkūrimo diena", (Holidays.on(Date.civil(2008, 2, 16), [:lt])[0] || {})[:name] + + assert_equal "Nepriklausomybės atkūrimo diena", (Holidays.on(Date.civil(2008, 3, 11), [:lt])[0] || {})[:name] + + assert_equal "Šv. Velykos", (Holidays.on(Date.civil(2008, 3, 23), [:lt])[0] || {})[:name] + + assert_equal "Antroji Velykų diena", (Holidays.on(Date.civil(2008, 3, 24), [:lt])[0] || {})[:name] + + assert_equal "Darbininkų diena", (Holidays.on(Date.civil(2008, 5, 1), [:lt])[0] || {})[:name] + + assert_equal "Joninės", (Holidays.on(Date.civil(2008, 6, 24), [:lt])[0] || {})[:name] + + assert_equal "Valstybės diena", (Holidays.on(Date.civil(2008, 7, 6), [:lt])[0] || {})[:name] + + assert_equal "Žolinė", (Holidays.on(Date.civil(2008, 8, 15), [:lt])[0] || {})[:name] + + assert_equal "Visų šventųjų diena", (Holidays.on(Date.civil(2008, 11, 1), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kūčios", (Holidays.on(Date.civil(2008, 12, 24), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kalėdos", (Holidays.on(Date.civil(2008, 12, 25), [:lt])[0] || {})[:name] + + assert_equal "Antroji Kalėdų diena", (Holidays.on(Date.civil(2008, 12, 26), [:lt])[0] || {})[:name] + + assert_equal "Naujieji metai", (Holidays.on(Date.civil(2012, 1, 1), [:lt])[0] || {})[:name] + + assert_equal "Valstybės atkūrimo diena", (Holidays.on(Date.civil(2012, 2, 16), [:lt])[0] || {})[:name] + + assert_equal "Nepriklausomybės atkūrimo diena", (Holidays.on(Date.civil(2012, 3, 11), [:lt])[0] || {})[:name] + + assert_equal "Šv. Velykos", (Holidays.on(Date.civil(2012, 4, 8), [:lt])[0] || {})[:name] + + assert_equal "Antroji Velykų diena", (Holidays.on(Date.civil(2012, 4, 9), [:lt])[0] || {})[:name] + + assert_equal "Darbininkų diena", (Holidays.on(Date.civil(2012, 5, 1), [:lt])[0] || {})[:name] + + assert_equal "Joninės", (Holidays.on(Date.civil(2012, 6, 24), [:lt])[0] || {})[:name] + + assert_equal "Valstybės diena", (Holidays.on(Date.civil(2012, 7, 6), [:lt])[0] || {})[:name] + + assert_equal "Žolinė", (Holidays.on(Date.civil(2012, 8, 15), [:lt])[0] || {})[:name] + + assert_equal "Visų šventųjų diena", (Holidays.on(Date.civil(2012, 11, 1), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kūčios", (Holidays.on(Date.civil(2012, 12, 24), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kalėdos", (Holidays.on(Date.civil(2012, 12, 25), [:lt])[0] || {})[:name] + + assert_equal "Antroji Kalėdų diena", (Holidays.on(Date.civil(2012, 12, 26), [:lt])[0] || {})[:name] + + assert_equal "Jaungada diena", (Holidays.on(Date.civil(2018, 1, 1), [:lv])[0] || {})[:name] +assert_equal "Jaungada diena", (Holidays.on(Date.civil(2019, 1, 1), [:lv])[0] || {})[:name] +assert_equal "Jaungada diena", (Holidays.on(Date.civil(2029, 1, 1), [:lv])[0] || {})[:name] + + assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2018, 3, 30), [:lv])[0] || {})[:name] +assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2019, 4, 19), [:lv])[0] || {})[:name] +assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2039, 4, 8), [:lv])[0] || {})[:name] + + assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2018, 4, 1), [:lv])[0] || {})[:name] +assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2019, 4, 21), [:lv])[0] || {})[:name] +assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2039, 4, 10), [:lv])[0] || {})[:name] + + assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2018, 4, 2), [:lv])[0] || {})[:name] +assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2019, 4, 22), [:lv])[0] || {})[:name] +assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2039, 4, 11), [:lv])[0] || {})[:name] + + assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2018, 5, 1), [:lv])[0] || {})[:name] +assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2019, 5, 1), [:lv])[0] || {})[:name] +assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2029, 5, 1), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2018, 5, 4), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 4), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 6), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Mātes diena", (Holidays.on(Date.civil(2019, 5, 12), [:lv])[0] || {})[:name] +assert_equal "Mātes diena", (Holidays.on(Date.civil(2020, 5, 10), [:lv])[0] || {})[:name] +assert_equal "Mātes diena", (Holidays.on(Date.civil(2029, 5, 13), [:lv])[0] || {})[:name] + + assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2019, 6, 9), [:lv])[0] || {})[:name] +assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2020, 5, 31), [:lv])[0] || {})[:name] +assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2029, 5, 20), [:lv])[0] || {})[:name] + + assert_equal "Līgo diena", (Holidays.on(Date.civil(2019, 6, 23), [:lv])[0] || {})[:name] +assert_equal "Līgo diena", (Holidays.on(Date.civil(2020, 6, 23), [:lv])[0] || {})[:name] +assert_equal "Līgo diena", (Holidays.on(Date.civil(2029, 6, 23), [:lv])[0] || {})[:name] + + assert_equal "Jāņu diena", (Holidays.on(Date.civil(2019, 6, 24), [:lv])[0] || {})[:name] +assert_equal "Jāņu diena", (Holidays.on(Date.civil(2020, 6, 24), [:lv])[0] || {})[:name] +assert_equal "Jāņu diena", (Holidays.on(Date.civil(2029, 6, 24), [:lv])[0] || {})[:name] + + assert_equal "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", (Holidays.on(Date.civil(2018, 7, 8), [:lv])[0] || {})[:name] + + assert_equal "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", (Holidays.on(Date.civil(2018, 7, 9), [:lv], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 7, 8), [:lv])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 7, 9), [:lv])[0] || {})[:name] + + assert_equal "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena", (Holidays.on(Date.civil(2018, 9, 24), [:lv])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 9, 24), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2019, 11, 18), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 18), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 19), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2019, 12, 24), [:lv])[0] || {})[:name] +assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2020, 12, 24), [:lv])[0] || {})[:name] +assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2029, 12, 24), [:lv])[0] || {})[:name] + + assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 25), [:lv])[0] || {})[:name] +assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 25), [:lv])[0] || {})[:name] +assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 25), [:lv])[0] || {})[:name] + + assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 26), [:lv])[0] || {})[:name] +assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 26), [:lv])[0] || {})[:name] +assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 26), [:lv])[0] || {})[:name] + + assert_equal "Vecgada diena", (Holidays.on(Date.civil(2019, 12, 31), [:lv])[0] || {})[:name] +assert_equal "Vecgada diena", (Holidays.on(Date.civil(2020, 12, 31), [:lv])[0] || {})[:name] +assert_equal "Vecgada diena", (Holidays.on(Date.civil(2029, 12, 31), [:lv])[0] || {})[:name] + + assert_equal "Nieuwjaarsdag", (Holidays.on(Date.civil(2008, 1, 1), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Goede Vrijdag", (Holidays.on(Date.civil(2008, 3, 21), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Eerste Paasdag", (Holidays.on(Date.civil(2008, 3, 23), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Tweede Paasdag", (Holidays.on(Date.civil(2008, 3, 24), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Koningsdag", (Holidays.on(Date.civil(2008, 4, 27), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Hemelvaartsdag", (Holidays.on(Date.civil(2008, 5, 1), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Bevrijdingsdag", (Holidays.on(Date.civil(2008, 5, 5), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Eerste Pinksterdag", (Holidays.on(Date.civil(2008, 5, 11), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Tweede Pinksterdag", (Holidays.on(Date.civil(2008, 5, 12), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Eerste Kerstdag", (Holidays.on(Date.civil(2008, 12, 25), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Tweede Kerstdag", (Holidays.on(Date.civil(2008, 12, 26), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Nyttårsdag", (Holidays.on(Date.civil(2010, 1, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. mai", (Holidays.on(Date.civil(2010, 5, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "17. mai", (Holidays.on(Date.civil(2010, 5, 17), [:no], [:informal])[0] || {})[:name] + + assert_equal "Julaften", (Holidays.on(Date.civil(2010, 12, 24), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. juledag", (Holidays.on(Date.civil(2010, 12, 25), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. juledag", (Holidays.on(Date.civil(2010, 12, 26), [:no], [:informal])[0] || {})[:name] + + assert_equal "Nyttårsaften", (Holidays.on(Date.civil(2010, 12, 31), [:no], [:informal])[0] || {})[:name] + + assert_equal "Fastelavn", (Holidays.on(Date.civil(2010, 2, 14), [:no], [:informal])[0] || {})[:name] + + assert_equal "Palmesøndag", (Holidays.on(Date.civil(2010, 3, 28), [:no], [:informal])[0] || {})[:name] + + assert_equal "Skjærtorsdag", (Holidays.on(Date.civil(2010, 4, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "Langfredag", (Holidays.on(Date.civil(2010, 4, 2), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. påskedag", (Holidays.on(Date.civil(2010, 4, 4), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. påskedag", (Holidays.on(Date.civil(2010, 4, 5), [:no], [:informal])[0] || {})[:name] + + assert_equal "Kristi Himmelfartsdag", (Holidays.on(Date.civil(2010, 5, 13), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. pinsedag", (Holidays.on(Date.civil(2010, 5, 23), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. pinsedag", (Holidays.on(Date.civil(2010, 5, 24), [:no], [:informal])[0] || {})[:name] + + assert_equal "Nowy Rok", (Holidays.on(Date.civil(2011, 1, 1), [:pl])[0] || {})[:name] + + assert_equal "Święto Państwowe (Święto Pracy)", (Holidays.on(Date.civil(2011, 5, 1), [:pl])[0] || {})[:name] + + assert_equal "Święto Narodowe Trzeciego Maja", (Holidays.on(Date.civil(2011, 5, 3), [:pl])[0] || {})[:name] + + assert_equal "Wszystkich Świętych", (Holidays.on(Date.civil(2011, 11, 1), [:pl])[0] || {})[:name] + + assert_equal "Narodowe Święto Niepodległości", (Holidays.on(Date.civil(2011, 11, 11), [:pl])[0] || {})[:name] + + assert_equal "pierwszy dzień Bożego Narodzenia", (Holidays.on(Date.civil(2011, 12, 25), [:pl])[0] || {})[:name] + + assert_equal "drugi dzień Bożego Narodzenia", (Holidays.on(Date.civil(2011, 12, 26), [:pl])[0] || {})[:name] + + assert_equal "Dzień Babci", (Holidays.on(Date.civil(2011, 1, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Dziadka", (Holidays.on(Date.civil(2011, 1, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ofiarowanie Pańskie (Matki Boskiej Gromnicznej)", (Holidays.on(Date.civil(2011, 2, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Zakochanych (Walentynki)", (Holidays.on(Date.civil(2011, 2, 14), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Kobiet", (Holidays.on(Date.civil(2010, 3, 8), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Mężczyzn", (Holidays.on(Date.civil(2011, 3, 10), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Prima Aprilis", (Holidays.on(Date.civil(2011, 4, 1), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Międzynarodowy Dzień Ziemi", (Holidays.on(Date.civil(2010, 4, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Flagi Rzeczpospolitej Polskiej", (Holidays.on(Date.civil(2011, 5, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Ojca", (Holidays.on(Date.civil(2010, 6, 23), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Chłopaka", (Holidays.on(Date.civil(2011, 9, 30), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Nauczyciela (Dzień Edukacji Narodowej)", (Holidays.on(Date.civil(2011, 10, 14), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Zaduszny", (Holidays.on(Date.civil(2011, 11, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Andrzejki", (Holidays.on(Date.civil(2011, 11, 29), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Barbórka (Dzień Górnika, Naftowca i Gazownika)", (Holidays.on(Date.civil(2011, 12, 4), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Mikołajki", (Holidays.on(Date.civil(2011, 12, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wigilia Bożego Narodzenia", (Holidays.on(Date.civil(2011, 12, 24), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Sylwester", (Holidays.on(Date.civil(2011, 12, 31), [:pl], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 1, 21), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 1, 22), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 2), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 14), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 3, 8), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 3, 10), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 4, 1), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 4, 22), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 5, 2), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 6, 23), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 9, 30), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 10, 14), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 11, 2), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 11, 29), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 4), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 6), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 24), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 31), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2008, 1, 6), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2009, 1, 6), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2008, 1, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2009, 1, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2010, 1, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2011, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2012, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2013, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2008, 1, 31), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2009, 2, 19), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2010, 2, 11), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2011, 3, 3), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2012, 2, 16), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2008, 2, 5), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2009, 2, 24), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2010, 2, 16), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2011, 3, 8), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2012, 2, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2008, 2, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2009, 2, 25), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2010, 2, 17), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2011, 3, 9), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2012, 2, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2008, 3, 16), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2009, 4, 5), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2010, 3, 28), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2011, 4, 17), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2012, 4, 1), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2008, 3, 20), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2009, 4, 9), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2010, 4, 1), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2011, 4, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2012, 4, 5), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2008, 3, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2009, 4, 10), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2010, 4, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2011, 4, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2012, 4, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2008, 3, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2009, 4, 11), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2010, 4, 3), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2011, 4, 23), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2012, 4, 7), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2008, 3, 23), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2009, 4, 12), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2010, 4, 4), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2011, 4, 24), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2012, 4, 8), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2008, 3, 24), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2009, 4, 13), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2010, 4, 5), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2011, 4, 25), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2012, 4, 9), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2008, 5, 11), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2009, 5, 31), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2010, 5, 23), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2011, 6, 12), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2012, 5, 27), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2008, 5, 22), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2009, 6, 11), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2010, 6, 3), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2011, 6, 23), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2012, 6, 7), [:pl])[0] || {})[:name] + + assert_equal "Wniebowzięcie Najświętszej Maryi Panny", (Holidays.on(Date.civil(2011, 8, 15), [:pl])[0] || {})[:name] + + assert_equal "Ano Novo", (Holidays.on(Date.civil(2008, 1, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2005, 2, 8), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2006, 2, 28), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2007, 2, 20), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2008, 2, 5), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Sexta-feira Santa", (Holidays.on(Date.civil(2008, 3, 21), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Páscoa", (Holidays.on(Date.civil(2008, 3, 23), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Páscoa", (Holidays.on(Date.civil(2016, 3, 27), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia da Liberdade", (Holidays.on(Date.civil(2008, 4, 25), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia do Trabalhador", (Holidays.on(Date.civil(2008, 5, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Corpo de Deus", (Holidays.on(Date.civil(2016, 5, 26), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia de Portugal", (Holidays.on(Date.civil(2008, 6, 10), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Assunção de Nossa Senhora", (Holidays.on(Date.civil(2008, 8, 15), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia da República", (Holidays.on(Date.civil(2008, 10, 5), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia de Todos-os-Santos", (Holidays.on(Date.civil(2008, 11, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Restauração da Independência", (Holidays.on(Date.civil(2008, 12, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Imaculada Conceição", (Holidays.on(Date.civil(2008, 12, 8), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Natal", (Holidays.on(Date.civil(2008, 12, 25), [:pt], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 14), [:ro])[0] || {})[:name] + + assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2018, 4, 6), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2019, 4, 26), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - duminică", (Holidays.on(Date.civil(1961, 4, 9), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - luni", (Holidays.on(Date.civil(1961, 4, 10), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - duminică", (Holidays.on(Date.civil(2013, 5, 5), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - luni", (Holidays.on(Date.civil(2013, 5, 6), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - duminică", (Holidays.on(Date.civil(2027, 5, 2), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - luni", (Holidays.on(Date.civil(2027, 5, 3), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 51", (Holidays.on(Date.civil(2012, 6, 4), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 50", (Holidays.on(Date.civil(2013, 6, 23), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 51", (Holidays.on(Date.civil(2013, 6, 24), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 50", (Holidays.on(Date.civil(1986, 6, 22), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 51", (Holidays.on(Date.civil(1986, 6, 23), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Anul nou", (Holidays.on(Date.civil(2009, 1, 1), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Anul nou", (Holidays.on(Date.civil(2014, 1, 2), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Unirea Principatelor Române", (Holidays.on(Date.civil(2017, 1, 24), [:ro], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 1, 24), [:ro])[0] || {})[:name] + + assert_equal "Ziua muncii", (Holidays.on(Date.civil(2009, 5, 1), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Ziua Copilului", (Holidays.on(Date.civil(2017, 6, 1), [:ro], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 6, 1), [:ro])[0] || {})[:name] + + assert_equal "Adormirea Maicii Domnului", (Holidays.on(Date.civil(2012, 8, 15), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Sfântul Apostol Andrei", (Holidays.on(Date.civil(2013, 11, 30), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Ziua Națională", (Holidays.on(Date.civil(2013, 12, 1), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Sărbătoarea Nașterii Domnului", (Holidays.on(Date.civil(2013, 12, 25), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Sărbătoarea Nașterii Domnului", (Holidays.on(Date.civil(2013, 12, 26), [:ro], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2013, 7, 23), [:ro])[0] || {})[:name] + + assert_equal "Nový rok", (Holidays.on(Date.civil(2013, 1, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Zjavenie Pána (Traja králi)", (Holidays.on(Date.civil(2013, 1, 6), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Veľký piatok", (Holidays.on(Date.civil(2013, 3, 29), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Veľkonočný pondelok", (Holidays.on(Date.civil(2013, 4, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sviatok práce", (Holidays.on(Date.civil(2013, 5, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Deň víťazstva nad fašizmom", (Holidays.on(Date.civil(2013, 5, 8), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sviatok svätého Cyrila a svätého Metoda", (Holidays.on(Date.civil(2013, 7, 5), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Výročie Slovenského národného povstania", (Holidays.on(Date.civil(2013, 8, 29), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Deň Ústavy Slovenskej republiky", (Holidays.on(Date.civil(2013, 9, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sedembolestná Panna Mária", (Holidays.on(Date.civil(2013, 9, 15), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sviatok všetkých svätých", (Holidays.on(Date.civil(2013, 11, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Deň boja za slobodu a demokraciu", (Holidays.on(Date.civil(2013, 11, 17), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Štedrý deň", (Holidays.on(Date.civil(2013, 12, 24), [:sk], [:informal])[0] || {})[:name] + + assert_equal "1. sviatok vianočný", (Holidays.on(Date.civil(2013, 12, 25), [:sk], [:informal])[0] || {})[:name] + + assert_equal "2. sviatok vianočný", (Holidays.on(Date.civil(2013, 12, 26), [:sk], [:informal])[0] || {})[:name] + + assert_equal "velikonočna nedelja", (Holidays.on(Date.civil(2015, 4, 5), [:si])[0] || {})[:name] + + assert_equal "velikonočna nedelja", (Holidays.on(Date.civil(2016, 3, 27), [:si])[0] || {})[:name] + + assert_equal "velikonočni ponedeljek", (Holidays.on(Date.civil(2015, 4, 6), [:si])[0] || {})[:name] + + assert_equal "velikonočni ponedeljek", (Holidays.on(Date.civil(2016, 3, 28), [:si])[0] || {})[:name] + + assert_equal "binkošti", (Holidays.on(Date.civil(2015, 5, 24), [:si])[0] || {})[:name] + + assert_equal "binkošti", (Holidays.on(Date.civil(2016, 5, 15), [:si])[0] || {})[:name] + + assert_equal "novo leto", (Holidays.on(Date.civil(2014, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2015, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2016, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2017, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2018, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2019, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2020, 1, 1), [:si], [:informal])[0] || {})[:name] + + assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2014, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2015, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2016, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2017, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2018, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2019, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2020, 2, 8), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2014, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2015, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2016, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2017, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2018, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2019, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2020, 4, 27), [:si], [:informal])[0] || {})[:name] + + assert_equal "praznik dela", (Holidays.on(Date.civil(2014, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2015, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2016, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2017, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2018, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2019, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2020, 5, 1), [:si], [:informal])[0] || {})[:name] + + assert_equal "praznik dela", (Holidays.on(Date.civil(2014, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2015, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2016, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2017, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2018, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2019, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2020, 5, 2), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan državnosti", (Holidays.on(Date.civil(2014, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2015, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2016, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2017, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2018, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2019, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2020, 6, 25), [:si], [:informal])[0] || {})[:name] + + assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2014, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2015, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2016, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2017, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2018, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2019, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2020, 8, 15), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan reformacije", (Holidays.on(Date.civil(2014, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2015, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2016, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2017, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2018, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2019, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2020, 10, 31), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2014, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2015, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2016, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2017, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2018, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2019, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2020, 11, 1), [:si], [:informal])[0] || {})[:name] + + assert_equal "božič", (Holidays.on(Date.civil(2014, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2015, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2016, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2017, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2018, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2019, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2020, 12, 25), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan samostojnosti in enotnosti", (Holidays.on(Date.civil(2008, 12, 26), [:si], [:informal])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2015, 1, 1), [:bg_en])[0] || {})[:name] + + assert_equal "Liberation Day", (Holidays.on(Date.civil(2015, 3, 3), [:bg_en])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2015, 3, 28), [:bg_en])[0] || {})[:name] + + assert_equal "Holy Saturday", (Holidays.on(Date.civil(2015, 3, 29), [:bg_en])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2015, 3, 30), [:bg_en])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2015, 3, 31), [:bg_en])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2015, 5, 1), [:bg_en])[0] || {})[:name] + + assert_equal "St. George's Day", (Holidays.on(Date.civil(2015, 5, 6), [:bg_en])[0] || {})[:name] + + assert_equal "Slavic Literacy Day", (Holidays.on(Date.civil(2015, 5, 24), [:bg_en])[0] || {})[:name] + + assert_equal "Unification Day", (Holidays.on(Date.civil(2015, 9, 6), [:bg_en])[0] || {})[:name] + + assert_equal "The Independence Day", (Holidays.on(Date.civil(2015, 9, 22), [:bg_en])[0] || {})[:name] + + assert_equal "Revival Leader's Day", (Holidays.on(Date.civil(2015, 11, 1), [:bg_en])[0] || {})[:name] + + assert_equal "Christmas Eve", (Holidays.on(Date.civil(2015, 12, 24), [:bg_en])[0] || {})[:name] + + assert_equal "Christmas", (Holidays.on(Date.civil(2015, 12, 25), [:bg_en])[0] || {})[:name] + + assert_equal "Christmas", (Holidays.on(Date.civil(2015, 12, 26), [:bg_en])[0] || {})[:name] + + assert_equal "Новий Рік", (Holidays.on(Date.civil(2018, 1, 1), [:ua])[0] || {})[:name] + + assert_equal "Різдво Христове", (Holidays.on(Date.civil(2018, 1, 7), [:ua])[0] || {})[:name] + + assert_equal "Різдво Христове", (Holidays.on(Date.civil(2018, 1, 8), [:ua], [:observed])[0] || {})[:name] + + assert_equal "Міжнародний жіночий день", (Holidays.on(Date.civil(2018, 3, 8), [:ua])[0] || {})[:name] + + assert_equal "Великдень", (Holidays.on(Date.civil(2018, 4, 8), [:ua])[0] || {})[:name] + + assert_equal "Великдень", (Holidays.on(Date.civil(2018, 4, 9), [:ua], [:observed])[0] || {})[:name] + + assert_equal "День праці", (Holidays.on(Date.civil(2018, 5, 1), [:ua])[0] || {})[:name] + + assert_equal "День перемоги над нацизмом у Другій світовій війні", (Holidays.on(Date.civil(2018, 5, 9), [:ua])[0] || {})[:name] + + assert_equal "Трійця", (Holidays.on(Date.civil(2018, 5, 27), [:ua])[0] || {})[:name] + + assert_equal "Трійця", (Holidays.on(Date.civil(2018, 5, 28), [:ua], [:observed])[0] || {})[:name] + + assert_equal "День Конституції", (Holidays.on(Date.civil(2018, 6, 28), [:ua])[0] || {})[:name] + + assert_equal "День Незалежності", (Holidays.on(Date.civil(2018, 8, 24), [:ua])[0] || {})[:name] + + assert_equal "День захисника України", (Holidays.on(Date.civil(2018, 10, 14), [:ua])[0] || {})[:name] + + assert_equal "День захисника України", (Holidays.on(Date.civil(2018, 10, 15), [:ua], [:observed])[0] || {})[:name] + + assert_equal "Різдво Христове", (Holidays.on(Date.civil(2018, 12, 25), [:ua])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_fed_ex.rb b/vendor/holidays/test/defs/test_defs_fed_ex.rb new file mode 100644 index 00000000..2e51e4be --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_fed_ex.rb @@ -0,0 +1,24 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/fedex.yaml +class Fed_exDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_fed_ex +{Date.civil(2015,1,1) => 'New Year\'s Day', + Date.civil(2015,5,25) => 'Memorial Day', + Date.civil(2015,7,4) => 'Independence Day', + Date.civil(2015,9,7) => 'Labor Day', + Date.civil(2015,11,26) => 'Thanksgiving', + Date.civil(2015,11,27) => 'Day After Thanksgiving', + Date.civil(2013,11,28) => 'Thanksgiving', + Date.civil(2013,11,29) => 'Day After Thanksgiving', + Date.civil(2015,12,25) => 'Christmas Day', + Date.civil(2015,12,31) => 'New Year\'s Eve',}.each do |date, name| + assert_equal name, (Holidays.on(date, :ups)[0] || {})[:name] +end + + end +end diff --git a/vendor/holidays/test/defs/test_defs_federalreserve.rb b/vendor/holidays/test/defs/test_defs_federalreserve.rb new file mode 100644 index 00000000..338f5561 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_federalreserve.rb @@ -0,0 +1,113 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/federalreserve.yaml +class FederalreserveDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_federalreserve + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2012, 1, 16), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2012, 2, 20), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2012, 5, 28), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2012, 7, 4), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2020, 7, 3), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2012, 9, 3), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2012, 10, 8), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2012, 11, 12), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2012, 11, 22), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2012, 12, 25), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2013, 1, 1), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2013, 1, 21), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2013, 2, 18), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2013, 5, 27), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2013, 7, 4), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2013, 9, 2), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2013, 10, 14), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2013, 11, 11), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2013, 11, 28), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2013, 12, 25), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2014, 1, 1), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2014, 1, 20), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2014, 2, 17), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2014, 5, 26), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2014, 7, 4), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2014, 9, 1), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2014, 10, 13), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2014, 11, 11), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2014, 11, 27), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2014, 12, 25), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2015, 1, 1), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2015, 1, 19), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2015, 2, 16), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2015, 5, 25), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2015, 7, 3), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2015, 9, 7), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2015, 10, 12), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2015, 11, 11), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2015, 11, 26), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2015, 12, 25), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2016, 1, 1), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2016, 1, 18), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2016, 2, 15), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2016, 5, 30), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2016, 7, 4), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2016, 9, 5), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2016, 10, 10), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2016, 11, 11), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2016, 11, 24), [:federalreserve], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:federalreserve], [:observed])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_federalreservebanks.rb b/vendor/holidays/test/defs/test_defs_federalreservebanks.rb new file mode 100644 index 00000000..dbee8d9f --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_federalreservebanks.rb @@ -0,0 +1,247 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/federalreservebanks.yaml +class FederalreservebanksDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_federalreservebanks + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2012, 1, 16), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2012, 2, 20), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2012, 5, 28), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2012, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2012, 9, 3), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2012, 10, 8), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2012, 11, 12), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2012, 11, 22), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2012, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2013, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2013, 1, 21), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2013, 2, 18), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2013, 5, 27), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2013, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2013, 9, 2), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2013, 10, 14), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2013, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2013, 11, 28), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2013, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2014, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2014, 1, 20), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2014, 2, 17), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2014, 5, 26), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2014, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2014, 9, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2014, 10, 13), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2014, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2014, 11, 27), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2014, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2015, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2015, 1, 19), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2015, 2, 16), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2015, 5, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 7, 3), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 7, 6), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2015, 9, 7), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2015, 10, 12), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2015, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2015, 11, 26), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2015, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2016, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2016, 1, 18), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2016, 2, 15), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2016, 5, 30), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2016, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2016, 9, 5), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2016, 10, 10), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2016, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2016, 11, 24), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2019, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2019, 1, 21), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2019, 2, 18), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2019, 5, 27), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2019, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2019, 9, 2), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2019, 10, 14), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2019, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2019, 11, 28), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2019, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2020, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2020, 1, 20), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2020, 2, 17), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2020, 5, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 7, 3), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 7, 6), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2020, 9, 7), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2020, 10, 12), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2020, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2020, 11, 26), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2020, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2021, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2021, 1, 18), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2021, 2, 15), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2021, 5, 31), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 7, 2), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2021, 7, 5), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2021, 9, 6), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2021, 10, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2021, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2021, 11, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 12, 24), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 12, 27), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 12, 31), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2022, 1, 3), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2022, 1, 17), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2022, 2, 21), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2022, 5, 30), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2022, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2022, 9, 5), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2022, 10, 10), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2022, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2022, 11, 24), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2022, 12, 23), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2022, 12, 30), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2023, 1, 2), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2023, 1, 16), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2023, 2, 20), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2023, 5, 29), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2023, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2023, 9, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2023, 10, 9), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2023, 11, 10), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2023, 11, 13), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2023, 11, 23), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2023, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2024, 1, 1), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Birthday of Martin Luther King, Jr", (Holidays.on(Date.civil(2024, 1, 15), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Washington's Birthday", (Holidays.on(Date.civil(2024, 2, 19), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2024, 5, 27), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2024, 7, 4), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2024, 9, 2), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2024, 10, 14), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2024, 11, 11), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving Day", (Holidays.on(Date.civil(2024, 11, 28), [:federalreservebanks], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2024, 12, 25), [:federalreservebanks], [:observed])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_fedex.rb b/vendor/holidays/test/defs/test_defs_fedex.rb new file mode 100644 index 00000000..bcdec98c --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_fedex.rb @@ -0,0 +1,31 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/fedex.yaml +class FedexDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_fedex + assert_equal "New Year's Day", (Holidays.on(Date.civil(2015, 1, 1), [:ups])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2015, 5, 25), [:ups])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2015, 7, 4), [:ups])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2015, 9, 7), [:ups])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2015, 11, 26), [:ups])[0] || {})[:name] + + assert_equal "Day After Thanksgiving", (Holidays.on(Date.civil(2015, 11, 27), [:ups])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2013, 11, 28), [:ups])[0] || {})[:name] + + assert_equal "Day After Thanksgiving", (Holidays.on(Date.civil(2013, 11, 29), [:ups])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2015, 12, 25), [:ups])[0] || {})[:name] + + assert_equal "New Year's Eve", (Holidays.on(Date.civil(2015, 12, 31), [:ups])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_fi.rb b/vendor/holidays/test/defs/test_defs_fi.rb new file mode 100644 index 00000000..61558f19 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_fi.rb @@ -0,0 +1,59 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/fi.yaml +class FiDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_fi + assert_equal "Uudenvuodenpäivä", (Holidays.on(Date.civil(2008, 1, 1), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Loppiainen", (Holidays.on(Date.civil(2008, 1, 6), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pitkäperjantai", (Holidays.on(Date.civil(2008, 3, 21), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pääsiäispäivä", (Holidays.on(Date.civil(2008, 3, 23), [:fi], [:informal])[0] || {})[:name] + + assert_equal "2. Pääsiäispäivä", (Holidays.on(Date.civil(2008, 3, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Helatorstai", (Holidays.on(Date.civil(2008, 5, 1), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Helluntaipäivä", (Holidays.on(Date.civil(2008, 5, 11), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2009, 6, 19), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2010, 6, 25), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2011, 6, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2012, 6, 22), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2013, 6, 21), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2005, 6, 25), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2006, 6, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2007, 6, 23), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2008, 6, 21), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2005, 11, 5), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2006, 11, 4), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2007, 11, 3), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2008, 11, 1), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Itsenäisyyspäivä", (Holidays.on(Date.civil(2008, 12, 6), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Jouluaatto", (Holidays.on(Date.civil(2008, 12, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Joulupäivä", (Holidays.on(Date.civil(2008, 12, 25), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Tapaninpäivä", (Holidays.on(Date.civil(2008, 12, 26), [:fi], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_fr.rb b/vendor/holidays/test/defs/test_defs_fr.rb new file mode 100644 index 00000000..427c15d4 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_fr.rb @@ -0,0 +1,43 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/fr.yaml +class FrDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_fr + assert_equal "Jour de l'an", (Holidays.on(Date.civil(2007, 1, 1), [:fr])[0] || {})[:name] + + assert_equal "Lundi de Pâques", (Holidays.on(Date.civil(2007, 4, 9), [:fr])[0] || {})[:name] + + assert_equal "Fête du travail", (Holidays.on(Date.civil(2007, 5, 1), [:fr])[0] || {})[:name] + + assert_equal "Victoire 1945", (Holidays.on(Date.civil(2007, 5, 8), [:fr])[0] || {})[:name] + + assert_equal "Ascension", (Holidays.on(Date.civil(2007, 5, 17), [:fr])[0] || {})[:name] + + assert_equal "Lundi de Pentecôte", (Holidays.on(Date.civil(2007, 5, 28), [:fr])[0] || {})[:name] + + assert_equal "Fête nationale", (Holidays.on(Date.civil(2007, 7, 14), [:fr])[0] || {})[:name] + + assert_equal "Assomption", (Holidays.on(Date.civil(2007, 8, 15), [:fr])[0] || {})[:name] + + assert_equal "Toussaint", (Holidays.on(Date.civil(2007, 11, 1), [:fr])[0] || {})[:name] + + assert_equal "Armistice 1918", (Holidays.on(Date.civil(2007, 11, 11), [:fr])[0] || {})[:name] + + assert_equal "Noël", (Holidays.on(Date.civil(2007, 12, 25), [:fr])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2007, 4, 8), [:fr])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2007, 5, 27), [:fr])[0] || {})[:name] + + assert_equal "Pâques", (Holidays.on(Date.civil(2007, 4, 8), [:fr], [:informal])[0] || {})[:name] + + assert_equal "Pentecôte", (Holidays.on(Date.civil(2007, 5, 27), [:fr], [:informal])[0] || {})[:name] + + assert_equal "Saint-Étienne", (Holidays.on(Date.civil(2017, 12, 26), [:fr_a, :fr_m], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_gb.rb b/vendor/holidays/test/defs/test_defs_gb.rb new file mode 100644 index 00000000..a18f4ac2 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_gb.rb @@ -0,0 +1,133 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/gb.yaml +class GbDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_gb + assert_equal "Good Friday", (Holidays.on(Date.civil(2008, 3, 21), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2008, 3, 23), [:gb], [:informal])[0] || {})[:name] + + assert_equal "May Day", (Holidays.on(Date.civil(2008, 5, 5), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 5, 26), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Guy Fawkes Day", (Holidays.on(Date.civil(2008, 11, 5), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:gb], [:informal])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2008, 12, 26), [:gb], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2008, 3, 17), [:gb_nir], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2018, 3, 17), [:gb_nir], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2018, 3, 19), [:gb_nir], [:observed, :informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2019, 3, 17), [:gb_nir], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2019, 3, 18), [:gb_nir], [:observed, :informal])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2020, 7, 12), [:gb_nir])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 7, 12), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2020, 7, 13), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2008, 7, 12), [:gb_nir])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2008, 7, 14), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2021, 7, 12), [:gb_nir])[0] || {})[:name] + + assert_equal "Battle of the Boyne", (Holidays.on(Date.civil(2021, 7, 12), [:gb_nir], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 7, 13), [:gb_nir], [:observed])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2006, 11, 30), [:gb_sct], [:informal])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2006, 11, 30), [:gb_sct], [:informal, :observed])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2002, 12, 2), [:gb_sct], [:informal, :observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2004, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2005, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2006, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2007, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2007, 11, 30), [:gb_sct], [:informal])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2007, 11, 30), [:gb_sct], [:informal, :observed])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2016, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2019, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2019, 11, 30), [:gb_sct])[0] || {})[:name] + + assert_equal "St. Andrew's Day", (Holidays.on(Date.civil(2019, 12, 2), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2009, 12, 25), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 27), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2008, 12, 26), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2009, 12, 28), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2010, 12, 28), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2011, 12, 27), [:gb_], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2010, 1, 1), [:gb], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2011, 1, 3), [:gb], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:gb], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2010, 1, 4), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2011, 1, 4), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2012, 1, 3), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2013, 1, 2), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "2nd January", (Holidays.on(Date.civil(2014, 1, 2), [:gb_sct], [:observed])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_wls])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_wls])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_eng])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_eng])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_nir])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_nir])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_eaw])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_eaw])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:gb_])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2008, 8, 25), [:gb_])[0] || {})[:name] + + assert_equal "Liberation Day", (Holidays.on(Date.civil(2018, 5, 9), [:je])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2018, 4, 2), [:je])[0] || {})[:name] + + assert_equal "Bank Holiday", (Holidays.on(Date.civil(2018, 8, 27), [:je])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ge.rb b/vendor/holidays/test/defs/test_defs_ge.rb new file mode 100644 index 00000000..25468a46 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ge.rb @@ -0,0 +1,53 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ge.yaml +class GeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ge + assert_equal "ახალი წელი", (Holidays.on(Date.civil(2017, 1, 1), [:ge])[0] || {})[:name] + + assert_equal "ბედობა", (Holidays.on(Date.civil(2017, 1, 2), [:ge])[0] || {})[:name] + + assert_equal "ქრისტეშობა", (Holidays.on(Date.civil(2017, 1, 7), [:ge])[0] || {})[:name] + + assert_equal "ნათლისღება", (Holidays.on(Date.civil(2017, 1, 19), [:ge])[0] || {})[:name] + + assert_equal "დედის დღე", (Holidays.on(Date.civil(2017, 3, 3), [:ge])[0] || {})[:name] + + assert_equal "ქალთა საერთაშორისო დღე", (Holidays.on(Date.civil(2017, 3, 8), [:ge])[0] || {})[:name] + + assert_equal "ეროვნული ერთიანობის დღე", (Holidays.on(Date.civil(2017, 4, 9), [:ge])[0] || {})[:name] + + assert_equal "ფაშიზმზე გამარჯვების დღე", (Holidays.on(Date.civil(2017, 5, 9), [:ge])[0] || {})[:name] + + assert_equal "წმინდა მოციქულის ანდრია პირველწოდებულის საქართველოში შემოსვლის დღე", (Holidays.on(Date.civil(2017, 5, 12), [:ge])[0] || {})[:name] + + assert_equal "დამოუკიდებლობის დღე", (Holidays.on(Date.civil(2017, 5, 26), [:ge])[0] || {})[:name] + + assert_equal "მარიამობა", (Holidays.on(Date.civil(2017, 8, 28), [:ge])[0] || {})[:name] + + assert_equal "სვეტიცხოვლობა", (Holidays.on(Date.civil(2017, 10, 14), [:ge])[0] || {})[:name] + + assert_equal "გიორგობა", (Holidays.on(Date.civil(2017, 11, 23), [:ge])[0] || {})[:name] + + assert_equal "დიდი პარასკევი", (Holidays.on(Date.civil(2017, 4, 14), [:ge])[0] || {})[:name] +assert_equal "დიდი პარასკევი", (Holidays.on(Date.civil(2018, 4, 6), [:ge])[0] || {})[:name] +assert_equal "დიდი პარასკევი", (Holidays.on(Date.civil(2019, 4, 26), [:ge])[0] || {})[:name] + + assert_equal "დიდი შაბათი", (Holidays.on(Date.civil(2017, 4, 15), [:ge])[0] || {})[:name] +assert_equal "დიდი შაბათი", (Holidays.on(Date.civil(2018, 4, 7), [:ge])[0] || {})[:name] +assert_equal "დიდი შაბათი", (Holidays.on(Date.civil(2019, 4, 27), [:ge])[0] || {})[:name] + + assert_equal "ბრწყინვალე აღდგომის დღე", (Holidays.on(Date.civil(2017, 4, 16), [:ge])[0] || {})[:name] +assert_equal "ბრწყინვალე აღდგომის დღე", (Holidays.on(Date.civil(2018, 4, 8), [:ge])[0] || {})[:name] +assert_equal "ბრწყინვალე აღდგომის დღე", (Holidays.on(Date.civil(2019, 4, 28), [:ge])[0] || {})[:name] + + assert_equal "მიცვალებულთა", (Holidays.on(Date.civil(2017, 4, 17), [:ge])[0] || {})[:name] +assert_equal "მიცვალებულთა", (Holidays.on(Date.civil(2018, 4, 9), [:ge])[0] || {})[:name] +assert_equal "მიცვალებულთა", (Holidays.on(Date.civil(2019, 4, 29), [:ge])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_hk.rb b/vendor/holidays/test/defs/test_defs_hk.rb new file mode 100644 index 00000000..8fbdf7fa --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_hk.rb @@ -0,0 +1,59 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/hk.yaml +class HkDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_hk + assert_equal "New Year's Day", (Holidays.on(Date.civil(2016, 1, 1), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Lunar New Year's Day", (Holidays.on(Date.civil(2016, 2, 8), [:hk], [:observed])[0] || {})[:name] + + assert_equal "The second day of Lunar New Year", (Holidays.on(Date.civil(2016, 2, 9), [:hk], [:observed])[0] || {})[:name] + + assert_equal "The third day of Lunar New Year", (Holidays.on(Date.civil(2016, 2, 10), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2016, 3, 25), [:hk], [:observed])[0] || {})[:name] + + assert_equal "The day following Good Friday", (Holidays.on(Date.civil(2016, 3, 26), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2016, 3, 28), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2016, 5, 2), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Hong Kong Special Administrative Region Establishment Day", (Holidays.on(Date.civil(2016, 7, 1), [:hk], [:observed])[0] || {})[:name] + + assert_equal "National Day", (Holidays.on(Date.civil(2016, 10, 1), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2016, 12, 27), [:hk], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Lunar New Year's Day", (Holidays.on(Date.civil(2017, 1, 28), [:hk], [:observed])[0] || {})[:name] + + assert_equal "The second day of Lunar New Year", (Holidays.on(Date.civil(2017, 1, 30), [:hk], [:observed])[0] || {})[:name] + + assert_equal "The third day of Lunar New Year", (Holidays.on(Date.civil(2017, 1, 31), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2017, 4, 14), [:hk], [:observed])[0] || {})[:name] + + assert_equal "The day following Good Friday", (Holidays.on(Date.civil(2017, 4, 15), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2017, 4, 17), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2017, 5, 1), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Hong Kong Special Administrative Region Establishment Day", (Holidays.on(Date.civil(2017, 7, 1), [:hk], [:observed])[0] || {})[:name] + + assert_equal "National Day", (Holidays.on(Date.civil(2017, 10, 2), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2017, 12, 25), [:hk], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2017, 12, 26), [:hk], [:observed])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_hr.rb b/vendor/holidays/test/defs/test_defs_hr.rb new file mode 100644 index 00000000..eba41e92 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_hr.rb @@ -0,0 +1,45 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/hr.yaml +class HrDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_hr + assert_equal "Nova godina", (Holidays.on(Date.civil(2012, 1, 1), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Bogojavljenje ili Sveta tri kralja", (Holidays.on(Date.civil(2012, 1, 6), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Praznik rada", (Holidays.on(Date.civil(2012, 5, 1), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan antifašističke borbe", (Holidays.on(Date.civil(2012, 6, 22), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan državnosti", (Holidays.on(Date.civil(2020, 5, 30), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja", (Holidays.on(Date.civil(2012, 8, 5), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Velika Gospa", (Holidays.on(Date.civil(2012, 8, 15), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje", (Holidays.on(Date.civil(2020, 11, 18), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Svi sveti", (Holidays.on(Date.civil(2012, 11, 1), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Božić", (Holidays.on(Date.civil(2012, 12, 25), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Sveti Stjepan", (Holidays.on(Date.civil(2012, 12, 26), [:hr], [:informal])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2008, 5, 22), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2009, 6, 11), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2010, 6, 3), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2012, 6, 7), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2013, 5, 30), [:hr])[0] || {})[:name] + + assert_equal "Tijelovo", (Holidays.on(Date.civil(2014, 6, 19), [:hr])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_hu.rb b/vendor/holidays/test/defs/test_defs_hu.rb new file mode 100644 index 00000000..3c099a8b --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_hu.rb @@ -0,0 +1,47 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/hu.yaml +class HuDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_hu + assert_equal "Újév", (Holidays.on(Date.civil(2012, 1, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Újév", (Holidays.on(Date.civil(2011, 1, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "1848/49-es forradalom és szabadságharc ünnepe", (Holidays.on(Date.civil(2012, 3, 15), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2011, 4, 25), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2012, 4, 9), [:hu], [:informal])[0] || {})[:name] + + assert_equal "A munka ünnepe", (Holidays.on(Date.civil(2012, 5, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2011, 6, 13), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2012, 5, 28), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Az államalapítás ünnepe", (Holidays.on(Date.civil(2012, 8, 20), [:hu], [:informal])[0] || {})[:name] + + assert_equal "1956-os forradalom és szabadságharc ünnepe", (Holidays.on(Date.civil(2012, 10, 23), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Mindenszentek", (Holidays.on(Date.civil(2012, 11, 1), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Karácsony", (Holidays.on(Date.civil(2012, 12, 25), [:hu], [:informal])[0] || {})[:name] + + assert_equal "Karácsony", (Holidays.on(Date.civil(2012, 12, 26), [:hu], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2012, 3, 14), [:hu])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2016, 3, 28), [:hu])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 3, 25), [:hu])[0] || {})[:name] + + assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2017, 4, 17), [:hu])[0] || {})[:name] + + assert_equal "Nagypéntek", (Holidays.on(Date.civil(2017, 4, 14), [:hu])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ie.rb b/vendor/holidays/test/defs/test_defs_ie.rb new file mode 100644 index 00000000..73aec0d8 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ie.rb @@ -0,0 +1,53 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ie.yaml +class IeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ie + assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:ie])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2008, 3, 17), [:ie])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:ie])[0] || {})[:name] + + assert_equal "May Day", (Holidays.on(Date.civil(2008, 5, 5), [:ie])[0] || {})[:name] + + assert_equal "June Bank Holiday", (Holidays.on(Date.civil(2008, 6, 2), [:ie])[0] || {})[:name] + + assert_equal "August Bank Holiday", (Holidays.on(Date.civil(2008, 8, 4), [:ie])[0] || {})[:name] + + assert_equal "October Bank Holiday", (Holidays.on(Date.civil(2008, 10, 27), [:ie])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:ie])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2008, 12, 26), [:ie])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2012, 3, 19), [:ie], [:observed])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2012, 4, 9), [:ie], [:observed])[0] || {})[:name] + + assert_equal "May Day", (Holidays.on(Date.civil(2012, 5, 7), [:ie], [:observed])[0] || {})[:name] + + assert_equal "June Bank Holiday", (Holidays.on(Date.civil(2012, 6, 4), [:ie], [:observed])[0] || {})[:name] + + assert_equal "August Bank Holiday", (Holidays.on(Date.civil(2012, 8, 6), [:ie], [:observed])[0] || {})[:name] + + assert_equal "October Bank Holiday", (Holidays.on(Date.civil(2012, 10, 29), [:ie], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2011, 12, 26), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2011, 12, 27), [:ie], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2012, 12, 25), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2012, 12, 26), [:ie], [:observed])[0] || {})[:name] + + assert_equal "St. Stephen's Day", (Holidays.on(Date.civil(2015, 12, 28), [:ie], [:observed])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_is.rb b/vendor/holidays/test/defs/test_defs_is.rb new file mode 100644 index 00000000..8bdb218e --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_is.rb @@ -0,0 +1,51 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/is.yaml +class IsDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_is + assert_equal "Nýársdagur", (Holidays.on(Date.civil(2007, 1, 1), [:is], [:informal])[0] || {})[:name] + + assert_equal "Þrettándinn", (Holidays.on(Date.civil(2007, 1, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Bóndadagur", (Holidays.on(Date.civil(2007, 1, 19), [:is], [:informal])[0] || {})[:name] + + assert_equal "Konudagur", (Holidays.on(Date.civil(2007, 2, 18), [:is], [:informal])[0] || {})[:name] + + assert_equal "Skírdagur", (Holidays.on(Date.civil(2007, 4, 5), [:is], [:informal])[0] || {})[:name] + + assert_equal "Föstudaginn langi", (Holidays.on(Date.civil(2007, 4, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Páskadagur", (Holidays.on(Date.civil(2007, 4, 8), [:is], [:informal])[0] || {})[:name] + + assert_equal "Annar í páskum", (Holidays.on(Date.civil(2007, 4, 9), [:is], [:informal])[0] || {})[:name] + + assert_equal "Sumardagurinn fyrsti", (Holidays.on(Date.civil(2007, 4, 19), [:is], [:informal])[0] || {})[:name] + + assert_equal "Verkalýðsdagurinn", (Holidays.on(Date.civil(2007, 5, 1), [:is], [:informal])[0] || {})[:name] + + assert_equal "Uppstigningardagur", (Holidays.on(Date.civil(2007, 5, 17), [:is], [:informal])[0] || {})[:name] + + assert_equal "Hvítasunnudagur", (Holidays.on(Date.civil(2007, 5, 27), [:is], [:informal])[0] || {})[:name] + + assert_equal "Annar í hvítasunnu", (Holidays.on(Date.civil(2007, 5, 28), [:is], [:informal])[0] || {})[:name] + + assert_equal "Sjómannadagurinn", (Holidays.on(Date.civil(2007, 6, 3), [:is], [:informal])[0] || {})[:name] + + assert_equal "Lýðveldisdagurinn", (Holidays.on(Date.civil(2007, 6, 17), [:is], [:informal])[0] || {})[:name] + + assert_equal "Frídagur verslunarmanna", (Holidays.on(Date.civil(2007, 8, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 24), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 25), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 26), [:is], [:informal])[0] || {})[:name] + + assert_equal "Gamlárskvöld", (Holidays.on(Date.civil(2007, 12, 31), [:is], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_it.rb b/vendor/holidays/test/defs/test_defs_it.rb new file mode 100644 index 00000000..3b3409dc --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_it.rb @@ -0,0 +1,55 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/it.yaml +class ItDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_it + assert_equal "Capodanno", (Holidays.on(Date.civil(2007, 1, 1), [:it], [:informal])[0] || {})[:name] + + assert_equal "Epifania", (Holidays.on(Date.civil(2007, 1, 6), [:it], [:informal])[0] || {})[:name] + + assert_equal "Pasqua", (Holidays.on(Date.civil(2007, 4, 8), [:it], [:informal])[0] || {})[:name] + + assert_equal "Lunedì dell'Angelo", (Holidays.on(Date.civil(2007, 4, 9), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa della Liberazione", (Holidays.on(Date.civil(2007, 4, 25), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Liberale", (Holidays.on(Date.civil(2019, 4, 27), [:it_tv], [:informal])[0] || {})[:name] + + assert_equal "Festa dei Lavoratori", (Holidays.on(Date.civil(2007, 5, 1), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Zeno", (Holidays.on(Date.civil(2019, 5, 21), [:it_vr], [:informal])[0] || {})[:name] + + assert_equal "Festa della Repubblica", (Holidays.on(Date.civil(2007, 6, 2), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di Sant'Antonio di Padova", (Holidays.on(Date.civil(2019, 6, 13), [:it_pd], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Giovanni Battista", (Holidays.on(Date.civil(2019, 6, 24), [:it_fi, :it_ge, :it_to], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 6, 24), [:it])[0] || {})[:name] + + assert_equal "Festa di San Pietro e Paolo", (Holidays.on(Date.civil(2019, 6, 29), [:it_rm], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 6, 29), [:it])[0] || {})[:name] + + assert_equal "Assunzione", (Holidays.on(Date.civil(2007, 8, 15), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa della Madonna di Monte Berico", (Holidays.on(Date.civil(2019, 9, 8), [:it_vi], [:informal])[0] || {})[:name] + + assert_equal "Ognissanti", (Holidays.on(Date.civil(2007, 11, 1), [:it], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Martino", (Holidays.on(Date.civil(2019, 11, 11), [:it_bl], [:informal])[0] || {})[:name] + + assert_equal "Festa di San Bellino", (Holidays.on(Date.civil(2019, 11, 26), [:it_ro], [:informal])[0] || {})[:name] + + assert_equal "Immacolata Concezione", (Holidays.on(Date.civil(2007, 12, 8), [:it], [:informal])[0] || {})[:name] + + assert_equal "Natale", (Holidays.on(Date.civil(2007, 12, 25), [:it], [:informal])[0] || {})[:name] + + assert_equal "Santo Stefano", (Holidays.on(Date.civil(2007, 12, 26), [:it], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_jp.rb b/vendor/holidays/test/defs/test_defs_jp.rb new file mode 100644 index 00000000..34e83ab0 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_jp.rb @@ -0,0 +1,159 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/jp.yaml +class JpDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_jp + assert_equal "元日", (Holidays.on(Date.civil(2008, 1, 1), [:jp], [:informal])[0] || {})[:name] + + assert_equal "成人の日", (Holidays.on(Date.civil(2010, 1, 11), [:jp], [:informal])[0] || {})[:name] + + assert_equal "建国記念の日", (Holidays.on(Date.civil(2008, 2, 11), [:jp], [:informal])[0] || {})[:name] + + assert_equal "昭和の日", (Holidays.on(Date.civil(2008, 4, 29), [:jp], [:informal])[0] || {})[:name] + + assert_equal "憲法記念日", (Holidays.on(Date.civil(2008, 5, 3), [:jp], [:informal])[0] || {})[:name] + + assert_equal "こどもの日", (Holidays.on(Date.civil(2008, 5, 5), [:jp], [:informal])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2010, 7, 19), [:jp], [:informal])[0] || {})[:name] + + assert_equal "敬老の日", (Holidays.on(Date.civil(2010, 9, 20), [:jp], [:informal])[0] || {})[:name] + + assert_equal "体育の日", (Holidays.on(Date.civil(2010, 10, 11), [:jp], [:informal])[0] || {})[:name] + + assert_equal "文化の日", (Holidays.on(Date.civil(2008, 11, 3), [:jp], [:informal])[0] || {})[:name] + + assert_equal "勤労感謝の日", (Holidays.on(Date.civil(2008, 11, 23), [:jp], [:informal])[0] || {})[:name] + + assert_equal "天皇誕生日", (Holidays.on(Date.civil(2008, 12, 23), [:jp], [:informal])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2010, 3, 22), [:jp], [:informal])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2008, 11, 24), [:jp], [:informal])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2012, 1, 2), [:jp], [:informal])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2013, 5, 6), [:jp], [:informal])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2014, 5, 6), [:jp], [:informal])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2015, 5, 6), [:jp], [:informal])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2019, 8, 12), [:jp], [:informal])[0] || {})[:name] + + assert_equal "春分の日", (Holidays.on(Date.civil(2004, 3, 20), [:jp])[0] || {})[:name] + + assert_equal "春分の日", (Holidays.on(Date.civil(2005, 3, 20), [:jp])[0] || {})[:name] + + assert_equal "春分の日", (Holidays.on(Date.civil(2006, 3, 21), [:jp])[0] || {})[:name] + + assert_equal "春分の日", (Holidays.on(Date.civil(2007, 3, 21), [:jp])[0] || {})[:name] + + assert_equal "春分の日", (Holidays.on(Date.civil(2008, 3, 20), [:jp])[0] || {})[:name] + + assert_equal "春分の日", (Holidays.on(Date.civil(2009, 3, 20), [:jp])[0] || {})[:name] + + assert_equal "春分の日", (Holidays.on(Date.civil(2010, 3, 21), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2004, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2005, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2006, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2007, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2008, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2009, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2010, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2011, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2012, 9, 22), [:jp])[0] || {})[:name] + + assert_equal "秋分の日", (Holidays.on(Date.civil(2013, 9, 23), [:jp])[0] || {})[:name] + + assert_equal "国民の休日", (Holidays.on(Date.civil(2032, 9, 21), [:jp])[0] || {})[:name] + + assert_equal "国民の休日", (Holidays.on(Date.civil(2049, 9, 21), [:jp])[0] || {})[:name] + + assert_equal "国民の休日", (Holidays.on(Date.civil(2009, 9, 22), [:jp])[0] || {})[:name] + + assert_equal "国民の休日", (Holidays.on(Date.civil(2015, 9, 22), [:jp])[0] || {})[:name] + + assert_equal "国民の休日", (Holidays.on(Date.civil(2026, 9, 22), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(1996, 7, 20), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2002, 7, 20), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2003, 7, 21), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2004, 7, 19), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2005, 7, 18), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2006, 7, 17), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2007, 7, 16), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2009, 7, 20), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2013, 7, 15), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2014, 7, 21), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2019, 7, 15), [:jp])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 7, 20), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2020, 7, 23), [:jp])[0] || {})[:name] + + assert_equal "海の日", (Holidays.on(Date.civil(2021, 7, 22), [:jp])[0] || {})[:name] + + assert_equal "山の日", (Holidays.on(Date.civil(2016, 8, 11), [:jp])[0] || {})[:name] + + assert_equal "山の日", (Holidays.on(Date.civil(2017, 8, 11), [:jp])[0] || {})[:name] + + assert_equal "山の日", (Holidays.on(Date.civil(2018, 8, 11), [:jp])[0] || {})[:name] + + assert_equal "山の日", (Holidays.on(Date.civil(2019, 8, 11), [:jp])[0] || {})[:name] + + assert_equal "山の日", (Holidays.on(Date.civil(2020, 8, 10), [:jp])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 8, 11), [:jp])[0] || {})[:name] + + assert_equal "山の日", (Holidays.on(Date.civil(2021, 8, 8), [:jp])[0] || {})[:name] + + assert_equal "振替休日", (Holidays.on(Date.civil(2021, 8, 9), [:jp])[0] || {})[:name] + + assert_equal "山の日", (Holidays.on(Date.civil(2022, 8, 11), [:jp])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 8, 11), [:jp])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1998, 9, 22), [:jp])[0] || {})[:name] + + assert_equal "天皇誕生日", (Holidays.on(Date.civil(2018, 12, 23), [:jp])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 2, 23), [:jp])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 12, 23), [:jp])[0] || {})[:name] + + assert_equal "天皇誕生日", (Holidays.on(Date.civil(2020, 2, 23), [:jp])[0] || {})[:name] + + assert_equal "体育の日", (Holidays.on(Date.civil(2019, 10, 14), [:jp])[0] || {})[:name] + + assert_equal "スポーツの日", (Holidays.on(Date.civil(2020, 7, 24), [:jp])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 10, 12), [:jp])[0] || {})[:name] + + assert_equal "スポーツの日", (Holidays.on(Date.civil(2021, 7, 23), [:jp])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_kr.rb b/vendor/holidays/test/defs/test_defs_kr.rb new file mode 100644 index 00000000..ec3627c0 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_kr.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/kr.yaml +class KrDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_kr + assert_equal "설날", (Holidays.on(Date.civil(2016, 2, 8), [:kr], [:informal])[0] || {})[:name] + + assert_equal "설날 연휴", (Holidays.on(Date.civil(2017, 1, 29), [:kr], [:informal])[0] || {})[:name] + + assert_equal "석가탄신일", (Holidays.on(Date.civil(2016, 5, 14), [:kr], [:informal])[0] || {})[:name] + + assert_equal "추석", (Holidays.on(Date.civil(2016, 9, 15), [:kr], [:informal])[0] || {})[:name] + + assert_equal "3·1절", (Holidays.on(Date.civil(2016, 3, 1), [:kr], [:informal])[0] || {})[:name] + + assert_equal "어린이날", (Holidays.on(Date.civil(2016, 5, 5), [:kr], [:informal])[0] || {})[:name] + + assert_equal "현충일", (Holidays.on(Date.civil(2016, 6, 6), [:kr], [:informal])[0] || {})[:name] + + assert_equal "제헌절", (Holidays.on(Date.civil(2016, 7, 17), [:kr], [:informal])[0] || {})[:name] + + assert_equal "광복절", (Holidays.on(Date.civil(2016, 8, 15), [:kr], [:informal])[0] || {})[:name] + + assert_equal "개천절", (Holidays.on(Date.civil(2016, 10, 3), [:kr], [:informal])[0] || {})[:name] + + assert_equal "한글날", (Holidays.on(Date.civil(2016, 10, 9), [:kr], [:informal])[0] || {})[:name] + + assert_equal "크리스마스", (Holidays.on(Date.civil(2016, 12, 25), [:kr], [:informal])[0] || {})[:name] + + assert_equal "설날", (Holidays.on(Date.civil(2017, 1, 28), [:kr], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_kz.rb b/vendor/holidays/test/defs/test_defs_kz.rb new file mode 100644 index 00000000..1c76086c --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_kz.rb @@ -0,0 +1,39 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/kz.yaml +class KzDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_kz + assert_equal "Jańa jyl", (Holidays.on(Date.civil(2020, 1, 1), [:kz])[0] || {})[:name] + + assert_equal "Jańa jyl", (Holidays.on(Date.civil(2020, 1, 2), [:kz])[0] || {})[:name] + + assert_equal "Halyqaralyq áıelder kúni", (Holidays.on(Date.civil(2020, 3, 8), [:kz])[0] || {})[:name] + + assert_equal "Naýryz Meıramy", (Holidays.on(Date.civil(2020, 3, 21), [:kz])[0] || {})[:name] + + assert_equal "Naýryz Meıramy", (Holidays.on(Date.civil(2020, 3, 22), [:kz])[0] || {})[:name] + + assert_equal "Naýryz Meıramy", (Holidays.on(Date.civil(2020, 3, 23), [:kz])[0] || {})[:name] + + assert_equal "Qazaqstan halqynyń birligi merekesi", (Holidays.on(Date.civil(2020, 5, 1), [:kz])[0] || {})[:name] + + assert_equal "Otan Qorǵaýshy kuni", (Holidays.on(Date.civil(2020, 5, 7), [:kz])[0] || {})[:name] + + assert_equal "Jeńis kúni", (Holidays.on(Date.civil(2020, 5, 9), [:kz])[0] || {})[:name] + + assert_equal "Astana kúni", (Holidays.on(Date.civil(2020, 7, 6), [:kz])[0] || {})[:name] + + assert_equal "Qazaqstan Respýblıkasynyń Konstıtýcıyasy kúni", (Holidays.on(Date.civil(2020, 8, 30), [:kz])[0] || {})[:name] + + assert_equal "Túńǵysh Prezıdent kúni", (Holidays.on(Date.civil(2020, 12, 1), [:kz])[0] || {})[:name] + + assert_equal "Táýelsizdik kúni", (Holidays.on(Date.civil(2020, 12, 16), [:kz])[0] || {})[:name] + + assert_equal "Táýelsizdik kúni", (Holidays.on(Date.civil(2020, 12, 17), [:kz])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_li.rb b/vendor/holidays/test/defs/test_defs_li.rb new file mode 100644 index 00000000..cab497bc --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_li.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/li.yaml +class LiDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_li + assert_equal "Neujahrstag", (Holidays.on(Date.civil(2009, 1, 1), [:li], [:informal])[0] || {})[:name] + + assert_equal "Fasnachtsdienstag", (Holidays.on(Date.civil(2011, 3, 8), [:li], [:informal])[0] || {})[:name] + + assert_equal "Karfreitag", (Holidays.on(Date.civil(2009, 4, 10), [:li], [:informal])[0] || {})[:name] + + assert_equal "Ostern", (Holidays.on(Date.civil(2009, 4, 12), [:li], [:informal])[0] || {})[:name] + + assert_equal "Ostermontag", (Holidays.on(Date.civil(2009, 4, 13), [:li], [:informal])[0] || {})[:name] + + assert_equal "Auffahrt", (Holidays.on(Date.civil(2009, 5, 21), [:li], [:informal])[0] || {})[:name] + + assert_equal "Pfingstmontag", (Holidays.on(Date.civil(2009, 6, 1), [:li], [:informal])[0] || {})[:name] + + assert_equal "Weihnachten", (Holidays.on(Date.civil(2009, 12, 25), [:li], [:informal])[0] || {})[:name] + + assert_equal "Stefanstag", (Holidays.on(Date.civil(2009, 12, 26), [:li], [:informal])[0] || {})[:name] + + assert_equal "Fronleichnam", (Holidays.on(Date.civil(2009, 6, 11), [:li])[0] || {})[:name] + + assert_equal "Staatsfeiertag", (Holidays.on(Date.civil(2009, 8, 15), [:li])[0] || {})[:name] + + assert_equal "Allerheiligen", (Holidays.on(Date.civil(2009, 11, 1), [:li])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_lt.rb b/vendor/holidays/test/defs/test_defs_lt.rb new file mode 100644 index 00000000..084bd7ed --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_lt.rb @@ -0,0 +1,63 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/lt.yaml +class LtDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_lt + assert_equal "Naujieji metai", (Holidays.on(Date.civil(2008, 1, 1), [:lt])[0] || {})[:name] + + assert_equal "Valstybės atkūrimo diena", (Holidays.on(Date.civil(2008, 2, 16), [:lt])[0] || {})[:name] + + assert_equal "Nepriklausomybės atkūrimo diena", (Holidays.on(Date.civil(2008, 3, 11), [:lt])[0] || {})[:name] + + assert_equal "Šv. Velykos", (Holidays.on(Date.civil(2008, 3, 23), [:lt])[0] || {})[:name] + + assert_equal "Antroji Velykų diena", (Holidays.on(Date.civil(2008, 3, 24), [:lt])[0] || {})[:name] + + assert_equal "Darbininkų diena", (Holidays.on(Date.civil(2008, 5, 1), [:lt])[0] || {})[:name] + + assert_equal "Joninės", (Holidays.on(Date.civil(2008, 6, 24), [:lt])[0] || {})[:name] + + assert_equal "Valstybės diena", (Holidays.on(Date.civil(2008, 7, 6), [:lt])[0] || {})[:name] + + assert_equal "Žolinė", (Holidays.on(Date.civil(2008, 8, 15), [:lt])[0] || {})[:name] + + assert_equal "Visų šventųjų diena", (Holidays.on(Date.civil(2008, 11, 1), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kūčios", (Holidays.on(Date.civil(2008, 12, 24), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kalėdos", (Holidays.on(Date.civil(2008, 12, 25), [:lt])[0] || {})[:name] + + assert_equal "Antroji Kalėdų diena", (Holidays.on(Date.civil(2008, 12, 26), [:lt])[0] || {})[:name] + + assert_equal "Naujieji metai", (Holidays.on(Date.civil(2012, 1, 1), [:lt])[0] || {})[:name] + + assert_equal "Valstybės atkūrimo diena", (Holidays.on(Date.civil(2012, 2, 16), [:lt])[0] || {})[:name] + + assert_equal "Nepriklausomybės atkūrimo diena", (Holidays.on(Date.civil(2012, 3, 11), [:lt])[0] || {})[:name] + + assert_equal "Šv. Velykos", (Holidays.on(Date.civil(2012, 4, 8), [:lt])[0] || {})[:name] + + assert_equal "Antroji Velykų diena", (Holidays.on(Date.civil(2012, 4, 9), [:lt])[0] || {})[:name] + + assert_equal "Darbininkų diena", (Holidays.on(Date.civil(2012, 5, 1), [:lt])[0] || {})[:name] + + assert_equal "Joninės", (Holidays.on(Date.civil(2012, 6, 24), [:lt])[0] || {})[:name] + + assert_equal "Valstybės diena", (Holidays.on(Date.civil(2012, 7, 6), [:lt])[0] || {})[:name] + + assert_equal "Žolinė", (Holidays.on(Date.civil(2012, 8, 15), [:lt])[0] || {})[:name] + + assert_equal "Visų šventųjų diena", (Holidays.on(Date.civil(2012, 11, 1), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kūčios", (Holidays.on(Date.civil(2012, 12, 24), [:lt])[0] || {})[:name] + + assert_equal "Šv. Kalėdos", (Holidays.on(Date.civil(2012, 12, 25), [:lt])[0] || {})[:name] + + assert_equal "Antroji Kalėdų diena", (Holidays.on(Date.civil(2012, 12, 26), [:lt])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_lu.rb b/vendor/holidays/test/defs/test_defs_lu.rb new file mode 100644 index 00000000..1a0de814 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_lu.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/lu.yaml +class LuDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_lu + assert_equal "Neijoerschdag", (Holidays.on(Date.civil(2008, 1, 1), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Ouschterméindeg", (Holidays.on(Date.civil(2008, 3, 24), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Christi Himmelfaart", (Holidays.on(Date.civil(2008, 5, 1), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Nationalfeierdag", (Holidays.on(Date.civil(2008, 6, 23), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Léiffrawëschdag", (Holidays.on(Date.civil(2008, 8, 15), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Allerhellgen", (Holidays.on(Date.civil(2008, 11, 1), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Chrëschtdag", (Holidays.on(Date.civil(2008, 12, 25), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Stiefesdag", (Holidays.on(Date.civil(2008, 12, 26), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Péngschtméindeg", (Holidays.on(Date.civil(2008, 5, 11), [:lu], [:informal])[0] || {})[:name] + + assert_equal "Dag vun der Aarbecht", (Holidays.on(Date.civil(2019, 5, 1), [:lu])[0] || {})[:name] + + assert_equal "Europadag", (Holidays.on(Date.civil(2019, 5, 9), [:lu])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 5, 9), [:lu])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_lv.rb b/vendor/holidays/test/defs/test_defs_lv.rb new file mode 100644 index 00000000..3cf958b1 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_lv.rb @@ -0,0 +1,90 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/lv.yaml +class LvDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_lv + assert_equal "Jaungada diena", (Holidays.on(Date.civil(2018, 1, 1), [:lv])[0] || {})[:name] +assert_equal "Jaungada diena", (Holidays.on(Date.civil(2019, 1, 1), [:lv])[0] || {})[:name] +assert_equal "Jaungada diena", (Holidays.on(Date.civil(2029, 1, 1), [:lv])[0] || {})[:name] + + assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2018, 3, 30), [:lv])[0] || {})[:name] +assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2019, 4, 19), [:lv])[0] || {})[:name] +assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2039, 4, 8), [:lv])[0] || {})[:name] + + assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2018, 4, 1), [:lv])[0] || {})[:name] +assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2019, 4, 21), [:lv])[0] || {})[:name] +assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2039, 4, 10), [:lv])[0] || {})[:name] + + assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2018, 4, 2), [:lv])[0] || {})[:name] +assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2019, 4, 22), [:lv])[0] || {})[:name] +assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2039, 4, 11), [:lv])[0] || {})[:name] + + assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2018, 5, 1), [:lv])[0] || {})[:name] +assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2019, 5, 1), [:lv])[0] || {})[:name] +assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2029, 5, 1), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2018, 5, 4), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 4), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 6), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Mātes diena", (Holidays.on(Date.civil(2019, 5, 12), [:lv])[0] || {})[:name] +assert_equal "Mātes diena", (Holidays.on(Date.civil(2020, 5, 10), [:lv])[0] || {})[:name] +assert_equal "Mātes diena", (Holidays.on(Date.civil(2029, 5, 13), [:lv])[0] || {})[:name] + + assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2019, 6, 9), [:lv])[0] || {})[:name] +assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2020, 5, 31), [:lv])[0] || {})[:name] +assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2029, 5, 20), [:lv])[0] || {})[:name] + + assert_equal "Līgo diena", (Holidays.on(Date.civil(2019, 6, 23), [:lv])[0] || {})[:name] +assert_equal "Līgo diena", (Holidays.on(Date.civil(2020, 6, 23), [:lv])[0] || {})[:name] +assert_equal "Līgo diena", (Holidays.on(Date.civil(2029, 6, 23), [:lv])[0] || {})[:name] + + assert_equal "Jāņu diena", (Holidays.on(Date.civil(2019, 6, 24), [:lv])[0] || {})[:name] +assert_equal "Jāņu diena", (Holidays.on(Date.civil(2020, 6, 24), [:lv])[0] || {})[:name] +assert_equal "Jāņu diena", (Holidays.on(Date.civil(2029, 6, 24), [:lv])[0] || {})[:name] + + assert_equal "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", (Holidays.on(Date.civil(2018, 7, 8), [:lv])[0] || {})[:name] + + assert_equal "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", (Holidays.on(Date.civil(2018, 7, 9), [:lv], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 7, 8), [:lv])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 7, 9), [:lv])[0] || {})[:name] + + assert_equal "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena", (Holidays.on(Date.civil(2018, 9, 24), [:lv])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 9, 24), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2019, 11, 18), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv])[0] || {})[:name] +assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 18), [:lv])[0] || {})[:name] + + assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 19), [:lv], [:observed])[0] || {})[:name] + + assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2019, 12, 24), [:lv])[0] || {})[:name] +assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2020, 12, 24), [:lv])[0] || {})[:name] +assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2029, 12, 24), [:lv])[0] || {})[:name] + + assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 25), [:lv])[0] || {})[:name] +assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 25), [:lv])[0] || {})[:name] +assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 25), [:lv])[0] || {})[:name] + + assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 26), [:lv])[0] || {})[:name] +assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 26), [:lv])[0] || {})[:name] +assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 26), [:lv])[0] || {})[:name] + + assert_equal "Vecgada diena", (Holidays.on(Date.civil(2019, 12, 31), [:lv])[0] || {})[:name] +assert_equal "Vecgada diena", (Holidays.on(Date.civil(2020, 12, 31), [:lv])[0] || {})[:name] +assert_equal "Vecgada diena", (Holidays.on(Date.civil(2029, 12, 31), [:lv])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ma.rb b/vendor/holidays/test/defs/test_defs_ma.rb new file mode 100644 index 00000000..f327c107 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ma.rb @@ -0,0 +1,29 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ma.yaml +class MaDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ma + assert_equal "Ras l' âm", (Holidays.on(Date.civil(2007, 1, 1), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Takdim watikat al-istiqlal", (Holidays.on(Date.civil(2007, 1, 11), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Eid Ash-Shughl", (Holidays.on(Date.civil(2007, 5, 1), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Eid Al-Ârch", (Holidays.on(Date.civil(2007, 7, 30), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Zikra Oued Ed-Dahab", (Holidays.on(Date.civil(2007, 8, 14), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Thawrat al malik wa shâab", (Holidays.on(Date.civil(2007, 8, 20), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Eid Al Milad", (Holidays.on(Date.civil(2007, 8, 21), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Eid Al Massira Al Khadra", (Holidays.on(Date.civil(2007, 11, 6), [:ma], [:informal])[0] || {})[:name] + + assert_equal "Eid Al Istiqulal", (Holidays.on(Date.civil(2007, 11, 18), [:ma], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_mt_en.rb b/vendor/holidays/test/defs/test_defs_mt_en.rb new file mode 100644 index 00000000..cd0c521f --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_mt_en.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/mt_en.yaml +class Mt_enDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_mt_en + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 1), [:mt_en])[0] || {})[:name] + + assert_equal "Feast of Saint Paul's Shipwreck in Malta", (Holidays.on(Date.civil(2017, 2, 10), [:mt_en])[0] || {})[:name] + + assert_equal "Feast of Saint Joseph", (Holidays.on(Date.civil(2017, 3, 19), [:mt_en])[0] || {})[:name] + + assert_equal "Freedom Day", (Holidays.on(Date.civil(2017, 3, 31), [:mt_en])[0] || {})[:name] + + assert_equal "Worker's Day", (Holidays.on(Date.civil(2017, 5, 1), [:mt_en])[0] || {})[:name] + + assert_equal "Sette Giugno", (Holidays.on(Date.civil(2017, 6, 7), [:mt_en])[0] || {})[:name] + + assert_equal "Feast of Saint Peter & Saint Paul", (Holidays.on(Date.civil(2017, 6, 29), [:mt_en])[0] || {})[:name] + + assert_equal "Feast of the Assumption of Our Lady", (Holidays.on(Date.civil(2017, 8, 15), [:mt_en])[0] || {})[:name] + + assert_equal "Victory Day", (Holidays.on(Date.civil(2017, 9, 8), [:mt_en])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2017, 9, 21), [:mt_en])[0] || {})[:name] + + assert_equal "Feast of the Immaculate Conception", (Holidays.on(Date.civil(2017, 12, 8), [:mt_en])[0] || {})[:name] + + assert_equal "Republic Day", (Holidays.on(Date.civil(2017, 12, 13), [:mt_en])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2017, 12, 25), [:mt_en])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2017, 4, 14), [:mt_en])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2018, 3, 30), [:mt_en])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2019, 4, 19), [:mt_en])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_mt_mt.rb b/vendor/holidays/test/defs/test_defs_mt_mt.rb new file mode 100644 index 00000000..14fe6af5 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_mt_mt.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/mt_mt.yaml +class Mt_mtDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_mt_mt + assert_equal "L-Ewwel tas-Sena", (Holidays.on(Date.civil(2017, 1, 1), [:mt_mt])[0] || {})[:name] + + assert_equal "Nawfraġju ta' San Pawl", (Holidays.on(Date.civil(2017, 2, 10), [:mt_mt])[0] || {})[:name] + + assert_equal "San Ġużepp", (Holidays.on(Date.civil(2017, 3, 19), [:mt_mt])[0] || {})[:name] + + assert_equal "Jum il-Ħelsien", (Holidays.on(Date.civil(2017, 3, 31), [:mt_mt])[0] || {})[:name] + + assert_equal "Jum il-Ħaddiem", (Holidays.on(Date.civil(2017, 5, 1), [:mt_mt])[0] || {})[:name] + + assert_equal "Sette Giugno", (Holidays.on(Date.civil(2017, 6, 7), [:mt_mt])[0] || {})[:name] + + assert_equal "L-Imnarja", (Holidays.on(Date.civil(2017, 6, 29), [:mt_mt])[0] || {})[:name] + + assert_equal "Santa Marija", (Holidays.on(Date.civil(2017, 8, 15), [:mt_mt])[0] || {})[:name] + + assert_equal "Jum il-Vitorja", (Holidays.on(Date.civil(2017, 9, 8), [:mt_mt])[0] || {})[:name] + + assert_equal "Jum l-Indipendenza", (Holidays.on(Date.civil(2017, 9, 21), [:mt_mt])[0] || {})[:name] + + assert_equal "Il-Kunċizzjoni", (Holidays.on(Date.civil(2017, 12, 8), [:mt_mt])[0] || {})[:name] + + assert_equal "Jum ir-Repubblika", (Holidays.on(Date.civil(2017, 12, 13), [:mt_mt])[0] || {})[:name] + + assert_equal "Il-Milied", (Holidays.on(Date.civil(2017, 12, 25), [:mt_mt])[0] || {})[:name] + + assert_equal "Il-Ġimgħa l-Kbira", (Holidays.on(Date.civil(2017, 4, 14), [:mt_mt])[0] || {})[:name] +assert_equal "Il-Ġimgħa l-Kbira", (Holidays.on(Date.civil(2018, 3, 30), [:mt_mt])[0] || {})[:name] +assert_equal "Il-Ġimgħa l-Kbira", (Holidays.on(Date.civil(2019, 4, 19), [:mt_mt])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_mx.rb b/vendor/holidays/test/defs/test_defs_mx.rb new file mode 100644 index 00000000..907bf60e --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_mx.rb @@ -0,0 +1,47 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/mx.yaml, definitions/northamericainformal.yaml +class MxDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_mx + assert_equal "Año nuevo", (Holidays.on(Date.civil(2007, 1, 1), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día de la Constitución", (Holidays.on(Date.civil(2007, 2, 5), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2007, 5, 1), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Cinco de Mayo", (Holidays.on(Date.civil(2007, 5, 5), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2007, 9, 16), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Todos los Santos", (Holidays.on(Date.civil(2007, 11, 1), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Los Fieles Difuntos", (Holidays.on(Date.civil(2007, 11, 2), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día de la Revolución", (Holidays.on(Date.civil(2007, 11, 19), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2007, 12, 25), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Groundhog Day", (Holidays.on(Date.civil(2013, 2, 2), [:us], [:informal])[0] || {})[:name] + + assert_equal "Valentine's Day", (Holidays.on(Date.civil(2013, 2, 14), [:us], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2013, 3, 17), [:us], [:informal])[0] || {})[:name] + + assert_equal "April Fool's Day", (Holidays.on(Date.civil(2013, 4, 1), [:us], [:informal])[0] || {})[:name] + + assert_equal "Earth Day", (Holidays.on(Date.civil(2013, 4, 22), [:us], [:informal])[0] || {})[:name] + + assert_equal "Mother's Day", (Holidays.on(Date.civil(2013, 5, 12), [:us], [:informal])[0] || {})[:name] + + assert_equal "Armed Forces Day", (Holidays.on(Date.civil(2013, 5, 18), [:us], [:informal])[0] || {})[:name] + + assert_equal "Father's Day", (Holidays.on(Date.civil(2013, 6, 16), [:us], [:informal])[0] || {})[:name] + + assert_equal "Halloween", (Holidays.on(Date.civil(2013, 10, 31), [:us], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_my.rb b/vendor/holidays/test/defs/test_defs_my.rb new file mode 100644 index 00000000..a31d9d74 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_my.rb @@ -0,0 +1,23 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/my.yaml +class MyDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_my + assert_equal "New Year's Day", (Holidays.on(Date.civil(2016, 1, 1), [:my], [:informal])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2016, 5, 1), [:my], [:informal])[0] || {})[:name] + + assert_equal "Agong's Birthday", (Holidays.on(Date.civil(2016, 6, 4), [:my], [:informal])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2016, 8, 31), [:my], [:informal])[0] || {})[:name] + + assert_equal "Malaysia Day", (Holidays.on(Date.civil(2016, 9, 16), [:my], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 25), [:my], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_nerc.rb b/vendor/holidays/test/defs/test_defs_nerc.rb new file mode 100644 index 00000000..106f668d --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_nerc.rb @@ -0,0 +1,29 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/nerc.yaml +class NercDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_nerc + assert_equal "New Year's Day", (Holidays.on(Date.civil(2013, 1, 1), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2013, 5, 27), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2013, 7, 4), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2010, 7, 5), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2013, 9, 2), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2013, 11, 28), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2013, 12, 25), [:nerc], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2011, 12, 26), [:nerc], [:observed])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ng.rb b/vendor/holidays/test/defs/test_defs_ng.rb new file mode 100644 index 00000000..2c405523 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ng.rb @@ -0,0 +1,29 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ng.yaml +class NgDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ng + assert_equal "Good Friday", (Holidays.on(Date.civil(2008, 3, 21), [:ng])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:ng])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:ng])[0] || {})[:name] + + assert_equal "Workers' Day", (Holidays.on(Date.civil(2008, 5, 1), [:ng])[0] || {})[:name] + + assert_equal "Children's Day", (Holidays.on(Date.civil(2008, 5, 27), [:ng], [:informal])[0] || {})[:name] + + assert_equal "Democracy Day", (Holidays.on(Date.civil(2019, 6, 12), [:ng])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2008, 10, 1), [:ng])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:ng])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2008, 12, 26), [:ng])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_nl.rb b/vendor/holidays/test/defs/test_defs_nl.rb new file mode 100644 index 00000000..bc66af8f --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_nl.rb @@ -0,0 +1,33 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/nl.yaml +class NlDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_nl + assert_equal "Nieuwjaarsdag", (Holidays.on(Date.civil(2008, 1, 1), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Goede Vrijdag", (Holidays.on(Date.civil(2008, 3, 21), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Eerste Paasdag", (Holidays.on(Date.civil(2008, 3, 23), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Tweede Paasdag", (Holidays.on(Date.civil(2008, 3, 24), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Koningsdag", (Holidays.on(Date.civil(2008, 4, 27), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Hemelvaartsdag", (Holidays.on(Date.civil(2008, 5, 1), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Bevrijdingsdag", (Holidays.on(Date.civil(2008, 5, 5), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Eerste Pinksterdag", (Holidays.on(Date.civil(2008, 5, 11), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Tweede Pinksterdag", (Holidays.on(Date.civil(2008, 5, 12), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Eerste Kerstdag", (Holidays.on(Date.civil(2008, 12, 25), [:nl], [:informal])[0] || {})[:name] + + assert_equal "Tweede Kerstdag", (Holidays.on(Date.civil(2008, 12, 26), [:nl], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_no.rb b/vendor/holidays/test/defs/test_defs_no.rb new file mode 100644 index 00000000..ad225922 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_no.rb @@ -0,0 +1,43 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/no.yaml +class NoDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_no + assert_equal "Nyttårsdag", (Holidays.on(Date.civil(2010, 1, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. mai", (Holidays.on(Date.civil(2010, 5, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "17. mai", (Holidays.on(Date.civil(2010, 5, 17), [:no], [:informal])[0] || {})[:name] + + assert_equal "Julaften", (Holidays.on(Date.civil(2010, 12, 24), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. juledag", (Holidays.on(Date.civil(2010, 12, 25), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. juledag", (Holidays.on(Date.civil(2010, 12, 26), [:no], [:informal])[0] || {})[:name] + + assert_equal "Nyttårsaften", (Holidays.on(Date.civil(2010, 12, 31), [:no], [:informal])[0] || {})[:name] + + assert_equal "Fastelavn", (Holidays.on(Date.civil(2010, 2, 14), [:no], [:informal])[0] || {})[:name] + + assert_equal "Palmesøndag", (Holidays.on(Date.civil(2010, 3, 28), [:no], [:informal])[0] || {})[:name] + + assert_equal "Skjærtorsdag", (Holidays.on(Date.civil(2010, 4, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "Langfredag", (Holidays.on(Date.civil(2010, 4, 2), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. påskedag", (Holidays.on(Date.civil(2010, 4, 4), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. påskedag", (Holidays.on(Date.civil(2010, 4, 5), [:no], [:informal])[0] || {})[:name] + + assert_equal "Kristi Himmelfartsdag", (Holidays.on(Date.civil(2010, 5, 13), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. pinsedag", (Holidays.on(Date.civil(2010, 5, 23), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. pinsedag", (Holidays.on(Date.civil(2010, 5, 24), [:no], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_northamerica.rb b/vendor/holidays/test/defs/test_defs_northamerica.rb new file mode 100644 index 00000000..9664a3f5 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_northamerica.rb @@ -0,0 +1,644 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ca.yaml, definitions/mx.yaml, definitions/us.yaml, definitions/northamericainformal.yaml +class NorthamericaDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_northamerica + assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2008, 3, 21), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2013, 3, 31), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2008, 3, 24), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2008, 7, 1), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2008, 9, 1), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:ca], [:informal])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(1990, 2, 19), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_ab])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1970, 2, 16), [:ca_ab])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1988, 2, 15), [:ca_ab])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1989, 2, 20), [:ca_ab])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2007, 2, 19), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1970, 2, 16), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1988, 2, 15), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1989, 2, 20), [:ca_sk])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2006, 2, 20), [:ca_sk])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2008, 2, 18), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1970, 2, 16), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1988, 2, 15), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(1989, 2, 20), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2006, 2, 20), [:ca_on])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2007, 2, 19), [:ca_on])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2013, 2, 11), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2014, 2, 10), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2018, 2, 12), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2000, 2, 14), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 14), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2012, 2, 13), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 2, 11), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2044, 2, 8), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2019, 2, 18), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2020, 2, 17), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2000, 2, 21), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 21), [:ca_bc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 2, 19), [:ca_bc])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2018, 2, 19), [:ca_nb])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2019, 2, 18), [:ca_nb])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 2, 18), [:ca_nb])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 2, 20), [:ca_nb])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2015, 2, 16), [:ca_ns])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2016, 2, 15), [:ca_ns])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2017, 2, 20), [:ca_ns])[0] || {})[:name] + + assert_equal "Nova Scotia Heritage Day", (Holidays.on(Date.civil(2044, 2, 15), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2000, 2, 21), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2012, 2, 20), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2013, 2, 18), [:ca_ns])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2014, 2, 17), [:ca_ns])[0] || {})[:name] + + assert_equal "Islander Day", (Holidays.on(Date.civil(2013, 2, 18), [:ca_pe])[0] || {})[:name] + + assert_equal "Islander Day", (Holidays.on(Date.civil(2014, 2, 17), [:ca_pe])[0] || {})[:name] + + assert_equal "Victoria Day", (Holidays.on(Date.civil(2004, 5, 24), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2005, 5, 23), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2006, 5, 22), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2007, 5, 21), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] +assert_equal "Victoria Day", (Holidays.on(Date.civil(2008, 5, 19), [:ca_ab, :ca_bc, :ca_mb, :ca_nt, :ca_nu, :ca_on, :ca_sk, :ca_yt])[0] || {})[:name] + + assert_equal "B.C. Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_bc])[0] || {})[:name] + + assert_equal "Saskatchewan Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_sk])[0] || {})[:name] + + assert_equal "Heritage Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_ab], [:informal])[0] || {})[:name] + + assert_equal "Natal Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_ns], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_on], [:informal])[0] || {})[:name] +assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_on], [:informal])[0] || {})[:name] +assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_on], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_nt])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_nu])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2013, 8, 5), [:ca_pe], [:informal])[0] || {})[:name] + + assert_equal "New Brunswick Day", (Holidays.on(Date.civil(2013, 8, 5), [:ca_nb])[0] || {})[:name] + + assert_equal "B.C. Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_bc])[0] || {})[:name] + + assert_equal "Saskatchewan Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_sk])[0] || {})[:name] + + assert_equal "Heritage Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_ab], [:informal])[0] || {})[:name] + + assert_equal "Natal Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_ns], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_nt])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_nu])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2014, 8, 4), [:ca_pe], [:informal])[0] || {})[:name] + + assert_equal "New Brunswick Day", (Holidays.on(Date.civil(2014, 8, 4), [:ca_nb])[0] || {})[:name] + + assert_equal "B.C. Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_bc])[0] || {})[:name] + + assert_equal "Saskatchewan Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_sk])[0] || {})[:name] + + assert_equal "Heritage Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_ab], [:informal])[0] || {})[:name] + + assert_equal "Natal Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_ns], [:informal])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_nt])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_nu])[0] || {})[:name] + + assert_equal "Civic Holiday", (Holidays.on(Date.civil(2015, 8, 3), [:ca_pe], [:informal])[0] || {})[:name] + + assert_equal "New Brunswick Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_nb])[0] || {})[:name] + + assert_equal "Remembrance Day", (Holidays.on(Date.civil(2010, 11, 11), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt], [:observed])[0] || {})[:name] +assert_equal "Remembrance Day", (Holidays.on(Date.civil(2012, 11, 12), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt], [:observed])[0] || {})[:name] +assert_equal "Remembrance Day", (Holidays.on(Date.civil(2017, 11, 13), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt], [:observed])[0] || {})[:name] + + assert_equal "Remembrance Day", (Holidays.on(Date.civil(2016, 11, 11), [:ca_ab, :ca_sk, :ca_bc, :ca_pe, :ca_nl, :ca_nt, :ca_nu, :ca_nb, :ca_yt])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2011, 1, 3), [:ca], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:ca], [:observed])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2016, 1, 1), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2011, 7, 1), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2012, 7, 2), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Canada Day", (Holidays.on(Date.civil(2017, 7, 3), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 25), [:ca])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2018, 12, 25), [:ca])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 25), [:ca])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2022, 12, 25), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 24), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2012, 12, 25), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 24), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:ca], [:observed])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2010, 12, 28), [:ca_on], [:observed])[0] || {})[:name] +assert_equal "Boxing Day", (Holidays.on(Date.civil(2012, 12, 26), [:ca_on], [:observed])[0] || {})[:name] +assert_equal "Boxing Day", (Holidays.on(Date.civil(2015, 12, 28), [:ca_on], [:observed])[0] || {})[:name] +assert_equal "Boxing Day", (Holidays.on(Date.civil(2016, 12, 27), [:ca_on], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_equal "National Aboriginal Day", (Holidays.on(Date.civil(2017, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_equal "National Aboriginal Day", (Holidays.on(Date.civil(2018, 6, 21), [:ca_yt])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2019, 8, 5), [:ca_mb], [:informal])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2020, 8, 3), [:ca_mb], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 8, 3), [:ca_mb])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2015, 8, 3), [:ca_mb], [:informal])[0] || {})[:name] + + assert_equal "Terry Fox Day", (Holidays.on(Date.civil(2045, 8, 7), [:ca_mb], [:informal])[0] || {})[:name] + + assert_equal "Nunavut Day", (Holidays.on(Date.civil(2020, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_equal "Nunavut Day", (Holidays.on(Date.civil(2021, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2019, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2018, 7, 9), [:ca_nu])[0] || {})[:name] + + assert_equal "Año nuevo", (Holidays.on(Date.civil(2007, 1, 1), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día de la Constitución", (Holidays.on(Date.civil(2007, 2, 5), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2007, 5, 1), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Cinco de Mayo", (Holidays.on(Date.civil(2007, 5, 5), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2007, 9, 16), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Todos los Santos", (Holidays.on(Date.civil(2007, 11, 1), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Los Fieles Difuntos", (Holidays.on(Date.civil(2007, 11, 2), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Día de la Revolución", (Holidays.on(Date.civil(2007, 11, 19), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2007, 12, 25), [:mx], [:informal])[0] || {})[:name] + + assert_equal "Shrove Tuesday", (Holidays.on(Date.civil(2017, 2, 28), [:us_fl])[0] || {})[:name] +assert_equal "Shrove Tuesday", (Holidays.on(Date.civil(2018, 2, 13), [:us_fl])[0] || {})[:name] +assert_equal "Shrove Tuesday", (Holidays.on(Date.civil(2019, 3, 5), [:us_fl])[0] || {})[:name] + + assert_equal "Mardi Gras Day", (Holidays.on(Date.civil(2017, 2, 28), [:us_la])[0] || {})[:name] +assert_equal "Mardi Gras Day", (Holidays.on(Date.civil(2018, 2, 13), [:us_la])[0] || {})[:name] +assert_equal "Mardi Gras Day", (Holidays.on(Date.civil(2019, 3, 5), [:us_la])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 2, 28), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 2, 13), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2017, 4, 14), [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2018, 3, 30), [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2019, 4, 19), [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2017, 4, 14), [:us], [:informal])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2018, 3, 30), [:us], [:informal])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2019, 4, 19), [:us], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 2, 28), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 2, 13), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 16), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 4, 1), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 4, 21), [:us])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2017, 4, 16), [:us], [:informal])[0] || {})[:name] +assert_equal "Easter Sunday", (Holidays.on(Date.civil(2018, 4, 1), [:us], [:informal])[0] || {})[:name] +assert_equal "Easter Sunday", (Holidays.on(Date.civil(2019, 4, 21), [:us], [:informal])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 1), [:us])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:us], [:observed])[0] || {})[:name] + + assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2017, 1, 16), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2018, 1, 15), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2019, 1, 21), [:us])[0] || {})[:name] + + assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2016, 1, 18), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2017, 1, 16), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2018, 1, 15), [:us])[0] || {})[:name] + + assert_equal "Martin Luther King's and Robert E. Lee's Birthdays", (Holidays.on(Date.civil(2016, 1, 18), [:us_ms])[0] || {})[:name] +assert_equal "Martin Luther King's and Robert E. Lee's Birthdays", (Holidays.on(Date.civil(2017, 1, 16), [:us_ms])[0] || {})[:name] +assert_equal "Martin Luther King's and Robert E. Lee's Birthdays", (Holidays.on(Date.civil(2018, 1, 15), [:us_ms])[0] || {})[:name] + + assert_equal "Idaho Human Rights Day", (Holidays.on(Date.civil(2016, 1, 18), [:us_id])[0] || {})[:name] +assert_equal "Idaho Human Rights Day", (Holidays.on(Date.civil(2017, 1, 16), [:us_id])[0] || {})[:name] +assert_equal "Idaho Human Rights Day", (Holidays.on(Date.civil(2018, 1, 15), [:us_id])[0] || {})[:name] + + assert_equal "Civil Rights Day", (Holidays.on(Date.civil(2016, 1, 18), [:us_ar])[0] || {})[:name] +assert_equal "Civil Rights Day", (Holidays.on(Date.civil(2017, 1, 16), [:us_ar])[0] || {})[:name] +assert_equal "Civil Rights Day", (Holidays.on(Date.civil(2018, 1, 15), [:us_ar])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 1, 20), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 1, 20), [:us])[0] || {})[:name] + + assert_equal "Inauguration Day", (Holidays.on(Date.civil(2017, 1, 20), [:us_tx, :us_dc, :us_la, :us_md, :us_va])[0] || {})[:name] +assert_equal "Inauguration Day", (Holidays.on(Date.civil(2021, 1, 20), [:us_tx, :us_dc, :us_la, :us_md, :us_va])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 1, 13), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 1, 12), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 1, 18), [:us])[0] || {})[:name] + + assert_equal "Lee-Jackson Day", (Holidays.on(Date.civil(2017, 1, 13), [:us_va])[0] || {})[:name] +assert_equal "Lee-Jackson Day", (Holidays.on(Date.civil(2018, 1, 12), [:us_va])[0] || {})[:name] +assert_equal "Lee-Jackson Day", (Holidays.on(Date.civil(2019, 1, 18), [:us_va])[0] || {})[:name] + + assert_equal "Confederate Heroes Day", (Holidays.on(Date.civil(2017, 1, 19), [:us_tx])[0] || {})[:name] + + assert_equal "Presidents' Day", (Holidays.on(Date.civil(2008, 2, 18), [:us])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2017, 2, 20), [:us])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2018, 2, 19), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 6), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 5), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 4), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 7), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 6), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name] + + assert_equal "Town Meeting Day", (Holidays.on(Date.civil(2017, 3, 7), [:us_vt])[0] || {})[:name] +assert_equal "Town Meeting Day", (Holidays.on(Date.civil(2018, 3, 6), [:us_vt])[0] || {})[:name] +assert_equal "Town Meeting Day", (Holidays.on(Date.civil(2019, 3, 5), [:us_vt])[0] || {})[:name] + + assert_equal "Texas Independence Day", (Holidays.on(Date.civil(2017, 3, 2), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 27), [:us], [:observed])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 26), [:us], [:observed])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2022, 3, 25), [:us], [:observed])[0] || {})[:name] + + assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2017, 3, 27), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2018, 3, 26), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2022, 3, 25), [:us_hi], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 26), [:us])[0] || {})[:name] + + assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2017, 3, 26), [:us_hi])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 26), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 25), [:us])[0] || {})[:name] + + assert_equal "Seward's Day", (Holidays.on(Date.civil(2017, 3, 27), [:us_ak])[0] || {})[:name] +assert_equal "Seward's Day", (Holidays.on(Date.civil(2018, 3, 26), [:us_ak])[0] || {})[:name] +assert_equal "Seward's Day", (Holidays.on(Date.civil(2019, 3, 25), [:us_ak])[0] || {})[:name] + + assert_equal "César Chávez Day", (Holidays.on(Date.civil(2017, 3, 31), [:us_ca])[0] || {})[:name] + + assert_equal "Emancipation Day", (Holidays.on(Date.civil(2023, 4, 17), [:us_dc, :us_ca], [:observed])[0] || {})[:name] +assert_equal "Emancipation Day", (Holidays.on(Date.civil(2022, 4, 15), [:us_dc, :us_ca], [:observed])[0] || {})[:name] +assert_equal "Emancipation Day", (Holidays.on(Date.civil(2028, 4, 17), [:us_dc, :us_ca], [:observed])[0] || {})[:name] + + assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 4, 16), [:us_dc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 17), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 4, 16), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 4, 15), [:us])[0] || {})[:name] + + assert_equal "Patriots' Day", (Holidays.on(Date.civil(2017, 4, 17), [:us_me, :us_ma])[0] || {})[:name] +assert_equal "Patriots' Day", (Holidays.on(Date.civil(2018, 4, 16), [:us_me, :us_ma])[0] || {})[:name] +assert_equal "Patriots' Day", (Holidays.on(Date.civil(2019, 4, 15), [:us_me, :us_ma])[0] || {})[:name] + + assert_equal "San Jacinto Day", (Holidays.on(Date.civil(2017, 4, 21), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 24), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 4, 30), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 4, 29), [:us])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2017, 4, 24), [:us_al, :us_ms])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2018, 4, 30), [:us_al, :us_ms])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2019, 4, 29), [:us_al, :us_ms])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 4, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 4, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2026, 4, 27), [:us])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2015, 4, 27), [:us_fl], [:observed])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2020, 4, 27), [:us_fl], [:observed])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2026, 4, 27), [:us_fl], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 26), [:us])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2017, 4, 26), [:us_fl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 4, 20), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 4, 26), [:us])[0] || {})[:name] + + assert_equal "State Holiday", (Holidays.on(Date.civil(2015, 4, 20), [:us_ga])[0] || {})[:name] +assert_equal "State Holiday", (Holidays.on(Date.civil(2021, 4, 26), [:us_ga])[0] || {})[:name] + + assert_equal "Arbor Day", (Holidays.on(Date.civil(2017, 4, 28), [:us_ne])[0] || {})[:name] + + assert_equal "Truman Day", (Holidays.on(Date.civil(2017, 5, 8), [:us_mo])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2017, 5, 10), [:us_sc])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2017, 5, 29), [:us])[0] || {})[:name] +assert_equal "Memorial Day", (Holidays.on(Date.civil(2018, 5, 28), [:us])[0] || {})[:name] +assert_equal "Memorial Day", (Holidays.on(Date.civil(2019, 5, 27), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 5), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 6, 4), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 6, 3), [:us])[0] || {})[:name] + + assert_equal "Jefferson Davis' Birthday", (Holidays.on(Date.civil(2017, 6, 5), [:us_al])[0] || {})[:name] +assert_equal "Jefferson Davis' Birthday", (Holidays.on(Date.civil(2018, 6, 4), [:us_al])[0] || {})[:name] +assert_equal "Jefferson Davis' Birthday", (Holidays.on(Date.civil(2019, 6, 3), [:us_al])[0] || {})[:name] + + assert_equal "Birthday of Jefferson Davis", (Holidays.on(Date.civil(2017, 6, 3), [:us_fl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 12), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 6, 11), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2022, 6, 10), [:us])[0] || {})[:name] + + assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2017, 6, 12), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2018, 6, 11), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2022, 6, 10), [:us_hi], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 11), [:us])[0] || {})[:name] + + assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2017, 6, 11), [:us_hi])[0] || {})[:name] + + assert_equal "Emancipation Day in Texas", (Holidays.on(Date.civil(2017, 6, 19), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 20), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 6, 19), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 6, 21), [:us])[0] || {})[:name] + + assert_equal "West Virginia Day", (Holidays.on(Date.civil(2017, 6, 20), [:us_wv], [:observed])[0] || {})[:name] +assert_equal "West Virginia Day", (Holidays.on(Date.civil(2020, 6, 19), [:us_wv], [:observed])[0] || {})[:name] +assert_equal "West Virginia Day", (Holidays.on(Date.civil(2021, 6, 21), [:us_wv], [:observed])[0] || {})[:name] + + assert_equal "West Virginia Day", (Holidays.on(Date.civil(2017, 6, 20), [:us_wv])[0] || {})[:name] + + assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 7, 3), [:us_vi])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2020, 7, 4), [:us, :us_va])[0] || {})[:name] +assert_equal "Independence Day", (Holidays.on(Date.civil(2021, 7, 4), [:us, :us_va])[0] || {})[:name] +assert_equal "Independence Day", (Holidays.on(Date.civil(2026, 7, 4), [:us, :us_va])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 7, 3), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 7, 5), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2026, 7, 3), [:us])[0] || {})[:name] + + assert_equal "Independence Day (Holiday)", (Holidays.on(Date.civil(2020, 7, 3), [:us_va])[0] || {})[:name] +assert_equal "Independence Day (Holiday)", (Holidays.on(Date.civil(2021, 7, 5), [:us_va])[0] || {})[:name] +assert_equal "Independence Day (Holiday)", (Holidays.on(Date.civil(2026, 7, 3), [:us_va])[0] || {})[:name] + + assert_equal "Pioneer Day", (Holidays.on(Date.civil(2020, 7, 24), [:us_ut])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 8, 14), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 8, 10), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 8, 9), [:us])[0] || {})[:name] + + assert_equal "Victory Day", (Holidays.on(Date.civil(2017, 8, 14), [:us_ri])[0] || {})[:name] +assert_equal "Victory Day", (Holidays.on(Date.civil(2020, 8, 10), [:us_ri])[0] || {})[:name] +assert_equal "Victory Day", (Holidays.on(Date.civil(2021, 8, 9), [:us_ri])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 8, 16), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 8, 17), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2025, 8, 15), [:us])[0] || {})[:name] + + assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2017, 8, 16), [:us_vt], [:observed])[0] || {})[:name] +assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2020, 8, 17), [:us_vt], [:observed])[0] || {})[:name] +assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2025, 8, 15), [:us_vt], [:observed])[0] || {})[:name] + + assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2017, 8, 16), [:us_vt])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 8, 18), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 8, 21), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2025, 8, 15), [:us])[0] || {})[:name] + + assert_equal "Statehood Day", (Holidays.on(Date.civil(2017, 8, 18), [:us_hi])[0] || {})[:name] +assert_equal "Statehood Day", (Holidays.on(Date.civil(2020, 8, 21), [:us_hi])[0] || {})[:name] +assert_equal "Statehood Day", (Holidays.on(Date.civil(2025, 8, 15), [:us_hi])[0] || {})[:name] + + assert_equal "Lyndon Baines Johnson Day", (Holidays.on(Date.civil(2017, 8, 27), [:us_tx])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2017, 9, 4), [:us])[0] || {})[:name] +assert_equal "Labor Day", (Holidays.on(Date.civil(2018, 9, 3), [:us])[0] || {})[:name] +assert_equal "Labor Day", (Holidays.on(Date.civil(2019, 9, 2), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 9, 21), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 9, 10), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 9, 30), [:us])[0] || {})[:name] + + assert_equal "Rosh Hashanah", (Holidays.on(Date.civil(2017, 9, 21), [:us_tx])[0] || {})[:name] +assert_equal "Rosh Hashanah", (Holidays.on(Date.civil(2018, 9, 10), [:us_tx])[0] || {})[:name] +assert_equal "Rosh Hashanah", (Holidays.on(Date.civil(2019, 9, 30), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 9, 30), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 9, 19), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 9), [:us])[0] || {})[:name] + + assert_equal "Yom Kippur", (Holidays.on(Date.civil(2017, 9, 30), [:us_tx])[0] || {})[:name] +assert_equal "Yom Kippur", (Holidays.on(Date.civil(2018, 9, 19), [:us_tx])[0] || {})[:name] +assert_equal "Yom Kippur", (Holidays.on(Date.civil(2019, 10, 9), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 10, 9), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 10, 8), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 14), [:us])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2017, 10, 9), [: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])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2018, 10, 8), [: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])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2019, 10, 14), [: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])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2017, 10, 9), [: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], [:informal])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2018, 10, 8), [: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], [:informal])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2019, 10, 14), [: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], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 10, 9), [: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])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 10, 8), [: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])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 14), [: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])[0] || {})[:name] + + assert_equal "Alaska Day", (Holidays.on(Date.civil(2017, 10, 18), [:us_ak])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 10, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 10, 26), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 25), [:us])[0] || {})[:name] + + assert_equal "Nevada Day", (Holidays.on(Date.civil(2017, 10, 27), [:us_nv])[0] || {})[:name] +assert_equal "Nevada Day", (Holidays.on(Date.civil(2018, 10, 26), [:us_nv])[0] || {})[:name] +assert_equal "Nevada Day", (Holidays.on(Date.civil(2019, 10, 25), [:us_nv])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 11, 7), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 11, 6), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 11, 2), [:us])[0] || {})[:name] + + assert_equal "Election Day", (Holidays.on(Date.civil(2017, 11, 7), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name] +assert_equal "Election Day", (Holidays.on(Date.civil(2018, 11, 6), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name] +assert_equal "Election Day", (Holidays.on(Date.civil(2021, 11, 2), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2017, 11, 10), [:us], [:observed])[0] || {})[:name] +assert_equal "Veterans Day", (Holidays.on(Date.civil(2018, 11, 12), [:us], [:observed])[0] || {})[:name] +assert_equal "Veterans Day", (Holidays.on(Date.civil(2019, 11, 11), [:us], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2017, 11, 11), [:us])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2017, 11, 23), [:us])[0] || {})[:name] +assert_equal "Thanksgiving", (Holidays.on(Date.civil(2018, 11, 22), [:us])[0] || {})[:name] +assert_equal "Thanksgiving", (Holidays.on(Date.civil(2019, 11, 28), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 11, 24), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 11, 23), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 11, 29), [:us])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2017, 11, 24), [:us_nv])[0] || {})[:name] +assert_equal "Family Day", (Holidays.on(Date.civil(2018, 11, 23), [:us_nv])[0] || {})[:name] +assert_equal "Family Day", (Holidays.on(Date.civil(2019, 11, 29), [:us_nv])[0] || {})[:name] + + assert_equal "State Holiday", (Holidays.on(Date.civil(2017, 11, 24), [:us_ga])[0] || {})[:name] +assert_equal "State Holiday", (Holidays.on(Date.civil(2018, 11, 23), [:us_ga])[0] || {})[:name] +assert_equal "State Holiday", (Holidays.on(Date.civil(2019, 11, 29), [:us_ga])[0] || {})[:name] + + assert_equal "Presidents' Day", (Holidays.on(Date.civil(2017, 11, 24), [:us_nm])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2018, 11, 23), [:us_nm])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2019, 11, 29), [:us_nm])[0] || {})[:name] + + assert_equal "Lincoln's Birthday", (Holidays.on(Date.civil(2017, 11, 24), [:us_in])[0] || {})[:name] +assert_equal "Lincoln's Birthday", (Holidays.on(Date.civil(2018, 11, 23), [:us_in])[0] || {})[:name] +assert_equal "Lincoln's Birthday", (Holidays.on(Date.civil(2019, 11, 29), [:us_in])[0] || {})[:name] + + assert_equal "American Indian Heritage Day", (Holidays.on(Date.civil(2017, 11, 24), [:us_md])[0] || {})[:name] +assert_equal "American Indian Heritage Day", (Holidays.on(Date.civil(2018, 11, 23), [:us_md])[0] || {})[:name] +assert_equal "American Indian Heritage Day", (Holidays.on(Date.civil(2019, 11, 29), [:us_md])[0] || {})[:name] + + assert_equal "Day after Thanksgiving (Black Friday)", (Holidays.on(Date.civil(2017, 11, 24), [: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])[0] || {})[:name] +assert_equal "Day after Thanksgiving (Black Friday)", (Holidays.on(Date.civil(2018, 11, 23), [: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])[0] || {})[:name] +assert_equal "Day after Thanksgiving (Black Friday)", (Holidays.on(Date.civil(2019, 11, 29), [: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])[0] || {})[:name] + + assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2022, 12, 23), [:us_mi, :us_sc, :us_va])[0] || {})[:name] +assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2023, 12, 22), [:us_mi, :us_sc, :us_va])[0] || {})[:name] +assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2028, 12, 22), [:us_mi, :us_sc, :us_va])[0] || {})[:name] + + assert_equal "Christmas Eve", (Holidays.on(Date.civil(2017, 12, 24), [:us_ar, :us_mi, :us_nc, :us_va, :us_sc, :us_tx, :us_wi])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 12, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2022, 12, 26), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2027, 12, 27), [:us])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 24), [:us], [:observed])[0] || {})[:name] +assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:us], [:observed])[0] || {})[:name] +assert_equal "Christmas Day", (Holidays.on(Date.civil(2027, 12, 24), [:us], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2017, 12, 25), [:us])[0] || {})[:name] + + assert_equal "Day after Christmas", (Holidays.on(Date.civil(2017, 12, 26), [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx])[0] || {})[:name] + + assert_equal "New Year's Eve", (Holidays.on(Date.civil(2017, 12, 31), [:us_mi, :us_wi])[0] || {})[:name] + + assert_equal "Groundhog Day", (Holidays.on(Date.civil(2013, 2, 2), [:us], [:informal])[0] || {})[:name] + + assert_equal "Valentine's Day", (Holidays.on(Date.civil(2013, 2, 14), [:us], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2013, 3, 17), [:us], [:informal])[0] || {})[:name] + + assert_equal "April Fool's Day", (Holidays.on(Date.civil(2013, 4, 1), [:us], [:informal])[0] || {})[:name] + + assert_equal "Earth Day", (Holidays.on(Date.civil(2013, 4, 22), [:us], [:informal])[0] || {})[:name] + + assert_equal "Mother's Day", (Holidays.on(Date.civil(2013, 5, 12), [:us], [:informal])[0] || {})[:name] + + assert_equal "Armed Forces Day", (Holidays.on(Date.civil(2013, 5, 18), [:us], [:informal])[0] || {})[:name] + + assert_equal "Father's Day", (Holidays.on(Date.civil(2013, 6, 16), [:us], [:informal])[0] || {})[:name] + + assert_equal "Halloween", (Holidays.on(Date.civil(2013, 10, 31), [:us], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_nyse.rb b/vendor/holidays/test/defs/test_defs_nyse.rb new file mode 100644 index 00000000..4e30db85 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_nyse.rb @@ -0,0 +1,39 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/nyse.yaml +class NyseDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_nyse + assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:nyse])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:nyse], [:observed])[0] || {})[:name] +assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:nyse], [:observed])[0] || {})[:name] +assert_equal "New Year's Day", (Holidays.on(Date.civil(2011, 1, 1), [:nyse], [:observed])[0] || {})[:name] +assert_equal "New Year's Day", (Holidays.on(Date.civil(2006, 1, 2), [:nyse], [:observed])[0] || {})[:name] + + assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2008, 1, 21), [:nyse])[0] || {})[:name] + + assert_equal "Presidents' Day", (Holidays.on(Date.civil(2008, 2, 18), [:nyse])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2008, 3, 21), [:nyse])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2008, 5, 26), [:nyse])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2008, 7, 4), [:nyse])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2008, 9, 1), [:nyse])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2008, 11, 27), [:nyse])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:nyse])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:nyse], [:observed])[0] || {})[:name] +assert_equal "New Year's Day", (Holidays.on(Date.civil(2012, 1, 2), [:nyse], [:observed])[0] || {})[:name] +assert_equal "New Year's Day", (Holidays.on(Date.civil(2011, 1, 1), [:nyse], [:observed])[0] || {})[:name] +assert_equal "New Year's Day", (Holidays.on(Date.civil(2006, 1, 2), [:nyse], [:observed])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_nz.rb b/vendor/holidays/test/defs/test_defs_nz.rb new file mode 100644 index 00000000..f7292aa5 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_nz.rb @@ -0,0 +1,59 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/nz.yaml +class NzDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_nz + assert_equal "New Year's Day", (Holidays.on(Date.civil(2007, 1, 1), [:nz], [:informal])[0] || {})[:name] + + assert_equal "Day after New Year's Day", (Holidays.on(Date.civil(2007, 1, 2), [:nz], [:informal])[0] || {})[:name] + + assert_equal "Waitangi Day", (Holidays.on(Date.civil(2007, 2, 6), [:nz], [:informal])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2007, 4, 6), [:nz], [:informal])[0] || {})[:name] + + assert_equal "Easter Monday", (Holidays.on(Date.civil(2007, 4, 9), [:nz], [:informal])[0] || {})[:name] + + assert_equal "ANZAC Day", (Holidays.on(Date.civil(2007, 4, 25), [:nz], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2007, 12, 25), [:nz], [:informal])[0] || {})[:name] + + assert_equal "Boxing Day", (Holidays.on(Date.civil(2007, 12, 26), [:nz], [:informal])[0] || {})[:name] + + assert_equal "ANZAC Day", (Holidays.on(Date.civil(2015, 4, 25), [:nz])[0] || {})[:name] + + assert_equal "ANZAC Day", (Holidays.on(Date.civil(2015, 4, 27), [:nz], [:observed])[0] || {})[:name] + + assert_equal "ANZAC Day", (Holidays.on(Date.civil(2016, 4, 25), [:nz])[0] || {})[:name] + + assert_equal "ANZAC Day", (Holidays.on(Date.civil(2016, 4, 25), [:nz], [:observed])[0] || {})[:name] + + assert_equal "Waitangi Day", (Holidays.on(Date.civil(2015, 2, 6), [:nz])[0] || {})[:name] + + assert_equal "Waitangi Day", (Holidays.on(Date.civil(2015, 2, 6), [:nz], [:observed])[0] || {})[:name] + + assert_equal "Waitangi Day", (Holidays.on(Date.civil(2016, 2, 6), [:nz])[0] || {})[:name] + + assert_equal "Waitangi Day", (Holidays.on(Date.civil(2016, 2, 8), [:nz], [:observed])[0] || {})[:name] + + assert_equal "Nelson Anniversary Day", (Holidays.on(Date.civil(2016, 2, 1), [:nz_ne], [:observed])[0] || {})[:name] + + assert_equal "Nelson Anniversary Day", (Holidays.on(Date.civil(2017, 1, 30), [:nz_ne], [:observed])[0] || {})[:name] + + assert_equal "Nelson Anniversary Day", (Holidays.on(Date.civil(2018, 1, 29), [:nz_ne], [:observed])[0] || {})[:name] + + assert_equal "Nelson Anniversary Day", (Holidays.on(Date.civil(2019, 2, 4), [:nz_ne], [:observed])[0] || {})[:name] + + assert_equal "Taranaki Anniversary Day", (Holidays.on(Date.civil(2016, 3, 14), [:nz_ta], [:observed])[0] || {})[:name] + + assert_equal "Taranaki Anniversary Day", (Holidays.on(Date.civil(2017, 3, 13), [:nz_ta], [:observed])[0] || {})[:name] + + assert_equal "Taranaki Anniversary Day", (Holidays.on(Date.civil(2018, 3, 12), [:nz_ta], [:observed])[0] || {})[:name] + + assert_equal "Taranaki Anniversary Day", (Holidays.on(Date.civil(2019, 3, 11), [:nz_ta], [:observed])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_pe.rb b/vendor/holidays/test/defs/test_defs_pe.rb new file mode 100644 index 00000000..8c3aadb4 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_pe.rb @@ -0,0 +1,47 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/pe.yaml +class PeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_pe + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2016, 1, 1), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2016, 1, 6), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2016, 3, 24), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Pascua", (Holidays.on(Date.civil(2016, 3, 27), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2016, 5, 1), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de la Madre", (Holidays.on(Date.civil(2016, 5, 8), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de la Bandera", (Holidays.on(Date.civil(2016, 6, 7), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día del Padre", (Holidays.on(Date.civil(2016, 6, 19), [:pe], [:informal])[0] || {})[:name] + + assert_equal "San Pablo y San Pedro", (Holidays.on(Date.civil(2016, 6, 29), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Primer Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 28), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Segundo Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 29), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Santa Rosa de Lima", (Holidays.on(Date.civil(2016, 8, 30), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de las Fuerzas Armadas", (Holidays.on(Date.civil(2016, 9, 24), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Batalla de Angamos", (Holidays.on(Date.civil(2016, 10, 8), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Todos los Santos", (Holidays.on(Date.civil(2016, 11, 1), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción", (Holidays.on(Date.civil(2016, 12, 8), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Navidad del Señor", (Holidays.on(Date.civil(2016, 12, 25), [:pe], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ph.rb b/vendor/holidays/test/defs/test_defs_ph.rb new file mode 100644 index 00000000..72e27445 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ph.rb @@ -0,0 +1,29 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ph.yaml +class PhDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ph + assert_equal "Good Friday", (Holidays.on(Date.civil(2015, 4, 3), [:ph])[0] || {})[:name] + + assert_equal "The Day of Valor", (Holidays.on(Date.civil(2015, 4, 9), [:ph])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2015, 5, 1), [:ph])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2015, 6, 12), [:ph])[0] || {})[:name] + + assert_equal "Ninoy Aquino Day", (Holidays.on(Date.civil(2015, 8, 21), [:ph])[0] || {})[:name] + + assert_equal "National Heroes Day", (Holidays.on(Date.civil(2015, 8, 31), [:ph])[0] || {})[:name] + + assert_equal "Bonifacio Day", (Holidays.on(Date.civil(2015, 11, 30), [:ph])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2015, 12, 25), [:ph])[0] || {})[:name] + + assert_equal "Rizal Day", (Holidays.on(Date.civil(2015, 12, 30), [:ph])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_pl.rb b/vendor/holidays/test/defs/test_defs_pl.rb new file mode 100644 index 00000000..d42c5130 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_pl.rb @@ -0,0 +1,227 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/pl.yaml +class PlDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_pl + assert_equal "Nowy Rok", (Holidays.on(Date.civil(2011, 1, 1), [:pl])[0] || {})[:name] + + assert_equal "Święto Państwowe (Święto Pracy)", (Holidays.on(Date.civil(2011, 5, 1), [:pl])[0] || {})[:name] + + assert_equal "Święto Narodowe Trzeciego Maja", (Holidays.on(Date.civil(2011, 5, 3), [:pl])[0] || {})[:name] + + assert_equal "Wszystkich Świętych", (Holidays.on(Date.civil(2011, 11, 1), [:pl])[0] || {})[:name] + + assert_equal "Narodowe Święto Niepodległości", (Holidays.on(Date.civil(2011, 11, 11), [:pl])[0] || {})[:name] + + assert_equal "pierwszy dzień Bożego Narodzenia", (Holidays.on(Date.civil(2011, 12, 25), [:pl])[0] || {})[:name] + + assert_equal "drugi dzień Bożego Narodzenia", (Holidays.on(Date.civil(2011, 12, 26), [:pl])[0] || {})[:name] + + assert_equal "Dzień Babci", (Holidays.on(Date.civil(2011, 1, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Dziadka", (Holidays.on(Date.civil(2011, 1, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ofiarowanie Pańskie (Matki Boskiej Gromnicznej)", (Holidays.on(Date.civil(2011, 2, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Zakochanych (Walentynki)", (Holidays.on(Date.civil(2011, 2, 14), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Kobiet", (Holidays.on(Date.civil(2010, 3, 8), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Mężczyzn", (Holidays.on(Date.civil(2011, 3, 10), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Prima Aprilis", (Holidays.on(Date.civil(2011, 4, 1), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Międzynarodowy Dzień Ziemi", (Holidays.on(Date.civil(2010, 4, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Flagi Rzeczpospolitej Polskiej", (Holidays.on(Date.civil(2011, 5, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Ojca", (Holidays.on(Date.civil(2010, 6, 23), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Chłopaka", (Holidays.on(Date.civil(2011, 9, 30), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Nauczyciela (Dzień Edukacji Narodowej)", (Holidays.on(Date.civil(2011, 10, 14), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Dzień Zaduszny", (Holidays.on(Date.civil(2011, 11, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Andrzejki", (Holidays.on(Date.civil(2011, 11, 29), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Barbórka (Dzień Górnika, Naftowca i Gazownika)", (Holidays.on(Date.civil(2011, 12, 4), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Mikołajki", (Holidays.on(Date.civil(2011, 12, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wigilia Bożego Narodzenia", (Holidays.on(Date.civil(2011, 12, 24), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Sylwester", (Holidays.on(Date.civil(2011, 12, 31), [:pl], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 1, 21), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 1, 22), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 2), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 2, 14), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 3, 8), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 3, 10), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 4, 1), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 4, 22), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 5, 2), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 6, 23), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 9, 30), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 10, 14), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 11, 2), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 11, 29), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 4), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 6), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 24), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2011, 12, 31), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2008, 1, 6), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2009, 1, 6), [:pl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2010, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2008, 1, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2009, 1, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2010, 1, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2011, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2012, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Objawienie Pańskie (święto Trzech Króli)", (Holidays.on(Date.civil(2013, 1, 6), [:pl])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2008, 1, 31), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2009, 2, 19), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2010, 2, 11), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2011, 3, 3), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Tłusty Czwartek", (Holidays.on(Date.civil(2012, 2, 16), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2008, 2, 5), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2009, 2, 24), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2010, 2, 16), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2011, 3, 8), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Ostatki", (Holidays.on(Date.civil(2012, 2, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2008, 2, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2009, 2, 25), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2010, 2, 17), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2011, 3, 9), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Środa Popielcowa", (Holidays.on(Date.civil(2012, 2, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2008, 3, 16), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2009, 4, 5), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2010, 3, 28), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2011, 4, 17), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Palmowa", (Holidays.on(Date.civil(2012, 4, 1), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2008, 3, 20), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2009, 4, 9), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2010, 4, 1), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2011, 4, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Czwartek", (Holidays.on(Date.civil(2012, 4, 5), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2008, 3, 21), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2009, 4, 10), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2010, 4, 2), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2011, 4, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielki Piątek", (Holidays.on(Date.civil(2012, 4, 6), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2008, 3, 22), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2009, 4, 11), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2010, 4, 3), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2011, 4, 23), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Wielka Sobota", (Holidays.on(Date.civil(2012, 4, 7), [:pl], [:informal])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2008, 3, 23), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2009, 4, 12), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2010, 4, 4), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2011, 4, 24), [:pl])[0] || {})[:name] + + assert_equal "Niedziela Wielkanocna", (Holidays.on(Date.civil(2012, 4, 8), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2008, 3, 24), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2009, 4, 13), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2010, 4, 5), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2011, 4, 25), [:pl])[0] || {})[:name] + + assert_equal "Poniedziałek Wielkanocny (Lany Poniedziałek)", (Holidays.on(Date.civil(2012, 4, 9), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2008, 5, 11), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2009, 5, 31), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2010, 5, 23), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2011, 6, 12), [:pl])[0] || {})[:name] + + assert_equal "Zesłanie Ducha Świętego (Zielone Świątki)", (Holidays.on(Date.civil(2012, 5, 27), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2008, 5, 22), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2009, 6, 11), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2010, 6, 3), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2011, 6, 23), [:pl])[0] || {})[:name] + + assert_equal "Uroczystość Najświętszego Ciała i Krwi Pańskiej (Boże Ciało)", (Holidays.on(Date.civil(2012, 6, 7), [:pl])[0] || {})[:name] + + assert_equal "Wniebowzięcie Najświętszej Maryi Panny", (Holidays.on(Date.civil(2011, 8, 15), [:pl])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_pt.rb b/vendor/holidays/test/defs/test_defs_pt.rb new file mode 100644 index 00000000..c04da224 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_pt.rb @@ -0,0 +1,47 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/pt.yaml +class PtDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_pt + assert_equal "Ano Novo", (Holidays.on(Date.civil(2008, 1, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2005, 2, 8), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2006, 2, 28), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2007, 2, 20), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2008, 2, 5), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Sexta-feira Santa", (Holidays.on(Date.civil(2008, 3, 21), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Páscoa", (Holidays.on(Date.civil(2008, 3, 23), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Páscoa", (Holidays.on(Date.civil(2016, 3, 27), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia da Liberdade", (Holidays.on(Date.civil(2008, 4, 25), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia do Trabalhador", (Holidays.on(Date.civil(2008, 5, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Corpo de Deus", (Holidays.on(Date.civil(2016, 5, 26), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia de Portugal", (Holidays.on(Date.civil(2008, 6, 10), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Assunção de Nossa Senhora", (Holidays.on(Date.civil(2008, 8, 15), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia da República", (Holidays.on(Date.civil(2008, 10, 5), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Dia de Todos-os-Santos", (Holidays.on(Date.civil(2008, 11, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Restauração da Independência", (Holidays.on(Date.civil(2008, 12, 1), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Imaculada Conceição", (Holidays.on(Date.civil(2008, 12, 8), [:pt], [:informal])[0] || {})[:name] + + assert_equal "Natal", (Holidays.on(Date.civil(2008, 12, 25), [:pt], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ro.rb b/vendor/holidays/test/defs/test_defs_ro.rb new file mode 100644 index 00000000..95946b45 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ro.rb @@ -0,0 +1,65 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ro.yaml +class RoDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ro + assert_nil (Holidays.on(Date.civil(2017, 4, 14), [:ro])[0] || {})[:name] + + assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2018, 4, 6), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2019, 4, 26), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - duminică", (Holidays.on(Date.civil(1961, 4, 9), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - luni", (Holidays.on(Date.civil(1961, 4, 10), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - duminică", (Holidays.on(Date.civil(2013, 5, 5), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - luni", (Holidays.on(Date.civil(2013, 5, 6), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - duminică", (Holidays.on(Date.civil(2027, 5, 2), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Paștele - luni", (Holidays.on(Date.civil(2027, 5, 3), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 51", (Holidays.on(Date.civil(2012, 6, 4), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 50", (Holidays.on(Date.civil(2013, 6, 23), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 51", (Holidays.on(Date.civil(2013, 6, 24), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 50", (Holidays.on(Date.civil(1986, 6, 22), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Rusaliile - 51", (Holidays.on(Date.civil(1986, 6, 23), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Anul nou", (Holidays.on(Date.civil(2009, 1, 1), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Anul nou", (Holidays.on(Date.civil(2014, 1, 2), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Unirea Principatelor Române", (Holidays.on(Date.civil(2017, 1, 24), [:ro], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 1, 24), [:ro])[0] || {})[:name] + + assert_equal "Ziua muncii", (Holidays.on(Date.civil(2009, 5, 1), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Ziua Copilului", (Holidays.on(Date.civil(2017, 6, 1), [:ro], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2016, 6, 1), [:ro])[0] || {})[:name] + + assert_equal "Adormirea Maicii Domnului", (Holidays.on(Date.civil(2012, 8, 15), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Sfântul Apostol Andrei", (Holidays.on(Date.civil(2013, 11, 30), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Ziua Națională", (Holidays.on(Date.civil(2013, 12, 1), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Sărbătoarea Nașterii Domnului", (Holidays.on(Date.civil(2013, 12, 25), [:ro], [:informal])[0] || {})[:name] + + assert_equal "Sărbătoarea Nașterii Domnului", (Holidays.on(Date.civil(2013, 12, 26), [:ro], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2013, 7, 23), [:ro])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_rs_cyrl.rb b/vendor/holidays/test/defs/test_defs_rs_cyrl.rb new file mode 100644 index 00000000..389d580c --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_rs_cyrl.rb @@ -0,0 +1,46 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/rs_cyrl.yaml +class Rs_cyrlDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_rs_cyrl + assert_equal "Нова Година", (Holidays.on(Date.civil(2017, 1, 1), [:rs_cyrl])[0] || {})[:name] +assert_equal "Нова Година", (Holidays.on(Date.civil(2017, 1, 2), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Божић", (Holidays.on(Date.civil(2017, 1, 7), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Свети Сава (Савиндан)", (Holidays.on(Date.civil(2017, 1, 27), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Дан државности Србије", (Holidays.on(Date.civil(2017, 2, 15), [:rs_cyrl])[0] || {})[:name] +assert_equal "Дан државности Србије", (Holidays.on(Date.civil(2017, 2, 16), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Празник рада", (Holidays.on(Date.civil(2017, 5, 1), [:rs_cyrl])[0] || {})[:name] +assert_equal "Празник рада", (Holidays.on(Date.civil(2017, 5, 2), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Дан победе над фашизмом", (Holidays.on(Date.civil(2017, 5, 9), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Видовдан", (Holidays.on(Date.civil(2017, 6, 28), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Дан примирја", (Holidays.on(Date.civil(2017, 11, 11), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Велики петак", (Holidays.on(Date.civil(2017, 4, 14), [:rs_cyrl])[0] || {})[:name] +assert_equal "Велики петак", (Holidays.on(Date.civil(2018, 4, 6), [:rs_cyrl])[0] || {})[:name] +assert_equal "Велики петак", (Holidays.on(Date.civil(2019, 4, 26), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Велика Субота", (Holidays.on(Date.civil(2017, 4, 15), [:rs_cyrl])[0] || {})[:name] +assert_equal "Велика Субота", (Holidays.on(Date.civil(2018, 4, 7), [:rs_cyrl])[0] || {})[:name] +assert_equal "Велика Субота", (Holidays.on(Date.civil(2019, 4, 27), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Васкрс", (Holidays.on(Date.civil(2017, 4, 16), [:rs_cyrl])[0] || {})[:name] +assert_equal "Васкрс", (Holidays.on(Date.civil(2018, 4, 8), [:rs_cyrl])[0] || {})[:name] +assert_equal "Васкрс", (Holidays.on(Date.civil(2019, 4, 28), [:rs_cyrl])[0] || {})[:name] + + assert_equal "Васкрсни понедељак", (Holidays.on(Date.civil(2017, 4, 17), [:rs_cyrl])[0] || {})[:name] +assert_equal "Васкрсни понедељак", (Holidays.on(Date.civil(2018, 4, 9), [:rs_cyrl])[0] || {})[:name] +assert_equal "Васкрсни понедељак", (Holidays.on(Date.civil(2019, 4, 29), [:rs_cyrl])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_rs_la.rb b/vendor/holidays/test/defs/test_defs_rs_la.rb new file mode 100644 index 00000000..e6734515 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_rs_la.rb @@ -0,0 +1,46 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/rs_la.yaml +class Rs_laDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_rs_la + assert_equal "Nova Godina", (Holidays.on(Date.civil(2017, 1, 1), [:rs_la])[0] || {})[:name] +assert_equal "Nova Godina", (Holidays.on(Date.civil(2017, 1, 2), [:rs_la])[0] || {})[:name] + + assert_equal "Božić", (Holidays.on(Date.civil(2017, 1, 7), [:rs_la])[0] || {})[:name] + + assert_equal "Dan Svetog Save", (Holidays.on(Date.civil(2017, 1, 27), [:rs_la])[0] || {})[:name] + + assert_equal "Dan državnosti Srbije", (Holidays.on(Date.civil(2017, 2, 15), [:rs_la])[0] || {})[:name] +assert_equal "Dan državnosti Srbije", (Holidays.on(Date.civil(2017, 2, 16), [:rs_la])[0] || {})[:name] + + assert_equal "Praznik rada", (Holidays.on(Date.civil(2017, 5, 1), [:rs_la])[0] || {})[:name] +assert_equal "Praznik rada", (Holidays.on(Date.civil(2017, 5, 2), [:rs_la])[0] || {})[:name] + + assert_equal "Dan pobede", (Holidays.on(Date.civil(2017, 5, 9), [:rs_la])[0] || {})[:name] + + assert_equal "Vidovdan", (Holidays.on(Date.civil(2017, 6, 28), [:rs_la])[0] || {})[:name] + + assert_equal "Dan primirja", (Holidays.on(Date.civil(2017, 11, 11), [:rs_la])[0] || {})[:name] + + assert_equal "Veliki Petak", (Holidays.on(Date.civil(2017, 4, 14), [:rs_la])[0] || {})[:name] +assert_equal "Veliki Petak", (Holidays.on(Date.civil(2018, 4, 6), [:rs_la])[0] || {})[:name] +assert_equal "Veliki Petak", (Holidays.on(Date.civil(2019, 4, 26), [:rs_la])[0] || {})[:name] + + assert_equal "Velika Subota", (Holidays.on(Date.civil(2017, 4, 15), [:rs_la])[0] || {})[:name] +assert_equal "Velika Subota", (Holidays.on(Date.civil(2018, 4, 7), [:rs_la])[0] || {})[:name] +assert_equal "Velika Subota", (Holidays.on(Date.civil(2019, 4, 27), [:rs_la])[0] || {})[:name] + + assert_equal "Uskrs", (Holidays.on(Date.civil(2017, 4, 16), [:rs_la])[0] || {})[:name] +assert_equal "Uskrs", (Holidays.on(Date.civil(2018, 4, 8), [:rs_la])[0] || {})[:name] +assert_equal "Uskrs", (Holidays.on(Date.civil(2019, 4, 28), [:rs_la])[0] || {})[:name] + + assert_equal "Vaskrsni ponedeljak", (Holidays.on(Date.civil(2017, 4, 17), [:rs_la])[0] || {})[:name] +assert_equal "Vaskrsni ponedeljak", (Holidays.on(Date.civil(2018, 4, 9), [:rs_la])[0] || {})[:name] +assert_equal "Vaskrsni ponedeljak", (Holidays.on(Date.civil(2019, 4, 29), [:rs_la])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ru.rb b/vendor/holidays/test/defs/test_defs_ru.rb new file mode 100644 index 00000000..a38540a2 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ru.rb @@ -0,0 +1,34 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ru.yaml +class RuDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ru + assert_equal "Новый год", (Holidays.on(Date.civil(2017, 1, 1), [:ru])[0] || {})[:name] + + assert_equal "Новогодний праздник", (Holidays.on(Date.civil(2017, 1, 2), [:ru])[0] || {})[:name] +assert_equal "Новогодний праздник", (Holidays.on(Date.civil(2017, 1, 3), [:ru])[0] || {})[:name] +assert_equal "Новогодний праздник", (Holidays.on(Date.civil(2017, 1, 4), [:ru])[0] || {})[:name] +assert_equal "Новогодний праздник", (Holidays.on(Date.civil(2017, 1, 5), [:ru])[0] || {})[:name] + + assert_equal "Рождество Христово", (Holidays.on(Date.civil(2017, 1, 7), [:ru])[0] || {})[:name] + + assert_equal "День защитника Отечества", (Holidays.on(Date.civil(2017, 2, 23), [:ru])[0] || {})[:name] + + assert_equal "Международный женский день", (Holidays.on(Date.civil(2017, 3, 8), [:ru])[0] || {})[:name] + + assert_equal "Праздник Весны и Труда", (Holidays.on(Date.civil(2017, 5, 1), [:ru])[0] || {})[:name] + + assert_equal "День Победы", (Holidays.on(Date.civil(2017, 5, 9), [:ru])[0] || {})[:name] + + assert_equal "День России", (Holidays.on(Date.civil(2017, 6, 12), [:ru])[0] || {})[:name] + + assert_equal "День Государственного флага Российской Федерации", (Holidays.on(Date.civil(2017, 8, 22), [:ru])[0] || {})[:name] + + assert_equal "День народного единства", (Holidays.on(Date.civil(2017, 11, 4), [:ru])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_scandinavia.rb b/vendor/holidays/test/defs/test_defs_scandinavia.rb new file mode 100644 index 00000000..c8152140 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_scandinavia.rb @@ -0,0 +1,211 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/dk.yaml, definitions/is.yaml, definitions/no.yaml, definitions/se.yaml, definitions/fi.yaml +class ScandinaviaDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_scandinavia + assert_equal "Nytårsdag", (Holidays.on(Date.civil(2007, 1, 1), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Fastelavn", (Holidays.on(Date.civil(2007, 2, 18), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. påskedag", (Holidays.on(Date.civil(2007, 4, 9), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Dronningens fødselsdag", (Holidays.on(Date.civil(2007, 4, 16), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Skærtorsdag", (Holidays.on(Date.civil(2007, 4, 5), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Langfredag", (Holidays.on(Date.civil(2007, 4, 6), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Påskedag", (Holidays.on(Date.civil(2007, 4, 8), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Arbejdernes kampdag", (Holidays.on(Date.civil(2007, 5, 1), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Store Bededag", (Holidays.on(Date.civil(2007, 5, 4), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Kristi Himmelfartsdag", (Holidays.on(Date.civil(2007, 5, 17), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Pinsedag", (Holidays.on(Date.civil(2007, 5, 27), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. Pinsedag", (Holidays.on(Date.civil(2007, 5, 28), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Grundlovsdag", (Holidays.on(Date.civil(2007, 6, 5), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Juleaftensdag", (Holidays.on(Date.civil(2007, 12, 24), [:dk], [:informal])[0] || {})[:name] + + assert_equal "1. juledag", (Holidays.on(Date.civil(2007, 12, 25), [:dk], [:informal])[0] || {})[:name] + + assert_equal "2. juledag", (Holidays.on(Date.civil(2007, 12, 26), [:dk], [:informal])[0] || {})[:name] + + assert_equal "Nýársdagur", (Holidays.on(Date.civil(2007, 1, 1), [:is], [:informal])[0] || {})[:name] + + assert_equal "Þrettándinn", (Holidays.on(Date.civil(2007, 1, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Bóndadagur", (Holidays.on(Date.civil(2007, 1, 19), [:is], [:informal])[0] || {})[:name] + + assert_equal "Konudagur", (Holidays.on(Date.civil(2007, 2, 18), [:is], [:informal])[0] || {})[:name] + + assert_equal "Skírdagur", (Holidays.on(Date.civil(2007, 4, 5), [:is], [:informal])[0] || {})[:name] + + assert_equal "Föstudaginn langi", (Holidays.on(Date.civil(2007, 4, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Páskadagur", (Holidays.on(Date.civil(2007, 4, 8), [:is], [:informal])[0] || {})[:name] + + assert_equal "Annar í páskum", (Holidays.on(Date.civil(2007, 4, 9), [:is], [:informal])[0] || {})[:name] + + assert_equal "Sumardagurinn fyrsti", (Holidays.on(Date.civil(2007, 4, 19), [:is], [:informal])[0] || {})[:name] + + assert_equal "Verkalýðsdagurinn", (Holidays.on(Date.civil(2007, 5, 1), [:is], [:informal])[0] || {})[:name] + + assert_equal "Uppstigningardagur", (Holidays.on(Date.civil(2007, 5, 17), [:is], [:informal])[0] || {})[:name] + + assert_equal "Hvítasunnudagur", (Holidays.on(Date.civil(2007, 5, 27), [:is], [:informal])[0] || {})[:name] + + assert_equal "Annar í hvítasunnu", (Holidays.on(Date.civil(2007, 5, 28), [:is], [:informal])[0] || {})[:name] + + assert_equal "Sjómannadagurinn", (Holidays.on(Date.civil(2007, 6, 3), [:is], [:informal])[0] || {})[:name] + + assert_equal "Lýðveldisdagurinn", (Holidays.on(Date.civil(2007, 6, 17), [:is], [:informal])[0] || {})[:name] + + assert_equal "Frídagur verslunarmanna", (Holidays.on(Date.civil(2007, 8, 6), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 24), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 25), [:is], [:informal])[0] || {})[:name] + + assert_equal "Jól", (Holidays.on(Date.civil(2007, 12, 26), [:is], [:informal])[0] || {})[:name] + + assert_equal "Gamlárskvöld", (Holidays.on(Date.civil(2007, 12, 31), [:is], [:informal])[0] || {})[:name] + + assert_equal "Nyttårsdag", (Holidays.on(Date.civil(2010, 1, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. mai", (Holidays.on(Date.civil(2010, 5, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "17. mai", (Holidays.on(Date.civil(2010, 5, 17), [:no], [:informal])[0] || {})[:name] + + assert_equal "Julaften", (Holidays.on(Date.civil(2010, 12, 24), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. juledag", (Holidays.on(Date.civil(2010, 12, 25), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. juledag", (Holidays.on(Date.civil(2010, 12, 26), [:no], [:informal])[0] || {})[:name] + + assert_equal "Nyttårsaften", (Holidays.on(Date.civil(2010, 12, 31), [:no], [:informal])[0] || {})[:name] + + assert_equal "Fastelavn", (Holidays.on(Date.civil(2010, 2, 14), [:no], [:informal])[0] || {})[:name] + + assert_equal "Palmesøndag", (Holidays.on(Date.civil(2010, 3, 28), [:no], [:informal])[0] || {})[:name] + + assert_equal "Skjærtorsdag", (Holidays.on(Date.civil(2010, 4, 1), [:no], [:informal])[0] || {})[:name] + + assert_equal "Langfredag", (Holidays.on(Date.civil(2010, 4, 2), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. påskedag", (Holidays.on(Date.civil(2010, 4, 4), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. påskedag", (Holidays.on(Date.civil(2010, 4, 5), [:no], [:informal])[0] || {})[:name] + + assert_equal "Kristi Himmelfartsdag", (Holidays.on(Date.civil(2010, 5, 13), [:no], [:informal])[0] || {})[:name] + + assert_equal "1. pinsedag", (Holidays.on(Date.civil(2010, 5, 23), [:no], [:informal])[0] || {})[:name] + + assert_equal "2. pinsedag", (Holidays.on(Date.civil(2010, 5, 24), [:no], [:informal])[0] || {})[:name] + + assert_equal "Nyårsdagen", (Holidays.on(Date.civil(2008, 1, 1), [:se], [:informal])[0] || {})[:name] + + assert_equal "Trettondedag jul", (Holidays.on(Date.civil(2008, 1, 6), [:se], [:informal])[0] || {})[:name] + + assert_equal "Långfredagen", (Holidays.on(Date.civil(2008, 3, 21), [:se], [:informal])[0] || {})[:name] + + assert_equal "Påskafton", (Holidays.on(Date.civil(2008, 3, 22), [:se], [:informal])[0] || {})[:name] + + assert_equal "Påskdagen", (Holidays.on(Date.civil(2008, 3, 23), [:se], [:informal])[0] || {})[:name] + + assert_equal "Annandag påsk", (Holidays.on(Date.civil(2008, 3, 24), [:se], [:informal])[0] || {})[:name] + + assert_equal "Kristi himmelsfärdsdag", (Holidays.on(Date.civil(2008, 5, 1), [:se], [:informal])[0] || {})[:name] + + assert_equal "Pingstdagen", (Holidays.on(Date.civil(2008, 5, 11), [:se], [:informal])[0] || {})[:name] + + assert_equal "Nationaldagen", (Holidays.on(Date.civil(2008, 6, 6), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2005, 6, 25), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2006, 6, 24), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommarafton", (Holidays.on(Date.civil(2006, 6, 23), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2007, 6, 23), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommarafton", (Holidays.on(Date.civil(2007, 6, 22), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2008, 6, 21), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommarafton", (Holidays.on(Date.civil(2008, 6, 20), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2005, 11, 5), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2006, 11, 4), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2007, 11, 3), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2008, 11, 1), [:se], [:informal])[0] || {})[:name] + + assert_equal "Julafton", (Holidays.on(Date.civil(2008, 12, 24), [:se], [:informal])[0] || {})[:name] + + assert_equal "Juldagen", (Holidays.on(Date.civil(2008, 12, 25), [:se], [:informal])[0] || {})[:name] + + assert_equal "Annandag jul", (Holidays.on(Date.civil(2008, 12, 26), [:se], [:informal])[0] || {})[:name] + + assert_equal "Nyårsafton", (Holidays.on(Date.civil(2008, 12, 31), [:se], [:informal])[0] || {})[:name] + + assert_equal "Uudenvuodenpäivä", (Holidays.on(Date.civil(2008, 1, 1), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Loppiainen", (Holidays.on(Date.civil(2008, 1, 6), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pitkäperjantai", (Holidays.on(Date.civil(2008, 3, 21), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pääsiäispäivä", (Holidays.on(Date.civil(2008, 3, 23), [:fi], [:informal])[0] || {})[:name] + + assert_equal "2. Pääsiäispäivä", (Holidays.on(Date.civil(2008, 3, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Helatorstai", (Holidays.on(Date.civil(2008, 5, 1), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Helluntaipäivä", (Holidays.on(Date.civil(2008, 5, 11), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2009, 6, 19), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2010, 6, 25), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2011, 6, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2012, 6, 22), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannusaatto", (Holidays.on(Date.civil(2013, 6, 21), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2005, 6, 25), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2006, 6, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2007, 6, 23), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Juhannuspäivä", (Holidays.on(Date.civil(2008, 6, 21), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2005, 11, 5), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2006, 11, 4), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2007, 11, 3), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Pyhäinpäivä", (Holidays.on(Date.civil(2008, 11, 1), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Itsenäisyyspäivä", (Holidays.on(Date.civil(2008, 12, 6), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Jouluaatto", (Holidays.on(Date.civil(2008, 12, 24), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Joulupäivä", (Holidays.on(Date.civil(2008, 12, 25), [:fi], [:informal])[0] || {})[:name] + + assert_equal "Tapaninpäivä", (Holidays.on(Date.civil(2008, 12, 26), [:fi], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_se.rb b/vendor/holidays/test/defs/test_defs_se.rb new file mode 100644 index 00000000..a03cfcda --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_se.rb @@ -0,0 +1,59 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/se.yaml +class SeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_se + assert_equal "Nyårsdagen", (Holidays.on(Date.civil(2008, 1, 1), [:se], [:informal])[0] || {})[:name] + + assert_equal "Trettondedag jul", (Holidays.on(Date.civil(2008, 1, 6), [:se], [:informal])[0] || {})[:name] + + assert_equal "Långfredagen", (Holidays.on(Date.civil(2008, 3, 21), [:se], [:informal])[0] || {})[:name] + + assert_equal "Påskafton", (Holidays.on(Date.civil(2008, 3, 22), [:se], [:informal])[0] || {})[:name] + + assert_equal "Påskdagen", (Holidays.on(Date.civil(2008, 3, 23), [:se], [:informal])[0] || {})[:name] + + assert_equal "Annandag påsk", (Holidays.on(Date.civil(2008, 3, 24), [:se], [:informal])[0] || {})[:name] + + assert_equal "Kristi himmelsfärdsdag", (Holidays.on(Date.civil(2008, 5, 1), [:se], [:informal])[0] || {})[:name] + + assert_equal "Pingstdagen", (Holidays.on(Date.civil(2008, 5, 11), [:se], [:informal])[0] || {})[:name] + + assert_equal "Nationaldagen", (Holidays.on(Date.civil(2008, 6, 6), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2005, 6, 25), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2006, 6, 24), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommarafton", (Holidays.on(Date.civil(2006, 6, 23), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2007, 6, 23), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommarafton", (Holidays.on(Date.civil(2007, 6, 22), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommardagen", (Holidays.on(Date.civil(2008, 6, 21), [:se], [:informal])[0] || {})[:name] + + assert_equal "Midsommarafton", (Holidays.on(Date.civil(2008, 6, 20), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2005, 11, 5), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2006, 11, 4), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2007, 11, 3), [:se], [:informal])[0] || {})[:name] + + assert_equal "Alla helgons dag", (Holidays.on(Date.civil(2008, 11, 1), [:se], [:informal])[0] || {})[:name] + + assert_equal "Julafton", (Holidays.on(Date.civil(2008, 12, 24), [:se], [:informal])[0] || {})[:name] + + assert_equal "Juldagen", (Holidays.on(Date.civil(2008, 12, 25), [:se], [:informal])[0] || {})[:name] + + assert_equal "Annandag jul", (Holidays.on(Date.civil(2008, 12, 26), [:se], [:informal])[0] || {})[:name] + + assert_equal "Nyårsafton", (Holidays.on(Date.civil(2008, 12, 31), [:se], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_sg.rb b/vendor/holidays/test/defs/test_defs_sg.rb new file mode 100644 index 00000000..a4a7ff57 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_sg.rb @@ -0,0 +1,25 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/sg.yaml +class SgDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_sg + assert_equal "New Year's Day", (Holidays.on(Date.civil(2014, 1, 1), [:sg], [:informal])[0] || {})[:name] + + assert_equal "Valentine's Day", (Holidays.on(Date.civil(2014, 2, 14), [:sg], [:informal])[0] || {})[:name] + + assert_equal "Total Defence Day", (Holidays.on(Date.civil(2014, 2, 15), [:sg], [:informal])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2014, 4, 18), [:sg], [:informal])[0] || {})[:name] + + assert_equal "Labour Day", (Holidays.on(Date.civil(2014, 5, 1), [:sg], [:informal])[0] || {})[:name] + + assert_equal "National Day", (Holidays.on(Date.civil(2014, 8, 9), [:sg], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2014, 12, 25), [:sg], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_si.rb b/vendor/holidays/test/defs/test_defs_si.rb new file mode 100644 index 00000000..76bafb05 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_si.rb @@ -0,0 +1,105 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/si.yaml +class SiDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_si + assert_equal "velikonočna nedelja", (Holidays.on(Date.civil(2015, 4, 5), [:si])[0] || {})[:name] + + assert_equal "velikonočna nedelja", (Holidays.on(Date.civil(2016, 3, 27), [:si])[0] || {})[:name] + + assert_equal "velikonočni ponedeljek", (Holidays.on(Date.civil(2015, 4, 6), [:si])[0] || {})[:name] + + assert_equal "velikonočni ponedeljek", (Holidays.on(Date.civil(2016, 3, 28), [:si])[0] || {})[:name] + + assert_equal "binkošti", (Holidays.on(Date.civil(2015, 5, 24), [:si])[0] || {})[:name] + + assert_equal "binkošti", (Holidays.on(Date.civil(2016, 5, 15), [:si])[0] || {})[:name] + + assert_equal "novo leto", (Holidays.on(Date.civil(2014, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2015, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2016, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2017, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2018, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2019, 1, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "novo leto", (Holidays.on(Date.civil(2020, 1, 1), [:si], [:informal])[0] || {})[:name] + + assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2014, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2015, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2016, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2017, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2018, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2019, 2, 8), [:si], [:informal])[0] || {})[:name] +assert_equal "Prešernov dan, slovenski kulturni praznik", (Holidays.on(Date.civil(2020, 2, 8), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2014, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2015, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2016, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2017, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2018, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2019, 4, 27), [:si], [:informal])[0] || {})[:name] +assert_equal "dan upora proti okupatorju", (Holidays.on(Date.civil(2020, 4, 27), [:si], [:informal])[0] || {})[:name] + + assert_equal "praznik dela", (Holidays.on(Date.civil(2014, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2015, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2016, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2017, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2018, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2019, 5, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2020, 5, 1), [:si], [:informal])[0] || {})[:name] + + assert_equal "praznik dela", (Holidays.on(Date.civil(2014, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2015, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2016, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2017, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2018, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2019, 5, 2), [:si], [:informal])[0] || {})[:name] +assert_equal "praznik dela", (Holidays.on(Date.civil(2020, 5, 2), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan državnosti", (Holidays.on(Date.civil(2014, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2015, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2016, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2017, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2018, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2019, 6, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "dan državnosti", (Holidays.on(Date.civil(2020, 6, 25), [:si], [:informal])[0] || {})[:name] + + assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2014, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2015, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2016, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2017, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2018, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2019, 8, 15), [:si], [:informal])[0] || {})[:name] +assert_equal "Marijino vnebovzetje", (Holidays.on(Date.civil(2020, 8, 15), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan reformacije", (Holidays.on(Date.civil(2014, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2015, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2016, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2017, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2018, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2019, 10, 31), [:si], [:informal])[0] || {})[:name] +assert_equal "dan reformacije", (Holidays.on(Date.civil(2020, 10, 31), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2014, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2015, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2016, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2017, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2018, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2019, 11, 1), [:si], [:informal])[0] || {})[:name] +assert_equal "dan spomina na mrtve", (Holidays.on(Date.civil(2020, 11, 1), [:si], [:informal])[0] || {})[:name] + + assert_equal "božič", (Holidays.on(Date.civil(2014, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2015, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2016, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2017, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2018, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2019, 12, 25), [:si], [:informal])[0] || {})[:name] +assert_equal "božič", (Holidays.on(Date.civil(2020, 12, 25), [:si], [:informal])[0] || {})[:name] + + assert_equal "dan samostojnosti in enotnosti", (Holidays.on(Date.civil(2008, 12, 26), [:si], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_sk.rb b/vendor/holidays/test/defs/test_defs_sk.rb new file mode 100644 index 00000000..22ba427a --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_sk.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/sk.yaml +class SkDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_sk + assert_equal "Nový rok", (Holidays.on(Date.civil(2013, 1, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Zjavenie Pána (Traja králi)", (Holidays.on(Date.civil(2013, 1, 6), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Veľký piatok", (Holidays.on(Date.civil(2013, 3, 29), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Veľkonočný pondelok", (Holidays.on(Date.civil(2013, 4, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sviatok práce", (Holidays.on(Date.civil(2013, 5, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Deň víťazstva nad fašizmom", (Holidays.on(Date.civil(2013, 5, 8), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sviatok svätého Cyrila a svätého Metoda", (Holidays.on(Date.civil(2013, 7, 5), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Výročie Slovenského národného povstania", (Holidays.on(Date.civil(2013, 8, 29), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Deň Ústavy Slovenskej republiky", (Holidays.on(Date.civil(2013, 9, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sedembolestná Panna Mária", (Holidays.on(Date.civil(2013, 9, 15), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Sviatok všetkých svätých", (Holidays.on(Date.civil(2013, 11, 1), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Deň boja za slobodu a demokraciu", (Holidays.on(Date.civil(2013, 11, 17), [:sk], [:informal])[0] || {})[:name] + + assert_equal "Štedrý deň", (Holidays.on(Date.civil(2013, 12, 24), [:sk], [:informal])[0] || {})[:name] + + assert_equal "1. sviatok vianočný", (Holidays.on(Date.civil(2013, 12, 25), [:sk], [:informal])[0] || {})[:name] + + assert_equal "2. sviatok vianočný", (Holidays.on(Date.civil(2013, 12, 26), [:sk], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_southamerica.rb b/vendor/holidays/test/defs/test_defs_southamerica.rb new file mode 100644 index 00000000..81672260 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_southamerica.rb @@ -0,0 +1,307 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ar.yaml, definitions/br.yaml, definitions/cl.yaml, definitions/co.yaml, definitions/pe.yaml, definitions/ve.yaml +class SouthamericaDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_southamerica + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2016, 1, 1), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Lunes", (Holidays.on(Date.civil(2016, 2, 8), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Martes", (Holidays.on(Date.civil(2016, 2, 9), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Lunes", (Holidays.on(Date.civil(2017, 2, 27), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Martes", (Holidays.on(Date.civil(2017, 2, 28), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Lunes", (Holidays.on(Date.civil(2018, 2, 12), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Carnaval Martes", (Holidays.on(Date.civil(2018, 2, 13), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día Nacional de la Memoria por la Verdad y la Justicia", (Holidays.on(Date.civil(2016, 3, 24), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día del Veterano y de los Caídos en la Guerra de Malvinas", (Holidays.on(Date.civil(2016, 4, 2), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2016, 5, 1), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Revolución de Mayo", (Holidays.on(Date.civil(2016, 5, 25), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Bandera", (Holidays.on(Date.civil(2016, 6, 20), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Feriado puente turístico", (Holidays.on(Date.civil(2016, 7, 8), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 9), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Paso a la Inmortalidad del General José de San Martín", (Holidays.on(Date.civil(2016, 8, 15), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día del Respeto a la Diversidad Cultural", (Holidays.on(Date.civil(2016, 10, 12), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Día de la Soberanía Nacional", (Holidays.on(Date.civil(2016, 11, 20), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción de María", (Holidays.on(Date.civil(2016, 12, 8), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Feriado puente turístico", (Holidays.on(Date.civil(2016, 12, 9), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2016, 12, 25), [:ar], [:informal])[0] || {})[:name] + + assert_equal "Dia da Confraternização Universal", (Holidays.on(Date.civil(2008, 1, 1), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2005, 2, 8), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2006, 2, 28), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2007, 2, 20), [:br], [:informal])[0] || {})[:name] + + assert_equal "Carnaval", (Holidays.on(Date.civil(2008, 2, 5), [:br], [:informal])[0] || {})[:name] + + assert_equal "Sexta-feira Santa", (Holidays.on(Date.civil(2008, 3, 21), [:br], [:informal])[0] || {})[:name] + + assert_equal "Páscoa", (Holidays.on(Date.civil(2008, 3, 23), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia de Tiradentes", (Holidays.on(Date.civil(2008, 4, 21), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia do Trabalho", (Holidays.on(Date.civil(2008, 5, 1), [:br], [:informal])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2005, 5, 26), [:br], [:informal])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2007, 6, 7), [:br], [:informal])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2008, 5, 22), [:br], [:informal])[0] || {})[:name] + + assert_equal "Proclamação da Independência", (Holidays.on(Date.civil(2008, 9, 7), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia de Nossa Senhora Aparecida", (Holidays.on(Date.civil(2008, 10, 12), [:br], [:informal])[0] || {})[:name] + + assert_equal "Dia de Finados", (Holidays.on(Date.civil(2008, 11, 2), [:br], [:informal])[0] || {})[:name] + + assert_equal "Proclamação da República", (Holidays.on(Date.civil(2008, 11, 15), [:br], [:informal])[0] || {})[:name] + + assert_equal "Natal", (Holidays.on(Date.civil(2008, 12, 25), [:br], [:informal])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2014, 1, 1), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2011, 4, 22), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2011, 4, 23), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2012, 4, 6), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2012, 4, 7), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2013, 3, 29), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2013, 3, 30), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2014, 4, 18), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2014, 4, 19), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2015, 4, 3), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2015, 4, 4), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Sábado Santo", (Holidays.on(Date.civil(2016, 3, 26), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2014, 5, 1), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de las Glorias Navales", (Holidays.on(Date.civil(2014, 5, 21), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(1999, 6, 29), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2000, 6, 26), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2017, 6, 26), [:cl], [:informal])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2018, 7, 2), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de la Virgen del Carmen", (Holidays.on(Date.civil(2014, 7, 16), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Asunción de la Virgen", (Holidays.on(Date.civil(2014, 8, 15), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Independencia Nacional", (Holidays.on(Date.civil(2014, 9, 18), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de las Glorias del Ejército", (Holidays.on(Date.civil(2014, 9, 19), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Encuentro de Dos Mundos", (Holidays.on(Date.civil(1999, 10, 12), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Encuentro de Dos Mundos", (Holidays.on(Date.civil(2017, 10, 9), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de las Iglesias Evangélicas y Protestantes", (Holidays.on(Date.civil(2017, 10, 27), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2014, 11, 1), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción de María", (Holidays.on(Date.civil(2014, 12, 8), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2014, 12, 25), [:cl], [:informal])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2014, 1, 1), [:co])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2017, 1, 1), [:co])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2014, 1, 6), [:co])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2015, 1, 12), [:co])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2017, 1, 9), [:co])[0] || {})[:name] + + assert_equal "Día de San José", (Holidays.on(Date.civil(2014, 3, 24), [:co])[0] || {})[:name] + + assert_equal "Día de San José", (Holidays.on(Date.civil(2017, 3, 20), [:co])[0] || {})[:name] + + assert_equal "Día de San José", (Holidays.on(Date.civil(2018, 3, 19), [:co])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2015, 4, 2), [:co])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2017, 4, 13), [:co])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2018, 3, 29), [:co])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2014, 4, 18), [:co])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:co])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2018, 3, 30), [:co])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2013, 5, 1), [:co])[0] || {})[:name] + + assert_equal "Día del Trabajo", (Holidays.on(Date.civil(2016, 5, 1), [:co])[0] || {})[:name] + + assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2014, 6, 2), [:co])[0] || {})[:name] + + assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2016, 5, 9), [:co])[0] || {})[:name] + + assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2017, 5, 29), [:co])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2014, 6, 23), [:co])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2016, 5, 30), [:co])[0] || {})[:name] + + assert_equal "Corpus Christi", (Holidays.on(Date.civil(2017, 6, 19), [:co])[0] || {})[:name] + + assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2014, 6, 30), [:co])[0] || {})[:name] + + assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2016, 6, 6), [:co])[0] || {})[:name] + + assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2017, 6, 26), [:co])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2016, 7, 4), [:co])[0] || {})[:name] + + assert_equal "San Pedro y San Pablo", (Holidays.on(Date.civil(2017, 7, 3), [:co])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2014, 7, 20), [:co])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 20), [:co])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2018, 7, 20), [:co])[0] || {})[:name] + + assert_equal "Batalla de Boyacá", (Holidays.on(Date.civil(2014, 8, 7), [:co])[0] || {})[:name] + + assert_equal "Batalla de Boyacá", (Holidays.on(Date.civil(2016, 8, 7), [:co])[0] || {})[:name] + + assert_equal "Batalla de Boyacá", (Holidays.on(Date.civil(2018, 8, 7), [:co])[0] || {})[:name] + + assert_equal "La Asunción de la Virgen", (Holidays.on(Date.civil(2014, 8, 18), [:co])[0] || {})[:name] + + assert_equal "La Asunción de la Virgen", (Holidays.on(Date.civil(2016, 8, 15), [:co])[0] || {})[:name] + + assert_equal "La Asunción de la Virgen", (Holidays.on(Date.civil(2017, 8, 21), [:co])[0] || {})[:name] + + assert_equal "Día de la Raza", (Holidays.on(Date.civil(2014, 10, 13), [:co])[0] || {})[:name] + + assert_equal "Día de la Raza", (Holidays.on(Date.civil(2016, 10, 17), [:co])[0] || {})[:name] + + assert_equal "Día de la Raza", (Holidays.on(Date.civil(2017, 10, 16), [:co])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2014, 11, 3), [:co])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2016, 11, 7), [:co])[0] || {})[:name] + + assert_equal "Día de Todos los Santos", (Holidays.on(Date.civil(2017, 11, 6), [:co])[0] || {})[:name] + + assert_equal "Independencia de Cartagena", (Holidays.on(Date.civil(2014, 11, 17), [:co])[0] || {})[:name] + + assert_equal "Independencia de Cartagena", (Holidays.on(Date.civil(2016, 11, 14), [:co])[0] || {})[:name] + + assert_equal "Independencia de Cartagena", (Holidays.on(Date.civil(2017, 11, 13), [:co])[0] || {})[:name] + + assert_equal "Día de la Inmaculada Concepción", (Holidays.on(Date.civil(2013, 12, 8), [:co])[0] || {})[:name] + + assert_equal "Día de la Inmaculada Concepción", (Holidays.on(Date.civil(2014, 12, 8), [:co])[0] || {})[:name] + + assert_equal "Día de la Inmaculada Concepción", (Holidays.on(Date.civil(2016, 12, 8), [:co])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2014, 12, 25), [:co])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2016, 12, 25), [:co])[0] || {})[:name] + + assert_equal "Navidad", (Holidays.on(Date.civil(2017, 12, 25), [:co])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2016, 1, 1), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de los Reyes Magos", (Holidays.on(Date.civil(2016, 1, 6), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2016, 3, 24), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2016, 3, 25), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Pascua", (Holidays.on(Date.civil(2016, 3, 27), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2016, 5, 1), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de la Madre", (Holidays.on(Date.civil(2016, 5, 8), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de la Bandera", (Holidays.on(Date.civil(2016, 6, 7), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día del Padre", (Holidays.on(Date.civil(2016, 6, 19), [:pe], [:informal])[0] || {})[:name] + + assert_equal "San Pablo y San Pedro", (Holidays.on(Date.civil(2016, 6, 29), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Primer Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 28), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Segundo Día de la Independencia", (Holidays.on(Date.civil(2016, 7, 29), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Santa Rosa de Lima", (Holidays.on(Date.civil(2016, 8, 30), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Día de las Fuerzas Armadas", (Holidays.on(Date.civil(2016, 9, 24), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Batalla de Angamos", (Holidays.on(Date.civil(2016, 10, 8), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Todos los Santos", (Holidays.on(Date.civil(2016, 11, 1), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Inmaculada Concepción", (Holidays.on(Date.civil(2016, 12, 8), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Navidad del Señor", (Holidays.on(Date.civil(2016, 12, 25), [:pe], [:informal])[0] || {})[:name] + + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2013, 1, 1), [:ve])[0] || {})[:name] + + assert_equal "Lunes Carnaval", (Holidays.on(Date.civil(2013, 2, 11), [:ve])[0] || {})[:name] + + assert_equal "Martes Carnaval", (Holidays.on(Date.civil(2013, 2, 12), [:ve])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2013, 3, 28), [:ve])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2013, 3, 29), [:ve])[0] || {})[:name] + + assert_equal "Declaración Independencia", (Holidays.on(Date.civil(2013, 4, 19), [:ve])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2013, 5, 1), [:ve])[0] || {})[:name] + + assert_equal "Aniversario Batalla de Carabobo", (Holidays.on(Date.civil(2013, 6, 24), [:ve])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2013, 7, 5), [:ve])[0] || {})[:name] + + assert_equal "Natalicio de Simón Bolívar", (Holidays.on(Date.civil(2013, 7, 24), [:ve])[0] || {})[:name] + + assert_equal "Día de la Resistencia Indígena", (Holidays.on(Date.civil(2013, 10, 12), [:ve])[0] || {})[:name] + + assert_equal "Día de Navidad", (Holidays.on(Date.civil(2013, 12, 25), [:ve])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_th.rb b/vendor/holidays/test/defs/test_defs_th.rb new file mode 100644 index 00000000..9fd03f78 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_th.rb @@ -0,0 +1,33 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/th.yaml +class ThDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_th + assert_equal "วันขึ้นปีใหม่", (Holidays.on(Date.civil(20019, 1, 1), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันจักรี", (Holidays.on(Date.civil(2019, 4, 6), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันสงกรานต์", (Holidays.on(Date.civil(2019, 4, 13), [:th], [:informal])[0] || {})[:name] +assert_equal "วันสงกรานต์", (Holidays.on(Date.civil(2019, 4, 14), [:th], [:informal])[0] || {})[:name] +assert_equal "วันสงกรานต์", (Holidays.on(Date.civil(2019, 4, 15), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันเฉลิมพระชนมพรรษาสมเด็จพระเจ้าอยู่หัวมหาวชิราลงกรณ บดินทรเทพยวรางกูร", (Holidays.on(Date.civil(2019, 7, 28), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถในรัชกาลที่ ๙", (Holidays.on(Date.civil(2007, 8, 12), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันคล้ายวันสวรรคตพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร", (Holidays.on(Date.civil(2019, 10, 13), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันปิยมหาราช", (Holidays.on(Date.civil(2019, 10, 23), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันคล้ายวันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร", (Holidays.on(Date.civil(2019, 12, 5), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันรัฐธรรมนูญ", (Holidays.on(Date.civil(2019, 12, 10), [:th], [:informal])[0] || {})[:name] + + assert_equal "วันสิ้นปี", (Holidays.on(Date.civil(2019, 12, 31), [:th], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_tn.rb b/vendor/holidays/test/defs/test_defs_tn.rb new file mode 100644 index 00000000..80b22781 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_tn.rb @@ -0,0 +1,27 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/tn.yaml +class TnDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_tn + assert_equal "Jour de l'an", (Holidays.on(Date.civil(2016, 1, 1), [:tn])[0] || {})[:name] + + assert_equal "Fête de la Révolution et de la Jeunesse", (Holidays.on(Date.civil(2016, 1, 14), [:tn])[0] || {})[:name] + + assert_equal "Fête de l'Indépendance", (Holidays.on(Date.civil(2016, 3, 20), [:tn])[0] || {})[:name] + + assert_equal "Journée des Martyrs", (Holidays.on(Date.civil(2016, 4, 9), [:tn])[0] || {})[:name] + + assert_equal "Fête du travail", (Holidays.on(Date.civil(2016, 5, 1), [:tn])[0] || {})[:name] + + assert_equal "Fête de la République", (Holidays.on(Date.civil(2016, 7, 25), [:tn])[0] || {})[:name] + + assert_equal "Fête de la Femme et de la Famille", (Holidays.on(Date.civil(2016, 8, 13), [:tn])[0] || {})[:name] + + assert_equal "Fête de l'Évacuation", (Holidays.on(Date.civil(2016, 10, 15), [:tn])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_tr.rb b/vendor/holidays/test/defs/test_defs_tr.rb new file mode 100644 index 00000000..16f172c5 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_tr.rb @@ -0,0 +1,60 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/tr.yaml +class TrDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_tr + assert_equal "Yılbaşı", (Holidays.on(Date.civil(2017, 1, 1), [:tr])[0] || {})[:name] + + assert_equal "Ulusal Egemenlik ve Çocuk Bayramı", (Holidays.on(Date.civil(2017, 4, 23), [:tr])[0] || {})[:name] + + assert_equal "Emek ve Dayanışma Günü", (Holidays.on(Date.civil(2017, 5, 1), [:tr])[0] || {})[:name] + + assert_equal "Atatürk'ü Anma Gençlik ve Spor Bayramı", (Holidays.on(Date.civil(2017, 5, 19), [:tr])[0] || {})[:name] + + assert_equal "Zafer Bayramı", (Holidays.on(Date.civil(2017, 8, 30), [:tr])[0] || {})[:name] + + assert_equal "Cumhuriyet Bayramı", (Holidays.on(Date.civil(2017, 10, 29), [:tr])[0] || {})[:name] + + assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2017, 6, 25), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2018, 6, 15), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2019, 6, 4), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2020, 5, 24), [:tr])[0] || {})[:name] + + assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2017, 6, 26), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2018, 6, 16), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2019, 6, 5), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2020, 5, 25), [:tr])[0] || {})[:name] + + assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2017, 6, 27), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2018, 6, 17), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2019, 6, 6), [:tr])[0] || {})[:name] +assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2020, 5, 26), [:tr])[0] || {})[:name] + + assert_equal "Demokrasi ve Milli Birlik Günü", (Holidays.on(Date.civil(2017, 7, 15), [:tr])[0] || {})[:name] + + assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2017, 9, 1), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2018, 8, 21), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2019, 8, 11), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2020, 7, 31), [:tr])[0] || {})[:name] + + assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2017, 9, 2), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2018, 8, 22), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2019, 8, 12), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2020, 8, 1), [:tr])[0] || {})[:name] + + assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2017, 9, 3), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2018, 8, 23), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2019, 8, 13), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2020, 8, 2), [:tr])[0] || {})[:name] + + assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2017, 9, 4), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2018, 8, 24), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2019, 8, 14), [:tr])[0] || {})[:name] +assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2020, 8, 3), [:tr])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ua.rb b/vendor/holidays/test/defs/test_defs_ua.rb new file mode 100644 index 00000000..52b47ae9 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ua.rb @@ -0,0 +1,41 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ua.yaml +class UaDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ua + assert_equal "Новий Рік", (Holidays.on(Date.civil(2018, 1, 1), [:ua])[0] || {})[:name] + + assert_equal "Різдво Христове", (Holidays.on(Date.civil(2018, 1, 7), [:ua])[0] || {})[:name] + + assert_equal "Різдво Христове", (Holidays.on(Date.civil(2018, 1, 8), [:ua], [:observed])[0] || {})[:name] + + assert_equal "Міжнародний жіночий день", (Holidays.on(Date.civil(2018, 3, 8), [:ua])[0] || {})[:name] + + assert_equal "Великдень", (Holidays.on(Date.civil(2018, 4, 8), [:ua])[0] || {})[:name] + + assert_equal "Великдень", (Holidays.on(Date.civil(2018, 4, 9), [:ua], [:observed])[0] || {})[:name] + + assert_equal "День праці", (Holidays.on(Date.civil(2018, 5, 1), [:ua])[0] || {})[:name] + + assert_equal "День перемоги над нацизмом у Другій світовій війні", (Holidays.on(Date.civil(2018, 5, 9), [:ua])[0] || {})[:name] + + assert_equal "Трійця", (Holidays.on(Date.civil(2018, 5, 27), [:ua])[0] || {})[:name] + + assert_equal "Трійця", (Holidays.on(Date.civil(2018, 5, 28), [:ua], [:observed])[0] || {})[:name] + + assert_equal "День Конституції", (Holidays.on(Date.civil(2018, 6, 28), [:ua])[0] || {})[:name] + + assert_equal "День Незалежності", (Holidays.on(Date.civil(2018, 8, 24), [:ua])[0] || {})[:name] + + assert_equal "День захисника України", (Holidays.on(Date.civil(2018, 10, 14), [:ua])[0] || {})[:name] + + assert_equal "День захисника України", (Holidays.on(Date.civil(2018, 10, 15), [:ua], [:observed])[0] || {})[:name] + + assert_equal "Різдво Христове", (Holidays.on(Date.civil(2018, 12, 25), [:ua])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_unitednations.rb b/vendor/holidays/test/defs/test_defs_unitednations.rb new file mode 100644 index 00000000..8f43b5d0 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_unitednations.rb @@ -0,0 +1,11 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/unitednations.yaml +class UnitednationsDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_unitednations + end +end diff --git a/vendor/holidays/test/defs/test_defs_ups.rb b/vendor/holidays/test/defs/test_defs_ups.rb new file mode 100644 index 00000000..0c5db56b --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ups.rb @@ -0,0 +1,31 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ups.yaml +class UpsDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ups + assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:ups])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2008, 5, 26), [:ups])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2008, 7, 4), [:ups])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2008, 9, 1), [:ups])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2008, 11, 27), [:ups])[0] || {})[:name] + + assert_equal "Day After Thanksgiving", (Holidays.on(Date.civil(2008, 11, 28), [:ups])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2013, 11, 28), [:ups])[0] || {})[:name] + + assert_equal "Day After Thanksgiving", (Holidays.on(Date.civil(2013, 11, 29), [:ups])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2008, 12, 25), [:ups])[0] || {})[:name] + + assert_equal "New Year's Eve", (Holidays.on(Date.civil(2008, 12, 31), [:ups])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_us.rb b/vendor/holidays/test/defs/test_defs_us.rb new file mode 100644 index 00000000..360b301b --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_us.rb @@ -0,0 +1,383 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/us.yaml, definitions/northamericainformal.yaml +class UsDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_us + assert_equal "Shrove Tuesday", (Holidays.on(Date.civil(2017, 2, 28), [:us_fl])[0] || {})[:name] +assert_equal "Shrove Tuesday", (Holidays.on(Date.civil(2018, 2, 13), [:us_fl])[0] || {})[:name] +assert_equal "Shrove Tuesday", (Holidays.on(Date.civil(2019, 3, 5), [:us_fl])[0] || {})[:name] + + assert_equal "Mardi Gras Day", (Holidays.on(Date.civil(2017, 2, 28), [:us_la])[0] || {})[:name] +assert_equal "Mardi Gras Day", (Holidays.on(Date.civil(2018, 2, 13), [:us_la])[0] || {})[:name] +assert_equal "Mardi Gras Day", (Holidays.on(Date.civil(2019, 3, 5), [:us_la])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 2, 28), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 2, 13), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2017, 4, 14), [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2018, 3, 30), [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2019, 4, 19), [:us_ct, :us_de, :us_gu, :us_hi, :us_in, :us_ky, :us_la, :us_nj, :us_nc, :us_nd, :us_pr, :us_tn])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2017, 4, 14), [:us], [:informal])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2018, 3, 30), [:us], [:informal])[0] || {})[:name] +assert_equal "Good Friday", (Holidays.on(Date.civil(2019, 4, 19), [:us], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 2, 28), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 2, 13), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 16), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 4, 1), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 4, 21), [:us])[0] || {})[:name] + + assert_equal "Easter Sunday", (Holidays.on(Date.civil(2017, 4, 16), [:us], [:informal])[0] || {})[:name] +assert_equal "Easter Sunday", (Holidays.on(Date.civil(2018, 4, 1), [:us], [:informal])[0] || {})[:name] +assert_equal "Easter Sunday", (Holidays.on(Date.civil(2019, 4, 21), [:us], [:informal])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 1), [:us])[0] || {})[:name] + + assert_equal "New Year's Day", (Holidays.on(Date.civil(2017, 1, 2), [:us], [:observed])[0] || {})[:name] + + assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2017, 1, 16), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2018, 1, 15), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2019, 1, 21), [:us])[0] || {})[:name] + + assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2016, 1, 18), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2017, 1, 16), [:us])[0] || {})[:name] +assert_equal "Martin Luther King, Jr. Day", (Holidays.on(Date.civil(2018, 1, 15), [:us])[0] || {})[:name] + + assert_equal "Martin Luther King's and Robert E. Lee's Birthdays", (Holidays.on(Date.civil(2016, 1, 18), [:us_ms])[0] || {})[:name] +assert_equal "Martin Luther King's and Robert E. Lee's Birthdays", (Holidays.on(Date.civil(2017, 1, 16), [:us_ms])[0] || {})[:name] +assert_equal "Martin Luther King's and Robert E. Lee's Birthdays", (Holidays.on(Date.civil(2018, 1, 15), [:us_ms])[0] || {})[:name] + + assert_equal "Idaho Human Rights Day", (Holidays.on(Date.civil(2016, 1, 18), [:us_id])[0] || {})[:name] +assert_equal "Idaho Human Rights Day", (Holidays.on(Date.civil(2017, 1, 16), [:us_id])[0] || {})[:name] +assert_equal "Idaho Human Rights Day", (Holidays.on(Date.civil(2018, 1, 15), [:us_id])[0] || {})[:name] + + assert_equal "Civil Rights Day", (Holidays.on(Date.civil(2016, 1, 18), [:us_ar])[0] || {})[:name] +assert_equal "Civil Rights Day", (Holidays.on(Date.civil(2017, 1, 16), [:us_ar])[0] || {})[:name] +assert_equal "Civil Rights Day", (Holidays.on(Date.civil(2018, 1, 15), [:us_ar])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 1, 20), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 1, 20), [:us])[0] || {})[:name] + + assert_equal "Inauguration Day", (Holidays.on(Date.civil(2017, 1, 20), [:us_tx, :us_dc, :us_la, :us_md, :us_va])[0] || {})[:name] +assert_equal "Inauguration Day", (Holidays.on(Date.civil(2021, 1, 20), [:us_tx, :us_dc, :us_la, :us_md, :us_va])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 1, 13), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 1, 12), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 1, 18), [:us])[0] || {})[:name] + + assert_equal "Lee-Jackson Day", (Holidays.on(Date.civil(2017, 1, 13), [:us_va])[0] || {})[:name] +assert_equal "Lee-Jackson Day", (Holidays.on(Date.civil(2018, 1, 12), [:us_va])[0] || {})[:name] +assert_equal "Lee-Jackson Day", (Holidays.on(Date.civil(2019, 1, 18), [:us_va])[0] || {})[:name] + + assert_equal "Confederate Heroes Day", (Holidays.on(Date.civil(2017, 1, 19), [:us_tx])[0] || {})[:name] + + assert_equal "Presidents' Day", (Holidays.on(Date.civil(2008, 2, 18), [:us])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2017, 2, 20), [:us])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2018, 2, 19), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 6), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 5), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 4), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 7), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 6), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name] + + assert_equal "Town Meeting Day", (Holidays.on(Date.civil(2017, 3, 7), [:us_vt])[0] || {})[:name] +assert_equal "Town Meeting Day", (Holidays.on(Date.civil(2018, 3, 6), [:us_vt])[0] || {})[:name] +assert_equal "Town Meeting Day", (Holidays.on(Date.civil(2019, 3, 5), [:us_vt])[0] || {})[:name] + + assert_equal "Texas Independence Day", (Holidays.on(Date.civil(2017, 3, 2), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 27), [:us], [:observed])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 26), [:us], [:observed])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2022, 3, 25), [:us], [:observed])[0] || {})[:name] + + assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2017, 3, 27), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2018, 3, 26), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2022, 3, 25), [:us_hi], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 26), [:us])[0] || {})[:name] + + assert_equal "Prince Jonah Kuhio Kalanianaole Day", (Holidays.on(Date.civil(2017, 3, 26), [:us_hi])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 3, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 3, 26), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 3, 25), [:us])[0] || {})[:name] + + assert_equal "Seward's Day", (Holidays.on(Date.civil(2017, 3, 27), [:us_ak])[0] || {})[:name] +assert_equal "Seward's Day", (Holidays.on(Date.civil(2018, 3, 26), [:us_ak])[0] || {})[:name] +assert_equal "Seward's Day", (Holidays.on(Date.civil(2019, 3, 25), [:us_ak])[0] || {})[:name] + + assert_equal "César Chávez Day", (Holidays.on(Date.civil(2017, 3, 31), [:us_ca])[0] || {})[:name] + + assert_equal "Emancipation Day", (Holidays.on(Date.civil(2023, 4, 17), [:us_dc, :us_ca], [:observed])[0] || {})[:name] +assert_equal "Emancipation Day", (Holidays.on(Date.civil(2022, 4, 15), [:us_dc, :us_ca], [:observed])[0] || {})[:name] +assert_equal "Emancipation Day", (Holidays.on(Date.civil(2028, 4, 17), [:us_dc, :us_ca], [:observed])[0] || {})[:name] + + assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 4, 16), [:us_dc])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 17), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 4, 16), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 4, 15), [:us])[0] || {})[:name] + + assert_equal "Patriots' Day", (Holidays.on(Date.civil(2017, 4, 17), [:us_me, :us_ma])[0] || {})[:name] +assert_equal "Patriots' Day", (Holidays.on(Date.civil(2018, 4, 16), [:us_me, :us_ma])[0] || {})[:name] +assert_equal "Patriots' Day", (Holidays.on(Date.civil(2019, 4, 15), [:us_me, :us_ma])[0] || {})[:name] + + assert_equal "San Jacinto Day", (Holidays.on(Date.civil(2017, 4, 21), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 24), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 4, 30), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 4, 29), [:us])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2017, 4, 24), [:us_al, :us_ms])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2018, 4, 30), [:us_al, :us_ms])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2019, 4, 29), [:us_al, :us_ms])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 4, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 4, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2026, 4, 27), [:us])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2015, 4, 27), [:us_fl], [:observed])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2020, 4, 27), [:us_fl], [:observed])[0] || {})[:name] +assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2026, 4, 27), [:us_fl], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 4, 26), [:us])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2017, 4, 26), [:us_fl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2015, 4, 20), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 4, 26), [:us])[0] || {})[:name] + + assert_equal "State Holiday", (Holidays.on(Date.civil(2015, 4, 20), [:us_ga])[0] || {})[:name] +assert_equal "State Holiday", (Holidays.on(Date.civil(2021, 4, 26), [:us_ga])[0] || {})[:name] + + assert_equal "Arbor Day", (Holidays.on(Date.civil(2017, 4, 28), [:us_ne])[0] || {})[:name] + + assert_equal "Truman Day", (Holidays.on(Date.civil(2017, 5, 8), [:us_mo])[0] || {})[:name] + + assert_equal "Confederate Memorial Day", (Holidays.on(Date.civil(2017, 5, 10), [:us_sc])[0] || {})[:name] + + assert_equal "Memorial Day", (Holidays.on(Date.civil(2017, 5, 29), [:us])[0] || {})[:name] +assert_equal "Memorial Day", (Holidays.on(Date.civil(2018, 5, 28), [:us])[0] || {})[:name] +assert_equal "Memorial Day", (Holidays.on(Date.civil(2019, 5, 27), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 5), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 6, 4), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 6, 3), [:us])[0] || {})[:name] + + assert_equal "Jefferson Davis' Birthday", (Holidays.on(Date.civil(2017, 6, 5), [:us_al])[0] || {})[:name] +assert_equal "Jefferson Davis' Birthday", (Holidays.on(Date.civil(2018, 6, 4), [:us_al])[0] || {})[:name] +assert_equal "Jefferson Davis' Birthday", (Holidays.on(Date.civil(2019, 6, 3), [:us_al])[0] || {})[:name] + + assert_equal "Birthday of Jefferson Davis", (Holidays.on(Date.civil(2017, 6, 3), [:us_fl])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 12), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 6, 11), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2022, 6, 10), [:us])[0] || {})[:name] + + assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2017, 6, 12), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2018, 6, 11), [:us_hi], [:observed])[0] || {})[:name] +assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2022, 6, 10), [:us_hi], [:observed])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 11), [:us])[0] || {})[:name] + + assert_equal "King Kamehameha I Day", (Holidays.on(Date.civil(2017, 6, 11), [:us_hi])[0] || {})[:name] + + assert_equal "Emancipation Day in Texas", (Holidays.on(Date.civil(2017, 6, 19), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 6, 20), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 6, 19), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 6, 21), [:us])[0] || {})[:name] + + assert_equal "West Virginia Day", (Holidays.on(Date.civil(2017, 6, 20), [:us_wv], [:observed])[0] || {})[:name] +assert_equal "West Virginia Day", (Holidays.on(Date.civil(2020, 6, 19), [:us_wv], [:observed])[0] || {})[:name] +assert_equal "West Virginia Day", (Holidays.on(Date.civil(2021, 6, 21), [:us_wv], [:observed])[0] || {})[:name] + + assert_equal "West Virginia Day", (Holidays.on(Date.civil(2017, 6, 20), [:us_wv])[0] || {})[:name] + + assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 7, 3), [:us_vi])[0] || {})[:name] + + assert_equal "Independence Day", (Holidays.on(Date.civil(2020, 7, 4), [:us, :us_va])[0] || {})[:name] +assert_equal "Independence Day", (Holidays.on(Date.civil(2021, 7, 4), [:us, :us_va])[0] || {})[:name] +assert_equal "Independence Day", (Holidays.on(Date.civil(2026, 7, 4), [:us, :us_va])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2020, 7, 3), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 7, 5), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2026, 7, 3), [:us])[0] || {})[:name] + + assert_equal "Independence Day (Holiday)", (Holidays.on(Date.civil(2020, 7, 3), [:us_va])[0] || {})[:name] +assert_equal "Independence Day (Holiday)", (Holidays.on(Date.civil(2021, 7, 5), [:us_va])[0] || {})[:name] +assert_equal "Independence Day (Holiday)", (Holidays.on(Date.civil(2026, 7, 3), [:us_va])[0] || {})[:name] + + assert_equal "Pioneer Day", (Holidays.on(Date.civil(2020, 7, 24), [:us_ut])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 8, 14), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 8, 10), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 8, 9), [:us])[0] || {})[:name] + + assert_equal "Victory Day", (Holidays.on(Date.civil(2017, 8, 14), [:us_ri])[0] || {})[:name] +assert_equal "Victory Day", (Holidays.on(Date.civil(2020, 8, 10), [:us_ri])[0] || {})[:name] +assert_equal "Victory Day", (Holidays.on(Date.civil(2021, 8, 9), [:us_ri])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 8, 16), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 8, 17), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2025, 8, 15), [:us])[0] || {})[:name] + + assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2017, 8, 16), [:us_vt], [:observed])[0] || {})[:name] +assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2020, 8, 17), [:us_vt], [:observed])[0] || {})[:name] +assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2025, 8, 15), [:us_vt], [:observed])[0] || {})[:name] + + assert_equal "Bennington Battle Day", (Holidays.on(Date.civil(2017, 8, 16), [:us_vt])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 8, 18), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2020, 8, 21), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2025, 8, 15), [:us])[0] || {})[:name] + + assert_equal "Statehood Day", (Holidays.on(Date.civil(2017, 8, 18), [:us_hi])[0] || {})[:name] +assert_equal "Statehood Day", (Holidays.on(Date.civil(2020, 8, 21), [:us_hi])[0] || {})[:name] +assert_equal "Statehood Day", (Holidays.on(Date.civil(2025, 8, 15), [:us_hi])[0] || {})[:name] + + assert_equal "Lyndon Baines Johnson Day", (Holidays.on(Date.civil(2017, 8, 27), [:us_tx])[0] || {})[:name] + + assert_equal "Labor Day", (Holidays.on(Date.civil(2017, 9, 4), [:us])[0] || {})[:name] +assert_equal "Labor Day", (Holidays.on(Date.civil(2018, 9, 3), [:us])[0] || {})[:name] +assert_equal "Labor Day", (Holidays.on(Date.civil(2019, 9, 2), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 9, 21), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 9, 10), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 9, 30), [:us])[0] || {})[:name] + + assert_equal "Rosh Hashanah", (Holidays.on(Date.civil(2017, 9, 21), [:us_tx])[0] || {})[:name] +assert_equal "Rosh Hashanah", (Holidays.on(Date.civil(2018, 9, 10), [:us_tx])[0] || {})[:name] +assert_equal "Rosh Hashanah", (Holidays.on(Date.civil(2019, 9, 30), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 9, 30), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 9, 19), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 9), [:us])[0] || {})[:name] + + assert_equal "Yom Kippur", (Holidays.on(Date.civil(2017, 9, 30), [:us_tx])[0] || {})[:name] +assert_equal "Yom Kippur", (Holidays.on(Date.civil(2018, 9, 19), [:us_tx])[0] || {})[:name] +assert_equal "Yom Kippur", (Holidays.on(Date.civil(2019, 10, 9), [:us_tx])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 10, 9), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 10, 8), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 14), [:us])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2017, 10, 9), [: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])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2018, 10, 8), [: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])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2019, 10, 14), [: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])[0] || {})[:name] + + assert_equal "Columbus Day", (Holidays.on(Date.civil(2017, 10, 9), [: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], [:informal])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2018, 10, 8), [: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], [:informal])[0] || {})[:name] +assert_equal "Columbus Day", (Holidays.on(Date.civil(2019, 10, 14), [: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], [:informal])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 10, 9), [: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])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 10, 8), [: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])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 14), [: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])[0] || {})[:name] + + assert_equal "Alaska Day", (Holidays.on(Date.civil(2017, 10, 18), [:us_ak])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 10, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 10, 26), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 10, 25), [:us])[0] || {})[:name] + + assert_equal "Nevada Day", (Holidays.on(Date.civil(2017, 10, 27), [:us_nv])[0] || {})[:name] +assert_equal "Nevada Day", (Holidays.on(Date.civil(2018, 10, 26), [:us_nv])[0] || {})[:name] +assert_equal "Nevada Day", (Holidays.on(Date.civil(2019, 10, 25), [:us_nv])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 11, 7), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 11, 6), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2021, 11, 2), [:us])[0] || {})[:name] + + assert_equal "Election Day", (Holidays.on(Date.civil(2017, 11, 7), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name] +assert_equal "Election Day", (Holidays.on(Date.civil(2018, 11, 6), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name] +assert_equal "Election Day", (Holidays.on(Date.civil(2021, 11, 2), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2017, 11, 10), [:us], [:observed])[0] || {})[:name] +assert_equal "Veterans Day", (Holidays.on(Date.civil(2018, 11, 12), [:us], [:observed])[0] || {})[:name] +assert_equal "Veterans Day", (Holidays.on(Date.civil(2019, 11, 11), [:us], [:observed])[0] || {})[:name] + + assert_equal "Veterans Day", (Holidays.on(Date.civil(2017, 11, 11), [:us])[0] || {})[:name] + + assert_equal "Thanksgiving", (Holidays.on(Date.civil(2017, 11, 23), [:us])[0] || {})[:name] +assert_equal "Thanksgiving", (Holidays.on(Date.civil(2018, 11, 22), [:us])[0] || {})[:name] +assert_equal "Thanksgiving", (Holidays.on(Date.civil(2019, 11, 28), [:us])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2017, 11, 24), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2018, 11, 23), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2019, 11, 29), [:us])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2017, 11, 24), [:us_nv])[0] || {})[:name] +assert_equal "Family Day", (Holidays.on(Date.civil(2018, 11, 23), [:us_nv])[0] || {})[:name] +assert_equal "Family Day", (Holidays.on(Date.civil(2019, 11, 29), [:us_nv])[0] || {})[:name] + + assert_equal "State Holiday", (Holidays.on(Date.civil(2017, 11, 24), [:us_ga])[0] || {})[:name] +assert_equal "State Holiday", (Holidays.on(Date.civil(2018, 11, 23), [:us_ga])[0] || {})[:name] +assert_equal "State Holiday", (Holidays.on(Date.civil(2019, 11, 29), [:us_ga])[0] || {})[:name] + + assert_equal "Presidents' Day", (Holidays.on(Date.civil(2017, 11, 24), [:us_nm])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2018, 11, 23), [:us_nm])[0] || {})[:name] +assert_equal "Presidents' Day", (Holidays.on(Date.civil(2019, 11, 29), [:us_nm])[0] || {})[:name] + + assert_equal "Lincoln's Birthday", (Holidays.on(Date.civil(2017, 11, 24), [:us_in])[0] || {})[:name] +assert_equal "Lincoln's Birthday", (Holidays.on(Date.civil(2018, 11, 23), [:us_in])[0] || {})[:name] +assert_equal "Lincoln's Birthday", (Holidays.on(Date.civil(2019, 11, 29), [:us_in])[0] || {})[:name] + + assert_equal "American Indian Heritage Day", (Holidays.on(Date.civil(2017, 11, 24), [:us_md])[0] || {})[:name] +assert_equal "American Indian Heritage Day", (Holidays.on(Date.civil(2018, 11, 23), [:us_md])[0] || {})[:name] +assert_equal "American Indian Heritage Day", (Holidays.on(Date.civil(2019, 11, 29), [:us_md])[0] || {})[:name] + + assert_equal "Day after Thanksgiving (Black Friday)", (Holidays.on(Date.civil(2017, 11, 24), [: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])[0] || {})[:name] +assert_equal "Day after Thanksgiving (Black Friday)", (Holidays.on(Date.civil(2018, 11, 23), [: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])[0] || {})[:name] +assert_equal "Day after Thanksgiving (Black Friday)", (Holidays.on(Date.civil(2019, 11, 29), [: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])[0] || {})[:name] + + assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2022, 12, 23), [:us_mi, :us_sc, :us_va])[0] || {})[:name] +assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2023, 12, 22), [:us_mi, :us_sc, :us_va])[0] || {})[:name] +assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2028, 12, 22), [:us_mi, :us_sc, :us_va])[0] || {})[:name] + + assert_equal "Christmas Eve", (Holidays.on(Date.civil(2017, 12, 24), [:us_ar, :us_mi, :us_nc, :us_va, :us_sc, :us_tx, :us_wi])[0] || {})[:name] + + assert_nil (Holidays.on(Date.civil(2021, 12, 27), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2022, 12, 26), [:us])[0] || {})[:name] +assert_nil (Holidays.on(Date.civil(2027, 12, 27), [:us])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 24), [:us], [:observed])[0] || {})[:name] +assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:us], [:observed])[0] || {})[:name] +assert_equal "Christmas Day", (Holidays.on(Date.civil(2027, 12, 24), [:us], [:observed])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2017, 12, 25), [:us])[0] || {})[:name] + + assert_equal "Day after Christmas", (Holidays.on(Date.civil(2017, 12, 26), [:us_ar, :us_nc, :us_ok, :us_sc, :us_tn, :us_tx])[0] || {})[:name] + + assert_equal "New Year's Eve", (Holidays.on(Date.civil(2017, 12, 31), [:us_mi, :us_wi])[0] || {})[:name] + + assert_equal "Groundhog Day", (Holidays.on(Date.civil(2013, 2, 2), [:us], [:informal])[0] || {})[:name] + + assert_equal "Valentine's Day", (Holidays.on(Date.civil(2013, 2, 14), [:us], [:informal])[0] || {})[:name] + + assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2013, 3, 17), [:us], [:informal])[0] || {})[:name] + + assert_equal "April Fool's Day", (Holidays.on(Date.civil(2013, 4, 1), [:us], [:informal])[0] || {})[:name] + + assert_equal "Earth Day", (Holidays.on(Date.civil(2013, 4, 22), [:us], [:informal])[0] || {})[:name] + + assert_equal "Mother's Day", (Holidays.on(Date.civil(2013, 5, 12), [:us], [:informal])[0] || {})[:name] + + assert_equal "Armed Forces Day", (Holidays.on(Date.civil(2013, 5, 18), [:us], [:informal])[0] || {})[:name] + + assert_equal "Father's Day", (Holidays.on(Date.civil(2013, 6, 16), [:us], [:informal])[0] || {})[:name] + + assert_equal "Halloween", (Holidays.on(Date.civil(2013, 10, 31), [:us], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_ve.rb b/vendor/holidays/test/defs/test_defs_ve.rb new file mode 100644 index 00000000..34904058 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_ve.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/ve.yaml +class VeDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ve + assert_equal "Año Nuevo", (Holidays.on(Date.civil(2013, 1, 1), [:ve])[0] || {})[:name] + + assert_equal "Lunes Carnaval", (Holidays.on(Date.civil(2013, 2, 11), [:ve])[0] || {})[:name] + + assert_equal "Martes Carnaval", (Holidays.on(Date.civil(2013, 2, 12), [:ve])[0] || {})[:name] + + assert_equal "Jueves Santo", (Holidays.on(Date.civil(2013, 3, 28), [:ve])[0] || {})[:name] + + assert_equal "Viernes Santo", (Holidays.on(Date.civil(2013, 3, 29), [:ve])[0] || {})[:name] + + assert_equal "Declaración Independencia", (Holidays.on(Date.civil(2013, 4, 19), [:ve])[0] || {})[:name] + + assert_equal "Día del Trabajador", (Holidays.on(Date.civil(2013, 5, 1), [:ve])[0] || {})[:name] + + assert_equal "Aniversario Batalla de Carabobo", (Holidays.on(Date.civil(2013, 6, 24), [:ve])[0] || {})[:name] + + assert_equal "Día de la Independencia", (Holidays.on(Date.civil(2013, 7, 5), [:ve])[0] || {})[:name] + + assert_equal "Natalicio de Simón Bolívar", (Holidays.on(Date.civil(2013, 7, 24), [:ve])[0] || {})[:name] + + assert_equal "Día de la Resistencia Indígena", (Holidays.on(Date.civil(2013, 10, 12), [:ve])[0] || {})[:name] + + assert_equal "Día de Navidad", (Holidays.on(Date.civil(2013, 12, 25), [:ve])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_vi.rb b/vendor/holidays/test/defs/test_defs_vi.rb new file mode 100644 index 00000000..69774718 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_vi.rb @@ -0,0 +1,22 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/vi.yaml +class ViDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_vi + assert_equal "Tết dương lịch", (Holidays.on(Date.civil(2014, 1, 1), [:vi])[0] || {})[:name] + + assert_equal "Ngày Giải phóng miền Nam, thống nhất đất nước", (Holidays.on(Date.civil(2014, 4, 30), [:vi])[0] || {})[:name] + + assert_equal "Ngày Quốc tế Lao động", (Holidays.on(Date.civil(2014, 5, 1), [:vi])[0] || {})[:name] + + assert_equal "Quốc khánh", (Holidays.on(Date.civil(2014, 9, 2), [:vi])[0] || {})[:name] + + assert_equal "Giỗ tổ Hùng Vương", (Holidays.on(Date.civil(2017, 4, 6), [:vi])[0] || {})[:name] +assert_equal "Giỗ tổ Hùng Vương", (Holidays.on(Date.civil(2018, 3, 27), [:vi])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/defs/test_defs_za.rb b/vendor/holidays/test/defs/test_defs_za.rb new file mode 100644 index 00000000..d9394c67 --- /dev/null +++ b/vendor/holidays/test/defs/test_defs_za.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: definitions/za.yaml +class ZaDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_za + assert_equal "New Year's Day", (Holidays.on(Date.civil(2007, 1, 1), [:za], [:informal])[0] || {})[:name] + + assert_equal "Human Rights Day", (Holidays.on(Date.civil(2007, 3, 21), [:za], [:informal])[0] || {})[:name] + + assert_equal "Good Friday", (Holidays.on(Date.civil(2007, 4, 6), [:za], [:informal])[0] || {})[:name] + + assert_equal "Family Day", (Holidays.on(Date.civil(2007, 4, 9), [:za], [:informal])[0] || {})[:name] + + assert_equal "Freedom Day", (Holidays.on(Date.civil(2007, 4, 27), [:za], [:informal])[0] || {})[:name] + + assert_equal "Workers Day", (Holidays.on(Date.civil(2007, 5, 1), [:za], [:informal])[0] || {})[:name] + + assert_equal "Youth Day", (Holidays.on(Date.civil(2007, 6, 16), [:za], [:informal])[0] || {})[:name] + + assert_equal "National Women's Day", (Holidays.on(Date.civil(2007, 8, 9), [:za], [:informal])[0] || {})[:name] + + assert_equal "Heritage Day", (Holidays.on(Date.civil(2007, 9, 24), [:za], [:informal])[0] || {})[:name] + + assert_equal "Day of Reconciliation", (Holidays.on(Date.civil(2007, 12, 16), [:za], [:informal])[0] || {})[:name] + + assert_equal "Christmas Day", (Holidays.on(Date.civil(2007, 12, 25), [:za], [:informal])[0] || {})[:name] + + assert_equal "Day of Goodwill", (Holidays.on(Date.civil(2007, 12, 26), [:za], [:informal])[0] || {})[:name] + + end +end diff --git a/vendor/holidays/test/holidays/core_extensions/test_date.rb b/vendor/holidays/test/holidays/core_extensions/test_date.rb new file mode 100644 index 00000000..4cba10d1 --- /dev/null +++ b/vendor/holidays/test/holidays/core_extensions/test_date.rb @@ -0,0 +1,122 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper' + +require 'date' +require 'holidays/core_extensions/date' + +class Date + include Holidays::CoreExtensions::Date +end + +class CoreExtensionDateTests < Test::Unit::TestCase + def setup + @date = Date.civil(2008,1,1) + end + + def test_extending_date_class + assert @date.respond_to?('holidays') + assert @date.respond_to?('holiday?') + end + + def test_extending_datetime_class + dt = DateTime.civil(2008,1,1) + assert dt.respond_to?('holidays') + assert dt.respond_to?('holiday?') + end + + def test_calculating_mdays + # US Memorial day + assert_equal 29, Date.calculate_mday(2006, 5, :last, 1) + assert_equal 28, Date.calculate_mday(2007, 5, :last, 1) + assert_equal 26, Date.calculate_mday(2008, 5, :last, 1) + assert_equal 25, Date.calculate_mday(2009, 5, :last, 1) + assert_equal 31, Date.calculate_mday(2010, 5, :last, 1) + assert_equal 30, Date.calculate_mday(2011, 5, :last, 1) + + # Labour day + assert_equal 3, Date.calculate_mday(2007, 9, :first, 1) + assert_equal 1, Date.calculate_mday(2008, 9, :first, :monday) + assert_equal 7, Date.calculate_mday(2009, 9, :first, 1) + assert_equal 5, Date.calculate_mday(2011, 9, :first, 1) + assert_equal 5, Date.calculate_mday(2050, 9, :first, 1) + assert_equal 4, Date.calculate_mday(2051, 9, :first, 1) + + # Canadian thanksgiving + assert_equal 8, Date.calculate_mday(2007, 10, :second, 1) + assert_equal 13, Date.calculate_mday(2008, 10, :second, :monday) + assert_equal 12, Date.calculate_mday(2009, 10, :second, 1) + assert_equal 11, Date.calculate_mday(2010, 10, :second, 1) + + # Misc + assert_equal 21, Date.calculate_mday(2008, 1, :third, 1) + assert_equal 1, Date.calculate_mday(2007, 1, :first, 1) + assert_equal 2, Date.calculate_mday(2007, 3, :first, :friday) + assert_equal 30, Date.calculate_mday(2012, 1, :last, 1) + assert_equal 29, Date.calculate_mday(2016, 2, :last, 1) + + # From end of month + assert_equal 26, Date.calculate_mday(2009, 8, -1, :wednesday) + assert_equal 19, Date.calculate_mday(2009, 8, -2, :wednesday) + assert_equal 12, Date.calculate_mday(2009, 8, -3, :wednesday) + + assert_equal 13, Date.calculate_mday(2008, 8, -3, :wednesday) + assert_equal 12, Date.calculate_mday(2009, 8, -3, :wednesday) + assert_equal 11, Date.calculate_mday(2010, 8, -3, :wednesday) + assert_equal 17, Date.calculate_mday(2011, 8, -3, :wednesday) + assert_equal 15, Date.calculate_mday(2012, 8, -3, :wednesday) + assert_equal 14, Date.calculate_mday(2013, 8, -3, :wednesday) + end + + def test_mday_allows_integers_or_symbols + assert_nothing_raised do + Date.calculate_mday(2008, 1, 1, 1) + end + + assert_nothing_raised do + Date.calculate_mday(2008, 1, -1, 1) + end + + assert_nothing_raised do + Date.calculate_mday(2008, 1, :last, 1) + end + end + + def test_mday_requires_valid_week + assert_raises ArgumentError do + Date.calculate_mday(2008, 1, :none, 1) + end + + assert_raises ArgumentError do + Date.calculate_mday(2008, 1, nil, 1) + end + + assert_raises ArgumentError do + Date.calculate_mday(2008, 1, 0, 1) + end + end + + def test_mday_requires_valid_day + assert_raises ArgumentError do + Date.calculate_mday(2008, 1, 1, :october) + end + + assert_raises ArgumentError do + Date.calculate_mday(2008, 1, 1, nil) + end + + assert_raises ArgumentError do + Date.calculate_mday(2008, 1, 1, 7) + end + end + + def test_date_holiday? + assert Date.civil(2008,1,1).holiday?('ca') + assert Date.today.holiday?('test') + end + + def test_datetime_holiday? + # in situations with activesupport + assert DateTime.civil(2008, 1, 1).to_date.holiday?('ca') + assert DateTime.civil(2008, 1, 1).holiday?('ca') + end + +end diff --git a/vendor/holidays/test/holidays/core_extensions/test_date_time.rb b/vendor/holidays/test/holidays/core_extensions/test_date_time.rb new file mode 100644 index 00000000..4ada4d4b --- /dev/null +++ b/vendor/holidays/test/holidays/core_extensions/test_date_time.rb @@ -0,0 +1,60 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper' + +require 'holidays/core_extensions/date' +require 'holidays/core_extensions/time' + +class Date + include Holidays::CoreExtensions::Date +end + +class Time + include Holidays::CoreExtensions::Time +end + +class CoreExtensionDateTimeTests < Test::Unit::TestCase + def setup + @date = Date.civil(2008,1,1) + end + + def test_change_method + actual = @date.change(day: 5) + assert_equal Date.civil(2008,1,5), actual + + actual = @date.change(year: 2016) + assert_equal Date.civil(2016,1,1), actual + + actual = @date.change(month: 5) + assert_equal Date.civil(2008,5,1), actual + + actual = @date.change(year: 2015, month: 5, day: 3) + assert_equal Date.civil(2015,5,3), actual + end + + def test_end_of_month_method + # Works for month with 31 days + actual = @date.end_of_month + assert_equal Date.civil(2008,1,31), actual + + # Works for month with 30 days + actual = Date.civil(2008,9,5).end_of_month + assert_equal Date.civil(2008,9,30), actual + + # Works for leap year + actual = Date.civil(2016,2,1).end_of_month + assert_equal Date.civil(2016,2,29), actual + end + + def test_days_in_month_method + # Works for month with 31 days + actual = Time.days_in_month(1, 2008) + assert_equal 31, actual + + # Works for month with 30 days + actual = Time.days_in_month(9, 2008) + assert_equal 30, actual + + # Works for leap year + actual = Time.days_in_month(2, 2016) + assert_equal 29, actual + end +end diff --git a/vendor/holidays/test/holidays/date_calculator/test_day_of_month.rb b/vendor/holidays/test/holidays/date_calculator/test_day_of_month.rb new file mode 100644 index 00000000..ec6f2689 --- /dev/null +++ b/vendor/holidays/test/holidays/date_calculator/test_day_of_month.rb @@ -0,0 +1,27 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper' + +require 'holidays/date_calculator/day_of_month' + +class DayOfMonthDateCalculatorTests < Test::Unit::TestCase + def setup + @subject = Holidays::DateCalculator::DayOfMonth.new + end + + def test_call_returns_expected_results + assert_equal 7, @subject.call(2008, 1, :first, :monday) + assert_equal 18, @subject.call(2008, 12, :third, :thursday) + assert_equal 28, @subject.call(2008, 1, :last, 1) + end + + def test_returns_argument_error_with_invalid_week_parameter + assert_raises ArgumentError do + @subject.call(2008, 1, :wrong_week_argument, :monday) + end + end + + def test_returns_argument_error_with_invalid_day_parameter + assert_raises ArgumentError do + @subject.call(2008, 1, :first, :bad_wday) + end + end +end diff --git a/vendor/holidays/test/holidays/date_calculator/test_easter_gregorian.rb b/vendor/holidays/test/holidays/date_calculator/test_easter_gregorian.rb new file mode 100644 index 00000000..04df8083 --- /dev/null +++ b/vendor/holidays/test/holidays/date_calculator/test_easter_gregorian.rb @@ -0,0 +1,30 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper' + +require 'holidays/date_calculator/easter' + +class GregorianEasterDateCalculatorTests < Test::Unit::TestCase + def setup + @subject = Holidays::DateCalculator::Easter::Gregorian.new + end + + def test_calculate_easter_for_returns_expected_results + assert_equal '0960-04-20', @subject.calculate_easter_for(960).to_s + assert_equal '1800-04-13', @subject.calculate_easter_for(1800).to_s + assert_equal '1899-04-02', @subject.calculate_easter_for(1899).to_s + assert_equal '1900-04-15', @subject.calculate_easter_for(1900).to_s + assert_equal '1999-04-04', @subject.calculate_easter_for(1999).to_s + assert_equal '2000-04-23', @subject.calculate_easter_for(2000).to_s + assert_equal '2025-04-20', @subject.calculate_easter_for(2025).to_s + assert_equal '2035-03-25', @subject.calculate_easter_for(2035).to_s + assert_equal '2067-04-03', @subject.calculate_easter_for(2067).to_s + assert_equal '2099-04-12', @subject.calculate_easter_for(2099).to_s + end + + def test_calculate_orthodox_easter_for_returns_expects_results + assert_equal '2000-04-30', @subject.calculate_orthodox_easter_for(2000).to_s + assert_equal '2008-04-27', @subject.calculate_orthodox_easter_for(2008).to_s + assert_equal '2009-04-19', @subject.calculate_orthodox_easter_for(2009).to_s + assert_equal '2011-04-24', @subject.calculate_orthodox_easter_for(2011).to_s + assert_equal '2020-04-19', @subject.calculate_orthodox_easter_for(2020).to_s + end +end diff --git a/vendor/holidays/test/holidays/date_calculator/test_easter_julian.rb b/vendor/holidays/test/holidays/date_calculator/test_easter_julian.rb new file mode 100644 index 00000000..440c8cc4 --- /dev/null +++ b/vendor/holidays/test/holidays/date_calculator/test_easter_julian.rb @@ -0,0 +1,36 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper' + +require 'holidays/date_calculator/easter' + +class JulianEasterDateCalculatorTests < Test::Unit::TestCase + def setup + @subject = Holidays::DateCalculator::Easter::Julian.new + end + + def test_calculate_easter_for_returns_expected_results + assert_equal '0960-04-20', @subject.calculate_easter_for(960).to_s + assert_equal '1800-04-13', @subject.calculate_easter_for(1800).to_s + assert_equal '1899-04-02', @subject.calculate_easter_for(1899).to_s + assert_equal '1900-04-15', @subject.calculate_easter_for(1900).to_s + assert_equal '1999-04-04', @subject.calculate_easter_for(1999).to_s + assert_equal '2000-04-23', @subject.calculate_easter_for(2000).to_s + assert_equal '2025-04-20', @subject.calculate_easter_for(2025).to_s + assert_equal '2035-03-25', @subject.calculate_easter_for(2035).to_s + assert_equal '2067-04-03', @subject.calculate_easter_for(2067).to_s + assert_equal '2099-04-12', @subject.calculate_easter_for(2099).to_s + end + + def test_calculate_orthodox_easter_for_returns_expects_results + assert_equal '0960-04-22', @subject.calculate_orthodox_easter_for(960).to_s + assert_equal '1500-04-19', @subject.calculate_orthodox_easter_for(1500).to_s + assert_equal '2000-04-17', @subject.calculate_orthodox_easter_for(2000).to_s + assert_equal '2001-04-02', @subject.calculate_orthodox_easter_for(2001).to_s + assert_equal '2015-03-30', @subject.calculate_orthodox_easter_for(2015).to_s + assert_equal '2016-04-18', @subject.calculate_orthodox_easter_for(2016).to_s + assert_equal '2017-04-03', @subject.calculate_orthodox_easter_for(2017).to_s + assert_equal '2020-04-06', @subject.calculate_orthodox_easter_for(2020).to_s + assert_equal '2050-04-04', @subject.calculate_orthodox_easter_for(2050).to_s + assert_equal '2100-04-18', @subject.calculate_orthodox_easter_for(2100).to_s + assert_equal '2500-04-08', @subject.calculate_orthodox_easter_for(2500).to_s + end +end diff --git a/vendor/holidays/test/holidays/date_calculator/test_lunar_date.rb b/vendor/holidays/test/holidays/date_calculator/test_lunar_date.rb new file mode 100644 index 00000000..e6b1593a --- /dev/null +++ b/vendor/holidays/test/holidays/date_calculator/test_lunar_date.rb @@ -0,0 +1,89 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper' + +require 'holidays/date_calculator/lunar_date.rb' + +class LunarHolidaysCalculatorTests < Test::Unit::TestCase + def setup + @subject = Holidays::DateCalculator::LunarDate.new + end + + def test_korean_new_year_returns_expected_results + assert_equal '1994-02-10', @subject.to_solar(1994,1,1, :kr).to_s + assert_equal '1995-01-31', @subject.to_solar(1995,1,1, :kr).to_s + assert_equal '1999-02-16', @subject.to_solar(1999,1,1, :kr).to_s + assert_equal '2000-02-05', @subject.to_solar(2000,1,1, :kr).to_s + assert_equal '2001-01-24', @subject.to_solar(2001,1,1, :kr).to_s + assert_equal '2002-02-12', @subject.to_solar(2002,1,1, :kr).to_s + assert_equal '2008-02-07', @subject.to_solar(2008,1,1, :kr).to_s + assert_equal '2009-01-26', @subject.to_solar(2009,1,1, :kr).to_s + assert_equal '2010-02-14', @subject.to_solar(2010,1,1, :kr).to_s + assert_equal '2011-02-03', @subject.to_solar(2011,1,1, :kr).to_s + assert_equal '2012-01-23', @subject.to_solar(2012,1,1, :kr).to_s + assert_equal '2013-02-10', @subject.to_solar(2013,1,1, :kr).to_s + assert_equal '2014-01-31', @subject.to_solar(2014,1,1, :kr).to_s + assert_equal '2015-02-19', @subject.to_solar(2015,1,1, :kr).to_s + assert_equal '2016-02-08', @subject.to_solar(2016,1,1, :kr).to_s + assert_equal '2017-01-28', @subject.to_solar(2017,1,1, :kr).to_s + assert_equal '2018-02-16', @subject.to_solar(2018,1,1, :kr).to_s + assert_equal '2019-02-05', @subject.to_solar(2019,1,1, :kr).to_s + assert_equal '2020-01-25', @subject.to_solar(2020,1,1, :kr).to_s + assert_equal '2022-02-01', @subject.to_solar(2022,1,1, :kr).to_s + assert_equal '2025-01-29', @subject.to_solar(2025,1,1, :kr).to_s + end + + def test_buddahs_birthday_returns_expected_results + assert_equal '1994-05-18', @subject.to_solar(1994,4,8, :kr).to_s + assert_equal '1995-05-07', @subject.to_solar(1995,4,8, :kr).to_s + assert_equal '1999-05-22', @subject.to_solar(1999,4,8, :kr).to_s + assert_equal '2000-05-11', @subject.to_solar(2000,4,8, :kr).to_s + assert_equal '2001-05-01', @subject.to_solar(2001,4,8, :kr).to_s + assert_equal '2002-05-19', @subject.to_solar(2002,4,8, :kr).to_s + assert_equal '2008-05-12', @subject.to_solar(2008,4,8, :kr).to_s + assert_equal '2009-05-02', @subject.to_solar(2009,4,8, :kr).to_s + assert_equal '2010-05-21', @subject.to_solar(2010,4,8, :kr).to_s + assert_equal '2011-05-10', @subject.to_solar(2011,4,8, :kr).to_s + assert_equal '2012-05-28', @subject.to_solar(2012,4,8, :kr).to_s + assert_equal '2013-05-17', @subject.to_solar(2013,4,8, :kr).to_s + assert_equal '2014-05-06', @subject.to_solar(2014,4,8, :kr).to_s + assert_equal '2015-05-25', @subject.to_solar(2015,4,8, :kr).to_s + assert_equal '2016-05-14', @subject.to_solar(2016,4,8, :kr).to_s + assert_equal '2017-05-03', @subject.to_solar(2017,4,8, :kr).to_s + assert_equal '2018-05-22', @subject.to_solar(2018,4,8, :kr).to_s + assert_equal '2019-05-12', @subject.to_solar(2019,4,8, :kr).to_s + assert_equal '2020-04-30', @subject.to_solar(2020,4,8, :kr).to_s + assert_equal '2022-05-08', @subject.to_solar(2022,4,8, :kr).to_s + assert_equal '2025-05-05', @subject.to_solar(2025,4,8, :kr).to_s + end + + def test_korean_thanksgiving_returns_expected_results + assert_equal '1994-09-20', @subject.to_solar(1994,8,15, :kr).to_s + assert_equal '1995-09-09', @subject.to_solar(1995,8,15, :kr).to_s + assert_equal '1999-09-24', @subject.to_solar(1999,8,15, :kr).to_s + assert_equal '2000-09-12', @subject.to_solar(2000,8,15, :kr).to_s + assert_equal '2001-10-01', @subject.to_solar(2001,8,15, :kr).to_s + assert_equal '2002-09-21', @subject.to_solar(2002,8,15, :kr).to_s + assert_equal '2008-09-14', @subject.to_solar(2008,8,15, :kr).to_s + assert_equal '2009-10-03', @subject.to_solar(2009,8,15, :kr).to_s + assert_equal '2010-09-22', @subject.to_solar(2010,8,15, :kr).to_s + assert_equal '2011-09-12', @subject.to_solar(2011,8,15, :kr).to_s + assert_equal '2012-09-30', @subject.to_solar(2012,8,15, :kr).to_s + assert_equal '2013-09-19', @subject.to_solar(2013,8,15, :kr).to_s + assert_equal '2014-09-08', @subject.to_solar(2014,8,15, :kr).to_s + assert_equal '2015-09-27', @subject.to_solar(2015,8,15, :kr).to_s + assert_equal '2016-09-15', @subject.to_solar(2016,8,15, :kr).to_s + assert_equal '2017-10-04', @subject.to_solar(2017,8,15, :kr).to_s + assert_equal '2018-09-24', @subject.to_solar(2018,8,15, :kr).to_s + assert_equal '2019-09-13', @subject.to_solar(2019,8,15, :kr).to_s + assert_equal '2020-10-01', @subject.to_solar(2020,8,15, :kr).to_s + assert_equal '2022-09-10', @subject.to_solar(2022,8,15, :kr).to_s + assert_equal '2025-10-06', @subject.to_solar(2025,8,15, :kr).to_s + end + + def test_hung_kings_festival_returns_expected_results + assert_equal '2014-04-09', @subject.to_solar(2014,3,10, :vi).to_s + assert_equal '2015-04-28', @subject.to_solar(2015,3,10, :vi).to_s + assert_equal '2016-04-16', @subject.to_solar(2016,3,10, :vi).to_s + assert_equal '2017-04-06', @subject.to_solar(2017,3,10, :vi).to_s + assert_equal '2018-03-27', @subject.to_solar(2018,3,10, :vi).to_s + end +end diff --git a/vendor/holidays/test/holidays/date_calculator/test_weekend_modifier.rb b/vendor/holidays/test/holidays/date_calculator/test_weekend_modifier.rb new file mode 100644 index 00000000..6f30ef74 --- /dev/null +++ b/vendor/holidays/test/holidays/date_calculator/test_weekend_modifier.rb @@ -0,0 +1,54 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper' + +require 'holidays/date_calculator/weekend_modifier' + +class WeekendModifierDateCalculatorTests < Test::Unit::TestCase + def setup + @subject = Holidays::DateCalculator::WeekendModifier.new + end + + def test_to_monday_if_weekend + assert_equal Date.civil(2015, 5, 4), @subject.to_monday_if_weekend(Date.civil(2015, 5, 3)) + assert_equal Date.civil(2015, 5, 4), @subject.to_monday_if_weekend(Date.civil(2015, 5, 2)) + assert_equal Date.civil(2015, 5, 4), @subject.to_monday_if_weekend(Date.civil(2015, 5, 4)) + assert_equal Date.civil(2015, 5, 1), @subject.to_monday_if_weekend(Date.civil(2015, 5, 1)) + end + + def test_to_monday_if_sunday + assert_equal Date.civil(2015, 5, 4), @subject.to_monday_if_sunday(Date.civil(2015, 5, 3)) + assert_equal Date.civil(2015, 5, 4), @subject.to_monday_if_sunday(Date.civil(2015, 5, 4)) + assert_equal Date.civil(2015, 5, 1), @subject.to_monday_if_sunday(Date.civil(2015, 5, 1)) + assert_equal Date.civil(2015, 5, 2), @subject.to_monday_if_sunday(Date.civil(2015, 5, 2)) + end + + def test_to_weekday_if_boxing_weekend + assert_equal Date.civil(2015, 12, 25), @subject.to_weekday_if_boxing_weekend(Date.civil(2015, 12, 25)) + assert_equal Date.civil(2015, 12, 28), @subject.to_weekday_if_boxing_weekend(Date.civil(2015, 12, 26)) + assert_equal Date.civil(2015, 12, 29), @subject.to_weekday_if_boxing_weekend(Date.civil(2015, 12, 27)) + end + + def test_to_weekday_if_weekend + assert_equal Date.civil(2015, 5, 4), @subject.to_weekday_if_weekend(Date.civil(2015, 5, 3)) + assert_equal Date.civil(2015, 5, 1), @subject.to_weekday_if_weekend(Date.civil(2015, 5, 2)) + end + + def test_to_weekday_if_boxing_weekend_from_year + assert_equal Date.civil(2015, 12, 28), @subject.to_weekday_if_boxing_weekend_from_year(2015) + end + + def test_to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday + assert_equal Date.civil(2015, 12, 28), @subject.to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(2015) # saturday to monday + assert_equal Date.civil(2016, 12, 27), @subject.to_weekday_if_boxing_weekend_from_year_or_to_tuesday_if_monday(2016) # monday to tuesday + end + + def test_to_tuesday_if_sunday_or_monday_if_saturday + assert_equal Date.civil(2016, 12, 26), @subject.to_tuesday_if_sunday_or_monday_if_saturday(Date.civil(2016, 12, 24)) # sat to mon + assert_equal Date.civil(2016, 12, 27), @subject.to_tuesday_if_sunday_or_monday_if_saturday(Date.civil(2016, 12, 25)) # sun to tue + end + + def test_to_next_weekday + assert_equal Date.civil(2016, 3, 21), @subject.to_next_weekday(Date.civil(2016, 3, 20)) + assert_equal Date.civil(2016, 3, 22), @subject.to_next_weekday(Date.civil(2016, 3, 21)) + assert_equal Date.civil(2016, 3, 28), @subject.to_next_weekday(Date.civil(2016, 3, 25)) + end +end diff --git a/vendor/holidays/test/holidays/definition/context/test_function_processor.rb b/vendor/holidays/test/holidays/definition/context/test_function_processor.rb new file mode 100644 index 00000000..b6e3aa11 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/context/test_function_processor.rb @@ -0,0 +1,199 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/context/function_processor' + +class FunctionProcessorTests < Test::Unit::TestCase + def setup + @year = 2016 + @month = 1 + @day = 15 + @region = :test + @input = { year: @year, month: @month, day: @day, region: @region } + + @func_id = "custom_function_id" + @func_args = [:year] + @func_modifier = 1 + + @custom_methods_repo = mock() + @proc_result_cache_repo = mock() + + @custom_func = mock() + + @custom_methods_repo.expects(:find).at_most_once.with(@func_id).returns(@custom_func) + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns(Date.civil(@year, @month, @day)) + + @subject = Holidays::Definition::Context::FunctionProcessor.new( + @custom_methods_repo, + @proc_result_cache_repo, + ) + end + + def test_no_function_arguments_returns_error + assert_raises ArgumentError do + @subject.call(@input, @func_id, nil, @func_modifier) + end + + assert_raises ArgumentError do + @subject.call(@input, @func_id, [], @func_modifier) + end + end + + def test_unknown_function_argument_returns_error + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:something], @func_modifier) + end + end + + def test_unknown_function_id_returns_error + bad_id = "some-bad-id" + @custom_methods_repo.expects(:find).at_most_once.with(bad_id).returns(nil) + + assert_raises Holidays::FunctionNotFound do + @subject.call(@input, bad_id, @func_args, @func_modifier) + end + end + + def test_year_arg_passed_to_func_call + @func_args = [:year] + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns(Date.civil(2016, 1, 15)) + + @subject.call(@input, @func_id, @func_args, @func_modifier) + end + + def test_month_arg_passed_to_func_call + @func_args = [:month] + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @month).returns(Date.civil(2016, 1, 15)) + + @subject.call(@input, @func_id, @func_args, @func_modifier) + end + + def test_day_arg_passed_to_func_call + @func_args = [:day] + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @day).returns(Date.civil(2016, 1, 15)) + + @subject.call(@input, @func_id, @func_args, @func_modifier) + end + + def test_date_arg_passed_to_func_call + @func_args = [:date] + date = Date.civil(@year, @month, @day) + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, date).returns(date) + + @subject.call(@input, @func_id, @func_args, @func_modifier) + end + + def test_multiple_args_passed_to_func_call + @func_args = [:month, :day] + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @month, @day).returns(Date.civil(2016, 1, 15)) + + @subject.call(@input, @func_id, @func_args, @func_modifier) + end + + def test_multiple_args_with_region_passed_to_func_call + @func_args = [:month, :day, :region] + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @month, @day, @region).returns(Date.civil(2016, 1, 15)) + + @subject.call(@input, @func_id, @func_args, @func_modifier) + end + + def test_call_returns_error_if_target_function_returns_unknown_value + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns("bad-response") + + assert_raises Holidays::InvalidFunctionResponse do + @subject.call(@input, @func_id, @func_args, @func_modifier) + end + end + + def test_call_returns_date_with_modifier + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns(Date.civil(2016, 3, 10)) + + result = @subject.call(@input, @func_id, @func_args, @func_modifier) + + assert_equal(Date.civil(2016, 3, 10) + @func_modifier, result) + end + + def test_call_returns_date_no_modifier + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns(Date.civil(2016, 3, 10)) + + result = @subject.call(@input, @func_id, @func_args, nil) + + assert_equal(Date.civil(2016, 3, 10), result) + end + + def test_call_returns_errors_when_custom_function_returns_non_date + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns("bad") + + assert_raises Holidays::InvalidFunctionResponse do + @subject.call(@input, @func_id, @func_args, nil) + end + end + + def test_call_returns_error_when_custom_function_returns_mday_but_resulting_date_is_invalid + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns(32) + + assert_raises Holidays::InvalidFunctionResponse do + @subject.call(@input, @func_id, @func_args, nil) + end + end + + def test_call_returns_integer_returns_modified_date + @proc_result_cache_repo.expects(:lookup).at_most_once.with(@custom_func, @year).returns(7) + + result = @subject.call(@input, @func_id, @func_args, nil) + + assert_equal(Date.civil(2016, 1, 7), result) + end + + def test_func_modifier_not_required + result = @subject.call(@input, @func_id, @func_args) + assert_equal(Date.civil(2016, 1, 15), result) + end + + def test_validate_returns_error_if_year_not_a_number + @input[:year] = 'bad-year' + assert_raises ArgumentError do + @subject.call(@input, @func_id, @func_args) + end + end + + def test_validate_returns_error_if_month_not_valid + @input[:month] = 'bad-month' + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:month]) + end + + @input[:month] = -1 + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:month]) + end + + @input[:month] = 13 + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:month]) + end + end + + def test_validate_returns_error_if_day_is_not_valid + @input[:day] = 0 + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:day]) + end + + @input[:day] = 32 + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:day]) + end + + @input[:day] = 'bad-day' + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:day]) + end + end + + def test_validate_returns_error_if_region_not_a_symbol + @input[:region] = 'blah' + assert_raises ArgumentError do + @subject.call(@input, @func_id, [:region]) + end + end +end diff --git a/vendor/holidays/test/holidays/definition/context/test_generator.rb b/vendor/holidays/test/holidays/definition/context/test_generator.rb new file mode 100644 index 00000000..d983549f --- /dev/null +++ b/vendor/holidays/test/holidays/definition/context/test_generator.rb @@ -0,0 +1,226 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/context/generator' + +class GeneratorTests < Test::Unit::TestCase + def setup + @custom_method_parser = mock() + @custom_method_source_decorator = mock() + @custom_methods_repository = mock() + + @parsed_custom_method = Holidays::Definition::Entity::CustomMethod.new( + name: 'custom_method', + arguments: [:year, :month], + source: "some source", + ) + + @test_parser = mock() + @test_source_generator = mock() + + @module_source_generator = mock() + + @generator = Holidays::Definition::Context::Generator.new( + @custom_method_parser, + @custom_method_source_decorator, + @custom_methods_repository, + @test_parser, + @test_source_generator, + @module_source_generator, + ) + end + + def test_parse_definition_files_raises_error_if_argument_is_nil + assert_raises ArgumentError do + @generator.parse_definition_files(nil) + end + end + + def test_parse_definition_files_raises_error_if_files_are_empty + assert_raises ArgumentError do + @generator.parse_definition_files([]) + end + end + + def test_parse_definition_files_correctly_parse_regions + files = ['test/data/test_single_custom_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}]).returns(['parsed tests']) + + regions = @generator.parse_definition_files(files)[0] + + assert_equal [:custom_single_file], regions + end + + def test_parse_definitions_files_correctly_parse_rules_by_month + files = ['test/data/test_single_custom_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}]).returns(['parsed tests']) + + rules_by_month = @generator.parse_definition_files(files)[1] + + expected_rules_by_month = { + 6 => [ + { + :mday => 20, + :name => "Company Founding", + :regions => [:custom_single_file] + } + ] + } + + assert_equal expected_rules_by_month, rules_by_month + end + + def test_parse_definition_files_correctly_parse_custom_methods + files = ['test/data/test_single_custom_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}]).returns(['parsed tests']) + + custom_methods = @generator.parse_definition_files(files)[2] + + expected_custom_methods = {} + assert_equal expected_custom_methods, custom_methods + end + + def test_parse_definition_files_correctly_parse_tests + files = ['test/data/test_single_custom_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}]).returns(['parsed tests']) + + parsed_tests = @generator.parse_definition_files(files)[3] + + assert_equal ["parsed tests"], parsed_tests + end + + def test_generate_definition_source_correctly_generate_module_src + files = ['test/data/test_single_custom_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}]).returns(['parsed tests']) + + @module_source_generator.expects(:call).with("test", ["test/data/test_single_custom_holiday_defs.yaml"], [:custom_single_file], [" 6 => [{:mday => 20, :name => \"Company Founding\", :regions => [:custom_single_file]}]"], "").returns("module source") + @test_source_generator.expects(:call).with('test', ['test/data/test_single_custom_holiday_defs.yaml'], ['parsed tests']).returns("test source") + + regions, rules_by_month, custom_methods, tests = @generator.parse_definition_files(files) + module_src = @generator.generate_definition_source("test", files, regions, rules_by_month, custom_methods, tests)[0] + + expected_module_src = "module source" + + assert_equal expected_module_src, module_src + end + + def test_generate_definition_source_correctly_generate_test_src + files = ['test/data/test_single_custom_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}]).returns(['parsed tests']) + + @module_source_generator.expects(:call).returns("module_source") + + @test_source_generator.expects(:call).with('test', ['test/data/test_single_custom_holiday_defs.yaml'], ['parsed tests']).returns("test source") + + regions, rules_by_month, custom_methods, tests = @generator.parse_definition_files(files) + test_src = @generator.generate_definition_source("test", files, regions, rules_by_month, custom_methods, tests)[1] + + assert_equal 'test source', test_src + end + + def test_parse_definitions_files_correctly_parse_year_range_by_month + files = ['test/data/test_custom_year_range_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2017-01-01', 'regions' => ['custom_year_range_file']}, 'expect' => {'name' => 'after_year'}}]).returns(['parsed tests']) + + rules_by_month = @generator.parse_definition_files(files)[1] + + expected_rules_by_month = { + 6 => [ + { + :name => "after_year", + :regions => [:custom_year_range_file], + :mday => 1, + :year_ranges => {:from => 2016} + }, + { + :name => "before_year", + :regions => [:custom_year_range_file], + :mday => 2, + :year_ranges => {:until => 2017} + }, + { + :name => "between_year", + :regions => [:custom_year_range_file], + :mday => 3, + :year_ranges => {:between => 2016..2018 } + }, + { + :name => "limited_year", + :regions => [:custom_year_range_file], + :mday => 4, + :year_ranges => {:limited => [2016,2018,2019]} + } + ] + } + + assert_equal expected_rules_by_month, rules_by_month + end + + def test_generate_definition_source_correctly_generate_yearrange_test_src + files = ['test/data/test_custom_year_range_holiday_defs.yaml'] + @custom_method_parser.expects(:call).with(nil).returns({}) + + @test_parser.expects(:call).with([{'given' => {'date' => '2017-01-01', 'regions' => ['custom_year_range_file']}, 'expect' => {'name' => 'after_year'}}]).returns(['parsed tests']) + + @test_source_generator.expects(:call).with('test', ['test/data/test_custom_year_range_holiday_defs.yaml'], ['parsed tests']).returns('test source') + + @module_source_generator.expects(:call).with("test", ["test/data/test_custom_year_range_holiday_defs.yaml"], [:custom_year_range_file], [" 6 => [{:mday => 1, :year_ranges => { :from => 2016 },:name => \"after_year\", :regions => [:custom_year_range_file]},\n {:mday => 2, :year_ranges => { :until => 2017 },:name => \"before_year\", :regions => [:custom_year_range_file]},\n {:mday => 3, :year_ranges => { :between => 2016..2018 },:name => \"between_year\", :regions => [:custom_year_range_file]},\n {:mday => 4, :year_ranges => { :limited => [2016, 2018, 2019] },:name => \"limited_year\", :regions => [:custom_year_range_file]}]"], "").returns('module_source') + + regions, rules_by_month, custom_methods, tests = @generator.parse_definition_files(files) + module_src = @generator.generate_definition_source("test", files, regions, rules_by_month, custom_methods, tests)[0] + expected_module_src = "module_source" + + assert_equal expected_module_src, module_src + end + + def test_generate_definition_source_correctly_generate_module_src_with_custom_methods + files = ['test/data/test_single_custom_holiday_with_custom_procs.yaml'] + + @custom_method_parser.expects(:call).with('custom_method' => {'arguments' => 'year, month', 'source' => "d = Date.civil(year, month, 1)\nd + 2\n"}).returns({"custom_method(year, month)" => @parsed_custom_method}) + @custom_methods_repository.expects(:find).twice.with('custom_method(year, month)').returns(nil) + @custom_method_source_decorator.expects(:call).once.with(@parsed_custom_method).returns("\"custom_method(year, month)\" => Proc.new { |year, month|\nsource_stuff\n}") + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}, {'given' => {'date' => '2015-01-01', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Custom Holiday'}}]).returns(['parsed tests']) + + @module_source_generator.expects(:call).with("test", ["test/data/test_single_custom_holiday_with_custom_procs.yaml"], [:custom_single_file], [" 0 => [{:function => \"custom_method(year, month)\", :function_arguments => [:year, :month], :function_modifier => 5, :name => \"Custom Holiday\", :regions => [:custom_single_file]}]", " 6 => [{:mday => 20, :name => \"Company Founding\", :regions => [:custom_single_file]}]"], "\"custom_method(year, month)\" => Proc.new { |year, month|\nsource_stuff\n},\n\n").returns("module source") + @test_source_generator.expects(:call).with('test', ['test/data/test_single_custom_holiday_with_custom_procs.yaml'], ['parsed tests']).returns('test source') + + regions, rules_by_month, custom_methods, tests = @generator.parse_definition_files(files) + module_src = @generator.generate_definition_source("test", files, regions, rules_by_month, custom_methods, tests)[0] + + expected_module_src = "module source" + + assert_equal expected_module_src, module_src + end + + def test_generate_definition_source_correctly_generate_test_src_with_custom_methods + files = ['test/data/test_single_custom_holiday_with_custom_procs.yaml'] + + @custom_method_parser.expects(:call).with('custom_method' => {'arguments' => 'year, month', 'source' => "d = Date.civil(year, month, 1)\nd + 2\n"}).returns({"custom_method(year, month)" => @parsed_custom_method}) + @custom_methods_repository.expects(:find).twice.with('custom_method(year, month)').returns(nil) + @custom_method_source_decorator.expects(:call).once.with(@parsed_custom_method).returns("\"custom_method(year, month)\" => Proc.new { |year, month|\nsource_stuff\n}") + + @test_parser.expects(:call).with([{'given' => {'date' => '2013-06-20', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Company Founding'}}, {'given' => {'date' => '2015-01-01', 'regions' => ['custom_single_file']}, 'expect' => {'name' => 'Custom Holiday'}}]).returns(['parsed tests']) + + @module_source_generator.expects(:call).returns("module_source") + @test_source_generator.expects(:call).with('test', ['test/data/test_single_custom_holiday_with_custom_procs.yaml'], ['parsed tests']).returns('test source') + + regions, rules_by_month, custom_methods, tests = @generator.parse_definition_files(files) + test_src = @generator.generate_definition_source("test", files, regions, rules_by_month, custom_methods, tests)[1] + + assert_equal 'test source', test_src + end +end diff --git a/vendor/holidays/test/holidays/definition/context/test_load.rb b/vendor/holidays/test/holidays/definition/context/test_load.rb new file mode 100644 index 00000000..1baf7ba3 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/context/test_load.rb @@ -0,0 +1,37 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/context/load' + +class LoadTests < Test::Unit::TestCase + def setup + @definition_merger = mock() + full_definitions_path = File.expand_path(File.dirname(__FILE__)) + '/../../../data' + + @subject = Holidays::Definition::Context::Load.new( + @definition_merger, + full_definitions_path, + ) + end + + def test_region_is_found_and_loaded_and_merged + @definition_merger.expects(:call).with(:test_region, {}, {}) + @subject.call(:test_region) + end + + def test_region_file_not_found + assert_raises Holidays::UnknownRegionError do + @subject.call(:unknown) + end + end + + def test_region_can_be_loaded_but_file_is_invalid + assert_raises Holidays::UnknownRegionError do + @subject.call(:test_invalid_region) + end + end + + def test_returns_list_of_loaded_regions + @definition_merger.expects(:call).with(:test_region, {}, {}) + assert_equal([:test_region, :test_region2], @subject.call(:test_region), "Should cache subregions under the parent region's name") + end +end diff --git a/vendor/holidays/test/holidays/definition/context/test_merger.rb b/vendor/holidays/test/holidays/definition/context/test_merger.rb new file mode 100644 index 00000000..e6d2414a --- /dev/null +++ b/vendor/holidays/test/holidays/definition/context/test_merger.rb @@ -0,0 +1,25 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/context/merger' + +class MergerTests < Test::Unit::TestCase + def setup + @target_regions = [:new_region] + @target_holidays = {0 => [:mday => 1, :name => "Test", :regions => [:test2, :test]]} + @target_custom_methods = {"test_method" => Proc.new { |year| Date.civil(year, 1, 1) } } + + @holidays_repo = mock() + @regions_repo = mock() + @custom_methods_repo = mock() + + @subject = Holidays::Definition::Context::Merger.new(@holidays_repo, @regions_repo, @custom_methods_repo) + end + + def test_repos_are_called_to_add_regions_and_holidays + @holidays_repo.expects(:add).with(@target_holidays) + @regions_repo.expects(:add).with(@target_regions) + @custom_methods_repo.expects(:add).with(@target_custom_methods) + + @subject.call(@target_regions, @target_holidays, @target_custom_methods) + end +end diff --git a/vendor/holidays/test/holidays/definition/decorator/test_custom_method_proc.rb b/vendor/holidays/test/holidays/definition/decorator/test_custom_method_proc.rb new file mode 100644 index 00000000..636c58a8 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/decorator/test_custom_method_proc.rb @@ -0,0 +1,113 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/decorator/custom_method_proc' +require 'holidays/definition/entity/custom_method' + +class DecoratorCustomMethodProcTests < Test::Unit::TestCase + def setup + @decorator = Holidays::Definition::Decorator::CustomMethodProc.new + end + + def test_generates_lambda_from_entity + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year"], + source: "Date.civil(year, 1, 1)" + ) + + proc = @decorator.call(entity) + expected_proc = Proc.new { |year| eval("Date.civil(year, 1, 1)") } + + assert_equal expected_proc.call(2015), proc.call(2015) + end + + def test_generates_lamba_from_entity_with_multiple_lines + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year"], + source: "d = Date.civil(year, 1, 1)\nd + 2" + ) + + proc = @decorator.call(entity) + expected_proc = Proc.new { |year| eval("d = Date.civil(year, 1, 1)\nd + 2") } + + assert_equal expected_proc.call(2015), proc.call(2015) + end + + def test_generates_lamba_from_entity_with_multiple_arguments + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year", "month"], + source: "Date.civil(year, month, 1)" + ) + + proc = @decorator.call(entity) + expected_proc = Proc.new { |year, month| eval("Date.civil(year, month, 1)") } + + assert_equal expected_proc.call(2015, 6), proc.call(2015, 6) + end + + def test_generate_returns_error_if_missing_name + entity = Holidays::Definition::Entity::CustomMethod.new( + arguments: ["year", "month"], + source: "Date.civil(year, month, 1)" + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "", + arguments: ["year", "month"], + source: "Date.civil(year, month, 1)" + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + end + + def test_generate_returns_error_if_arguments_is_missing + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + source: "Date.civil(year, month, 1)" + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: [], + source: "Date.civil(year, month, 1)" + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + end + + + def test_generate_returns_error_if_source_is_missing + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year"], + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year"], + source: "", + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + end +end diff --git a/vendor/holidays/test/holidays/definition/decorator/test_custom_method_source.rb b/vendor/holidays/test/holidays/definition/decorator/test_custom_method_source.rb new file mode 100644 index 00000000..e2a90996 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/decorator/test_custom_method_source.rb @@ -0,0 +1,96 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/decorator/custom_method_source' +require 'holidays/definition/entity/custom_method' + +class DecoratorCustomMethodSourceTests < Test::Unit::TestCase + def setup + @decorator = Holidays::Definition::Decorator::CustomMethodSource.new + end + + def test_call_generates_source_from_entity + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year"], + source: "Date.civil(year, 1, 1)" + ) + + source = @decorator.call(entity) + expected_source = "\"#{entity.name}(#{entity.arguments[0]})\" => Proc.new { |year|\n#{entity.source}}" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_with_multiple_arguments + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year", "month"], + source: "Date.civil(year, month, 1)" + ) + + source = @decorator.call(entity) + expected_args = "#{entity.arguments[0]}, #{entity.arguments[1]}" + + expected_source = "\"#{entity.name}(#{expected_args})\" => Proc.new { |#{expected_args}|\n#{entity.source}}" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_when_source_is_multiple_lines + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year"], + source: "d = Date.civil(year, 1, 1)\nd + 2" + ) + + source = @decorator.call(entity) + expected_source = "\"#{entity.name}(#{entity.arguments[0]})\" => Proc.new { |year|\n#{entity.source}}" + + assert_equal expected_source, source + end + + def test_call_raises_error_if_missing_name + entity = Holidays::Definition::Entity::CustomMethod.new( + arguments: ["year", "month"], + source: "Date.civil(year, month, 1)" + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + end + + def test_call_raises_error_if_missing_arguments + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + source: "Date.civil(year, month, 1)" + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + end + + def test_call_raises_error_if_arguments_is_not_an_array + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: "test", + source: "Date.civil(year, month, 1)" + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + end + + def test_call_raises_error_if_missing_source + entity = Holidays::Definition::Entity::CustomMethod.new( + name: "test", + arguments: ["year", "month"], + ) + + assert_raises ArgumentError do + @decorator.call(entity) + end + end +end diff --git a/vendor/holidays/test/holidays/definition/decorator/test_test.rb b/vendor/holidays/test/holidays/definition/decorator/test_test.rb new file mode 100644 index 00000000..3f63f6b0 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/decorator/test_test.rb @@ -0,0 +1,123 @@ +# Heh at this file name +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/decorator/test' +require 'holidays/definition/entity/test' + +class DecoratorTestTests < Test::Unit::TestCase + def setup + @decorator = Holidays::Definition::Decorator::Test.new + end + + def test_call_generates_source_from_entity_single_date + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01')], + :regions => [:us], + :name => 'Test Holiday', + :holiday? => true, + ) + + source = @decorator.call(entity) + expected_source = "assert_equal \"Test Holiday\", (Holidays.on(Date.civil(2016, 1, 1), [:us])[0] || {})[:name]\n" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_multiple_dates + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01'), DateTime.parse('2017-01-01')], + :regions => [:us], + :name => 'Test Holiday', + :holiday? => true + ) + + source = @decorator.call(entity) + expected_source = "assert_equal \"Test Holiday\", (Holidays.on(Date.civil(2016, 1, 1), [:us])[0] || {})[:name]\nassert_equal \"Test Holiday\", (Holidays.on(Date.civil(2017, 1, 1), [:us])[0] || {})[:name]\n" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_single_date_with_options + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01')], + :regions => [:us], + :options => ['option1'], + :name => 'Test Holiday', + :holiday? => true, + ) + + source = @decorator.call(entity) + expected_source = "assert_equal \"Test Holiday\", (Holidays.on(Date.civil(2016, 1, 1), [:us], [:option1])[0] || {})[:name]\n" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_single_date_with_holiday_flag + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01')], + :regions => [:us], + :holiday? => false, + ) + + source = @decorator.call(entity) + expected_source = "assert_nil (Holidays.on(Date.civil(2016, 1, 1), [:us])[0] || {})[:name]\n" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_single_date_multiple_regions + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01')], + :regions => [:us, :us_ca, :ca], + :name => 'Test Holiday', + :holiday? => true, + ) + + source = @decorator.call(entity) + expected_source = "assert_equal \"Test Holiday\", (Holidays.on(Date.civil(2016, 1, 1), [:us, :us_ca, :ca])[0] || {})[:name]\n" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_multiple_dates_multiple_regions + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01'), DateTime.parse('2017-01-01')], + :regions => [:us, :us_ca, :ca], + :name => 'Test Holiday', + :holiday? => true, + ) + + source = @decorator.call(entity) + expected_source = "assert_equal \"Test Holiday\", (Holidays.on(Date.civil(2016, 1, 1), [:us, :us_ca, :ca])[0] || {})[:name]\nassert_equal \"Test Holiday\", (Holidays.on(Date.civil(2017, 1, 1), [:us, :us_ca, :ca])[0] || {})[:name]\n" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_multiple_dates_multiple_regions_holiday_flag_false + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01'), DateTime.parse('2017-01-01')], + :regions => [:us, :us_ca, :ca], + :name => 'Test Holiday', + :holiday? => false, + ) + + source = @decorator.call(entity) + expected_source = "assert_nil (Holidays.on(Date.civil(2016, 1, 1), [:us, :us_ca, :ca])[0] || {})[:name]\nassert_nil (Holidays.on(Date.civil(2017, 1, 1), [:us, :us_ca, :ca])[0] || {})[:name]\n" + + assert_equal expected_source, source + end + + def test_call_generates_source_from_entity_single_date_multiple_regions_holiday_flag_false + entity = Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse('2016-01-01')], + :regions => [:us, :us_ca, :ca], + :name => 'Test Holiday', + :holiday? => false, + ) + + source = @decorator.call(entity) + expected_source = "assert_nil (Holidays.on(Date.civil(2016, 1, 1), [:us, :us_ca, :ca])[0] || {})[:name]\n" + + assert_equal expected_source, source + end +end diff --git a/vendor/holidays/test/holidays/definition/generator/test_module.rb b/vendor/holidays/test/holidays/definition/generator/test_module.rb new file mode 100644 index 00000000..abbe37e1 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/generator/test_module.rb @@ -0,0 +1,268 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/generator/module' + +class GeneratorModuleTests < Test::Unit::TestCase + def setup + @generator = Holidays::Definition::Generator::Module.new + + @module_name = "TEST" + @files = ["file1.rb", "file2.rb"] + @regions = [:test, :test2] + @month_strings = ["first-string", "second-string"] + @custom_methods = "custom-methods" + end + + def subject + @generator.call( + @module_name, + @files, + @regions, + @month_strings, + @custom_methods, + ) + end + + def test_generates_source + expected = <<-EOF +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: file1.rb, file2.rb + # + # All the definitions are available at https://github.com/holidays/holidays + module TEST # :nodoc: + def self.defined_regions + [:test, :test2] + end + + def self.holidays_by_month + { + first-string, +second-string + } + end + + def self.custom_methods + { + custom-methods + } + end + end +end +EOF + + assert_equal expected, subject + end + + def test_module_name_more_than_one_word + @module_name = "TESTWITHHYPHEN" + + expected = <<-EOF +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: file1.rb, file2.rb + # + # All the definitions are available at https://github.com/holidays/holidays + module TESTWITHHYPHEN # :nodoc: + def self.defined_regions + [:test, :test2] + end + + def self.holidays_by_month + { + first-string, +second-string + } + end + + def self.custom_methods + { + custom-methods + } + end + end +end +EOF + + assert_equal expected, subject + end + + def test_generates_source_with_blank_custom_methods + @custom_methods = "" + + expected = <<-EOF +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: file1.rb, file2.rb + # + # All the definitions are available at https://github.com/holidays/holidays + module TEST # :nodoc: + def self.defined_regions + [:test, :test2] + end + + def self.holidays_by_month + { + first-string, +second-string + } + end + + def self.custom_methods + { + + } + end + end +end +EOF + + assert_equal expected, subject + end + + def test_generates_source_with_nil_custom_methods + @custom_methods = nil + + expected = <<-EOF +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: file1.rb, file2.rb + # + # All the definitions are available at https://github.com/holidays/holidays + module TEST # :nodoc: + def self.defined_regions + [:test, :test2] + end + + def self.holidays_by_month + { + first-string, +second-string + } + end + + def self.custom_methods + { + + } + end + end +end +EOF + + assert_equal expected, subject + end + + def test_generates_source_with_symbol_module_name + @module_name = :test + + expected = <<-EOF +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: file1.rb, file2.rb + # + # All the definitions are available at https://github.com/holidays/holidays + module TEST # :nodoc: + def self.defined_regions + [:test, :test2] + end + + def self.holidays_by_month + { + first-string, +second-string + } + end + + def self.custom_methods + { + custom-methods + } + end + end +end +EOF + + assert_equal expected, subject + end + + def test_raise_error_if_module_name_is_blank + @module_name = "" + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_module_name_is_nil + @module_name = nil + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_files_are_empty + @files = [] + + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_files_are_not_all_strings + @files = [:test, 1] + + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_files_is_nil + @files = nil + + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_regions_are_empty + @regions = [] + + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_regions_is_nil + @regions = nil + + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_month_strings_are_empty + @month_strings = [] + + assert_raises ArgumentError do + subject + end + end + + def test_raise_error_if_month_strings_is_nil + @month_strings = nil + + assert_raises ArgumentError do + subject + end + end +end diff --git a/vendor/holidays/test/holidays/definition/generator/test_regions.rb b/vendor/holidays/test/holidays/definition/generator/test_regions.rb new file mode 100644 index 00000000..e1da341a --- /dev/null +++ b/vendor/holidays/test/holidays/definition/generator/test_regions.rb @@ -0,0 +1,97 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/generator/regions' + +class GeneratorRegionsTests < Test::Unit::TestCase + def setup + @generator = Holidays::Definition::Generator::Regions.new + end + + def test_generates_regions_single_region_multiple_subregions + regions = {:region1 => [:test, :test2]} + expected = <<-EOE +# encoding: utf-8 +module Holidays + REGIONS = [:test, :test2] + + PARENT_REGION_LOOKUP = {:test=>:region1, :test2=>:region1} +end +EOE + + assert_equal expected, @generator.call(regions) + end + + def test_generates_regions_multiple_regions_single_unique_subregions + regions = {:region1 => [:test], :region2 => [:test2]} + expected = <<-EOE +# encoding: utf-8 +module Holidays + REGIONS = [:test, :test2] + + PARENT_REGION_LOOKUP = {:test=>:region1, :test2=>:region2} +end +EOE + + assert_equal expected, @generator.call(regions) + end + + def test_generates_regions_multiple_regions_multiple_overlapping_subregions + regions = {:region1 => [:test], :region2 => [:test, :test2], :region3 => [:test3, :test]} + expected = <<-EOE +# encoding: utf-8 +module Holidays + REGIONS = [:test, :test2, :test3] + + PARENT_REGION_LOOKUP = {:test=>:region1, :test2=>:region2, :test3=>:region3} +end +EOE + + assert_equal expected, @generator.call(regions) + end + + def test_generates_regions_multiple_regions_multiple_overlapping_subregions_complex + regions = { + :region1 => [:test], + :region2 => [:test, :test2], + :region3 => [:test3, :test], + :region4 => [:test4, :test2], + :region5 => [:test4, :test5, :test3], + :region6 => [:test4, :test6, :test], + } + + expected = <<-EOE +# encoding: utf-8 +module Holidays + REGIONS = [:test, :test2, :test3, :test4, :test5, :test6] + + PARENT_REGION_LOOKUP = {:test=>:region1, :test2=>:region2, :test3=>:region3, :test4=>:region4, :test5=>:region5, :test6=>:region6} +end +EOE + + assert_equal expected, @generator.call(regions) + end + + def test_returns_error_if_regions_is_empty + regions = {} + + assert_raises ArgumentError do + @generator.call(regions) + end + end + + def test_returns_error_if_regions_is_not_a_hash + regions = "invalid" + + assert_raises ArgumentError do + @generator.call(regions) + end + end + + def test_returns_error_if_regions_is_nil + regions = nil + + assert_raises ArgumentError do + @generator.call(regions) + end + end +end diff --git a/vendor/holidays/test/holidays/definition/generator/test_test.rb b/vendor/holidays/test/holidays/definition/generator/test_test.rb new file mode 100644 index 00000000..bbc43d70 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/generator/test_test.rb @@ -0,0 +1,113 @@ +# Heh at this file name +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/generator/test' +require 'holidays/definition/entity/test' + +class TestGeneratorTests < Test::Unit::TestCase + def setup + @module_name = "Test" + @files = ["file1.rb"] + @tests = [ + Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse("2016-01-01")], + :regions => [:test], + :name => "Test Holiday", + ), + ] + + @decorator = mock() + + @generator = Holidays::Definition::Generator::Test.new(@decorator) + end + + def test_generate_tests_raises_error_if_module_name_is_invalid + assert_raises ArgumentError do + @generator.call(nil, @files, @tests) + end + + assert_raises ArgumentError do + @generator.call("", @files, @tests) + end + end + + def test_generate_tests_raises_error_if_files_is_invalid + assert_raises ArgumentError do + @generator.call(@module_name, nil, @tests) + end + + assert_raises ArgumentError do + @generator.call(@module_name, "", @tests) + end + end + + def test_generate_tests_raises_error_if_tests_are_missing + assert_raises ArgumentError do + @generator.call(@module_name, @files, nil) + end + end + + def test_generate_source_from_single_test + @decorator.expects(:call).with(@tests.first).returns("test") + + expected = <<-EOT +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: #{@files.join(', ')} +class #{@module_name.to_s.capitalize}DefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_#{@module_name.to_s.downcase} + test + end +end +EOT + + assert_equal(expected, @generator.call(@module_name, @files, @tests)) + end + + def test_generate_source_from_multiple_tests + @tests = [ + Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse("2016-01-01")], + :regions => [:test], + :name => "Test Holiday", + ), + Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse("2016-02-01")], + :regions => [:test2], + :name => "Test Holiday2", + ), + Holidays::Definition::Entity::Test.new( + :dates => [DateTime.parse("2016-03-01")], + :regions => [:test3], + :name => "Test Holiday3", + ), + ] + + @decorator.expects(:call).with(@tests[0]).returns("test") + @decorator.expects(:call).with(@tests[1]).returns("test2") + @decorator.expects(:call).with(@tests[2]).returns("test3") + + expected = <<-EOT +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: #{@files.join(', ')} +class #{@module_name.to_s.capitalize}DefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_#{@module_name.to_s.downcase} + test + test2 + test3 + end +end +EOT + + assert_equal(expected, @generator.call(@module_name, @files, @tests)) + end +end diff --git a/vendor/holidays/test/holidays/definition/parser/test_custom_method.rb b/vendor/holidays/test/holidays/definition/parser/test_custom_method.rb new file mode 100644 index 00000000..cbf01326 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/parser/test_custom_method.rb @@ -0,0 +1,79 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/parser/custom_method' +require 'holidays/definition/entity/custom_method' + +class ParserCustomMethodTests < Test::Unit::TestCase + def setup + @validator = mock() + + @parser = Holidays::Definition::Parser::CustomMethod.new(@validator) + end + + def test_parse_happy_single_method + input = {"custom_method"=>{"arguments"=>"year", "ruby"=>"d = Date.civil(year, 1, 1)\nd + 2\n"}} + @validator.expects(:valid?).with({:name => "custom_method", :arguments => "year", :source => "d = Date.civil(year, 1, 1)\nd + 2\n"}).returns(true) + + result = @parser.call(input) + + assert_equal(1, result.size) + + custom_method = result["custom_method(year)"] + assert(custom_method) + + assert(custom_method.is_a?(Holidays::Definition::Entity::CustomMethod)) + assert_equal("custom_method", custom_method.name) + assert_equal(["year"], custom_method.arguments) + assert_equal("d = Date.civil(year, 1, 1)\nd + 2\n", custom_method.source) + end + + def test_call_happy_with_multiple_methods + input = {"custom_method"=>{"arguments"=>"year", "ruby"=>"d = Date.civil(year, 1, 1)\nd + 2\n"}, "second_method"=>{"arguments"=>"month","ruby"=>"source"}} + @validator.expects(:valid?).with({:name => "custom_method", :arguments => "year", :source => "d = Date.civil(year, 1, 1)\nd + 2\n"}).returns(true) + @validator.expects(:valid?).with({:name => "second_method", :arguments => "month", :source => "source"}).returns(true) + + result = @parser.call(input) + + assert_equal(2, result.size) + + custom_method = result["custom_method(year)"] + assert(custom_method) + + assert(custom_method.is_a?(Holidays::Definition::Entity::CustomMethod)) + assert_equal("custom_method", custom_method.name) + assert_equal(["year"], custom_method.arguments) + assert_equal("d = Date.civil(year, 1, 1)\nd + 2\n", custom_method.source) + + second_method= result["second_method(month)"] + assert(second_method) + + assert(second_method.is_a?(Holidays::Definition::Entity::CustomMethod)) + assert_equal("second_method", second_method.name) + assert_equal(["month"], second_method.arguments) + assert_equal("source", second_method.source) + end + + def test_call_returns_empty_hash_if_methods_are_missing + assert_equal({}, @parser.call(nil)) + assert_equal({}, @parser.call({})) + end + + def test_call_raises_error_if_validator_returns_false_for_single_method + input = {"custom_method"=>{"arguments"=>"year", "ruby"=>"d = Date.civil(year, 1, 1)\nd + 2\n"}} + @validator.expects(:valid?).with({:name => "custom_method", :arguments => "year", :source => "d = Date.civil(year, 1, 1)\nd + 2\n"}).returns(false) + + assert_raises ArgumentError do + @parser.call(input) + end + end + + def test_call_raises_error_if_validator_returns_false_for_one_of_multiple_methods + input = {"custom_method"=>{"arguments"=>"year", "ruby"=>"d = Date.civil(year, 1, 1)\nd + 2\n"}, "second_method"=>{"arguments"=>"month","ruby"=>"source"}} + @validator.expects(:valid?).with({:name => "custom_method", :arguments => "year", :source => "d = Date.civil(year, 1, 1)\nd + 2\n"}).returns(true) + @validator.expects(:valid?).with({:name => "second_method", :arguments => "month", :source => "source"}).returns(false) + + assert_raises ArgumentError do + @parser.call(input) + end + end +end diff --git a/vendor/holidays/test/holidays/definition/parser/test_test.rb b/vendor/holidays/test/holidays/definition/parser/test_test.rb new file mode 100644 index 00000000..7cd8ab88 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/parser/test_test.rb @@ -0,0 +1,142 @@ +# Heh at this file name +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/parser/test' +require 'holidays/definition/entity/test' + +class ParserTestTests < Test::Unit::TestCase + def setup + @validator = mock() + + @parser = Holidays::Definition::Parser::Test.new(@validator) + end + + def test_parse_no_tests + input = nil + result = @parser.call(input) + + assert_equal(0, result.size) + end + + def test_parse_single_test_happy + input = [ { "given" => { "date" => "2016-01-01", "regions" => ['us'] }, "expect" => { "name" => "Test Holiday" } } ] + @validator.expects(:valid?).with({:dates => ["2016-01-01"], :regions=> ['us'], :options => nil, :name => "Test Holiday", :holiday => nil}).returns(true) + + result = @parser.call(input) + + assert_equal(1, result.size) + + test = result.first + assert(test) + + assert(test.is_a?(Holidays::Definition::Entity::Test)) + assert_equal([DateTime.parse('2016-01-01')], test.dates) + assert_equal([:us], test.regions) + assert_equal("Test Holiday", test.name) + assert(test.holiday?) + end + + def test_parse_single_test_with_options + input = [ { "given" => { "date" => "2016-01-01", "regions" => ['us'], "options" => ['option1']}, "expect" => { "name" => "Test Holiday" } } ] + @validator.expects(:valid?).with({:dates => ["2016-01-01"], :regions=> ['us'], :name => "Test Holiday", :options => ['option1'], :holiday => nil}).returns(true) + + result = @parser.call(input) + + assert_equal(1, result.size) + + test = result.first + assert(test) + + assert(test.is_a?(Holidays::Definition::Entity::Test)) + assert_equal([DateTime.parse('2016-01-01')], test.dates) + assert_equal([:us], test.regions) + assert_equal([:option1], test.options) + assert_equal("Test Holiday", test.name) + assert(test.holiday?) + end + + def test_parse_single_test_with_single_option_as_string + input = [ { "given" => { "date" => "2016-01-01", "regions" => ['us'], "options" => 'option1'}, "expect" => { "name" => "Test Holiday" } } ] + @validator.expects(:valid?).with({:dates => ["2016-01-01"], :regions=> ['us'], :name => "Test Holiday", :options => 'option1', :holiday => nil}).returns(true) + + result = @parser.call(input) + + assert_equal(1, result.size) + + test = result.first + assert(test) + + assert(test.is_a?(Holidays::Definition::Entity::Test)) + assert_equal([DateTime.parse('2016-01-01')], test.dates) + assert_equal([:us], test.regions) + assert_equal([:option1], test.options) + assert_equal("Test Holiday", test.name) + assert(test.holiday?) + end + + def test_parse_single_test_no_name_no_holiday + input = [ { "given" => { "date" => "2016-01-01", "regions" => ['us']}, "expect" => { "holiday" => false } } ] + @validator.expects(:valid?).with({:dates => ["2016-01-01"], :regions=> ['us'], :name => nil, :options => nil, :holiday => false}).returns(true) + + result = @parser.call(input) + + assert_equal(1, result.size) + + test = result.first + assert(test) + + assert(test.is_a?(Holidays::Definition::Entity::Test)) + assert_equal([DateTime.parse('2016-01-01')], test.dates) + assert_equal([:us], test.regions) + assert_nil(test.options) + assert_nil(test.name) + assert_equal(false, test.holiday?) + end + + def test_parse_single_test_with_options_no_name_no_holiday + input = [ { "given" => { "date" => "2016-01-01", "regions" => ['us'], "options" => ['option1']}, "expect" => { "holiday" => false } } ] + @validator.expects(:valid?).with({:dates => ["2016-01-01"], :regions=> ['us'], :name => nil, :options => ['option1'], :holiday => false}).returns(true) + + result = @parser.call(input) + + assert_equal(1, result.size) + + test = result.first + assert(test) + + assert(test.is_a?(Holidays::Definition::Entity::Test)) + assert_equal([DateTime.parse('2016-01-01')], test.dates) + assert_equal([:us], test.regions) + assert_equal([:option1], test.options) + assert_nil(test.name) + assert_equal(false, test.holiday?) + end + + def test_parse_single_test_multiple_dates + input = [ { "given" => { "date" => ["2016-01-01", "2017-01-01"], "regions" => ['us']}, "expect" => { "name" => "Test Holiday"} } ] + @validator.expects(:valid?).with({:dates => ["2016-01-01", "2017-01-01"], :regions=> ['us'], :name => "Test Holiday", :options => nil, :holiday => nil}).returns(true) + + result = @parser.call(input) + + assert_equal(1, result.size) + + test = result.first + assert(test) + + assert(test.is_a?(Holidays::Definition::Entity::Test)) + assert_equal([DateTime.parse('2016-01-01'), DateTime.parse('2017-01-01')], test.dates) + assert_equal([:us], test.regions) + assert_nil(test.options) + assert_equal("Test Holiday", test.name) + assert(test.holiday?) + end + + def test_parse_single_test_fail_validation + input = [ { "given" => { "date" => "2016-01-01", "regions" => ['us']}, "expect" => { "name" => "Test Holiday"} } ] + @validator.expects(:valid?).with({:dates => ["2016-01-01"], :regions=> ['us'], :name => "Test Holiday", :options => nil, :holiday => nil}).returns(false) + + assert_raises ArgumentError do + @parser.call(input) + end + end +end diff --git a/vendor/holidays/test/holidays/definition/repository/test_cache.rb b/vendor/holidays/test/holidays/definition/repository/test_cache.rb new file mode 100644 index 00000000..4cb74e9e --- /dev/null +++ b/vendor/holidays/test/holidays/definition/repository/test_cache.rb @@ -0,0 +1,123 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/repository/cache' + +class CacheRepoTests < Test::Unit::TestCase + def setup + @subject = Holidays::Definition::Repository::Cache.new + end + + def test_find_supports_overlapping_holidays + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 7, 1) + cache_data = [ + {:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day A", :regions=>[:us]}, + {:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day B", :regions=>[:us]} + ] + options = :us + + @subject.cache_between(start_date, end_date, cache_data, options) + + assert_equal(cache_data, @subject.find(start_date, start_date, options)) + assert_equal(cache_data, @subject.find(start_date, end_date, options)) + end + + def test_cache_returns_empty_array_no_holidays_are_found + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 7, 1) + cache_data = [{:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day", :regions=>[:us]}] + options = :us + + @subject.cache_between(start_date, end_date, cache_data, options) + + assert_empty(@subject.find(Date.civil(2015, 1, 2), Date.civil(2015, 1, 2), options)) + assert_empty(@subject.find(Date.civil(2015, 1, 2), Date.civil(2015, 1, 3), options)) + end + + def test_cache_returns_empty_array_when_cache_is_empty + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 7, 1) + cache_data = [] + options = :us + + @subject.cache_between(start_date, end_date, cache_data, options) + + assert_empty(@subject.find(Date.civil(2015, 1, 2), Date.civil(2015, 1, 2), options)) + assert_empty(@subject.find(Date.civil(2015, 1, 2), Date.civil(2015, 1, 3), options)) + end + + def test_find_returns_correct_cache_data + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 7, 1) + cache_data = [{:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day", :regions=>[:us]}] + options = :us + @subject.cache_between(start_date, end_date, cache_data, options) + + assert_equal(cache_data, @subject.find(start_date, start_date, options)) + assert_equal(cache_data, @subject.find(start_date, end_date, options)) + end + + def test_find_returns_nil_if_no_match_is_found + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 1) + cache_data = [{:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day", :regions=>[:us]}] + options = :us + @subject.cache_between(start_date, end_date, cache_data, options) + + assert_nil(@subject.find(Date.civil(2015, 7, 1), Date.civil(2015, 12, 1), options)) + assert_nil(@subject.find(Date.civil(2015, 7, 1), Date.civil(2015, 12, 1), options)) + end + + def test_cache_between_returns_error_if_dates_are_missing + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 1) + cache_data = [{:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day", :regions=>[:us]}] + options = :us + + assert_raise ArgumentError do + @subject.cache_between(nil, end_date, cache_data, options) + end + + assert_raise ArgumentError do + @subject.cache_between(start_date, nil, cache_data, options) + end + end + + def test_cache_between_returns_error_if_dates_are_invalid + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 1) + cache_data = [{:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day", :regions=>[:us]}] + options = :us + + assert_raise ArgumentError do + @subject.cache_between("invalid-date", end_date, cache_data, options) + end + + assert_raise ArgumentError do + @subject.cache_between(start_date, "invalid-date", cache_data, options) + end + end + + def test_cache_between_returns_error_if_cached_data_is_not_present + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 1) + options = :us + + assert_raise ArgumentError do + @subject.cache_between(start_date, end_date, nil, options) + end + end + + def test_reset_clears_cache + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 1) + cache_data = [{:date=>Date.civil(2015, 1, 1), :name=>"New Year's Day", :regions=>[:us]}] + options = :us + @subject.cache_between(start_date, end_date, cache_data, options) + + assert_equal(cache_data, @subject.find(start_date, end_date, options)) + + @subject.reset! + assert_nil(@subject.find(start_date, end_date, options)) + end +end diff --git a/vendor/holidays/test/holidays/definition/repository/test_custom_methods.rb b/vendor/holidays/test/holidays/definition/repository/test_custom_methods.rb new file mode 100644 index 00000000..ad0af88e --- /dev/null +++ b/vendor/holidays/test/holidays/definition/repository/test_custom_methods.rb @@ -0,0 +1,43 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/repository/custom_methods' + +class CustomMethodsRepoTests < Test::Unit::TestCase + def setup + @subject = Holidays::Definition::Repository::CustomMethods.new + end + + def test_add_raises_error_if_input_is_nil + assert_raise ArgumentError do + @subject.add(nil) + end + end + + def test_find_returns_nil_if_method_id_does_not_exist + assert_nil @subject.find("some-method-id") + end + + def test_add_successfully_adds_new_custom_methods + new_custom_methods = { + "some-method-id" => Proc.new { |year| + Date.civil(year, 1, 1) + } + } + + @subject.add(new_custom_methods) + + target_method = @subject.find("some-method-id") + + assert_equal new_custom_methods["some-method-id"], target_method + end + + def test_find_raises_error_if_target_method_id_is_nil_or_empty + assert_raise ArgumentError do + @subject.find(nil) + end + + assert_raise ArgumentError do + @subject.find("") + end + end +end diff --git a/vendor/holidays/test/holidays/definition/repository/test_holidays_by_month.rb b/vendor/holidays/test/holidays/definition/repository/test_holidays_by_month.rb new file mode 100644 index 00000000..2a052d33 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/repository/test_holidays_by_month.rb @@ -0,0 +1,275 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/repository/holidays_by_month' + +class HolidaysByMonthRepoTests < Test::Unit::TestCase + def setup + @existing_holidays_by_month = {0 => [:mday => 1, :name => "Test", :regions => [:test]]} + + @subject = Holidays::Definition::Repository::HolidaysByMonth.new + end + + def test_all_returns_empty_hash_if_no_holidays_have_been_added + assert_equal({}, @subject.all) + end + + def test_all_returns_existing_holidays + @subject.add(@existing_holidays_by_month) + assert_equal(@existing_holidays_by_month, @subject.all) + end + + def test_add_does_not_change_data_if_it_already_exists + target_holidays = {0 => [:mday => 1, :name => "Test", :regions => [:test]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = @existing_holidays_by_month + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_name_is_different + target_holidays = {0 => [:mday => 1, :name => "Different", :regions => [:test]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = { + 0 => [ + {:mday=>1, :name=>"Test", :regions=>[:test]}, + {:mday=>1, :name=>"Different", :regions=>[:test]} + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_wday_is_different + target_holidays = {0 => [:mday => 1, :name => "Test", :wday => 1, :regions => [:test]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = { + 0 => [ + {:mday=>1, :name=>"Test", :regions=>[:test]}, + {:mday=>1, :name=>"Test", :wday => 1, :regions=>[:test]} + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_mday_is_different + target_holidays = {0 => [:mday => 2, :name => "Test", :regions => [:test]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = { + 0 => [ + {:mday=>1, :name=>"Test", :regions=>[:test]}, + {:mday=>2, :name=>"Test", :regions=>[:test]} + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_week_is_different + target_holidays = {0 => [:mday => 1, :name => "Test", :week => :first, :regions => [:test]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = { + 0 => [ + {:mday=>1, :name=>"Test", :regions=>[:test]}, + {:mday=>1, :name=>"Test", :week => :first, :regions=>[:test]} + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_type_is_different + target_holidays = {0 => [:mday => 1, :name => "Test", :type => :informal, :regions => [:test]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = { + 0 => [ + {:mday=>1, :name=>"Test", :regions=>[:test]}, + {:mday=>1, :name=>"Test", :type => :informal, :regions=>[:test]} + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_only_region_is_different_and_updates_regions_to_existing_matching_definitions + target_holidays = {0 => [:mday => 1, :name => "Test", :regions => [:test2]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = { 0 => [ {:mday=>1, :name=>"Test", :regions=>[:test, :test2]} ] } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_and_updates_regions_to_existing_matching_definitions_and_deduped_correctly + target_holidays = {0 => [:mday => 1, :name => "Test", :regions => [:test2, :test]]} + + @subject.add(@existing_holidays_by_month) + @subject.add(target_holidays) + + expected = { 0 => [ {:mday=>1, :name=>"Test", :regions=>[:test, :test2]} ] } + + assert_equal(expected, @subject.all) + end + + def test_find_by_month_returns_nil_if_none_found + @subject.add(@existing_holidays_by_month) + + holidays_for_month = @subject.find_by_month(12) + assert_equal(nil, holidays_for_month) + end + + def test_find_by_month_returns_array_if_found + @subject.add(@existing_holidays_by_month) + + holidays_for_month = @subject.find_by_month(0) + assert_equal(@existing_holidays_by_month[0], holidays_for_month) + end + + def test_find_by_month_raises_error_if_month_is_not_valid + @subject.add(@existing_holidays_by_month) + + assert_raise ArgumentError do + @subject.find_by_month(-1) + end + end + + def test_add_is_successful_if_only_function_is_different + initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :function=>"easter(year)", :function_arguments=>[:year]}]} + + @subject.add(initial_holidays) + + second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :function=>"orthodox_easter(year)", :function_arguments=>[:year]}]} + @subject.add(second_holidays) + + expected = { + 0 => [ + { + :function=>"easter(year)", + :function_arguments=>[:year], + :mday=>1, + :name=>"Test", + :regions=>[:test] + }, + { + :function=>"orthodox_easter(year)", + :function_arguments=>[:year], + :mday=>1, + :name=>"Test", + :regions=>[:test2] + } + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_only_function_modifier_is_different + initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :function=>"easter(year)", :function_modifier=>1, :function_arguments=>[:year]}]} + + @subject.add(initial_holidays) + + second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :function=>"easter(year)", :function_modifier=>2, :function_arguments=>[:year]}]} + @subject.add(second_holidays) + + expected = { + 0 => [ + { + :function=>"easter(year)", + :function_arguments=>[:year], + :function_modifier=>1, + :mday=>1, + :name=>"Test", + :regions=>[:test] + }, + { + :function=>"easter(year)", + :function_arguments=>[:year], + :function_modifier=>2, + :mday=>1, + :name=>"Test", + :regions=>[:test2] + } + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_only_observed_is_different + initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :observed=>"to_weekday_if_weekend(year)", :function_arguments=>[:year]}]} + + @subject.add(initial_holidays) + + second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :observed =>"to_friday_if_saturday(year)", :function_arguments=>[:year]}]} + @subject.add(second_holidays) + + expected = { + 0 => [ + { + :observed =>"to_weekday_if_weekend(year)", + :function_arguments=>[:year], + :mday=>1, + :name=>"Test", + :regions=>[:test] + }, + { + :observed =>"to_friday_if_saturday(year)", + :function_arguments=>[:year], + :mday=>1, + :name=>"Test", + :regions=>[:test2] + } + ] + } + + assert_equal(expected, @subject.all) + end + + def test_add_is_successful_if_only_year_ranges_is_different + initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :year_ranges => {:from => 1990}}]} + + @subject.add(initial_holidays) + + second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :year_ranges => {:until => 2002}}]} + @subject.add(second_holidays) + + expected = { + 0 => [ + { + :mday=>1, + :name=>"Test", + :regions=>[:test], + :year_ranges => {:from => 1990} + }, + { + :mday=>1, + :name=>"Test", + :regions=>[:test2], + :year_ranges => {:until => 2002} + } + ] + } + + assert_equal(expected, @subject.all) + end +end diff --git a/vendor/holidays/test/holidays/definition/repository/test_proc_result_cache.rb b/vendor/holidays/test/holidays/definition/repository/test_proc_result_cache.rb new file mode 100644 index 00000000..0976b96c --- /dev/null +++ b/vendor/holidays/test/holidays/definition/repository/test_proc_result_cache.rb @@ -0,0 +1,91 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/repository/proc_result_cache' + +class ProcResultCacheRepoTests < Test::Unit::TestCase + def setup + @subject = Holidays::Definition::Repository::ProcResultCache.new + end + + def test_lookup_stores_and_returns_result_of_function_if_it_is_not_present + function = lambda { |year| Date.civil(year, 2, 1) - 1 } + function_argument = 2015 + + assert_equal(Date.civil(2015, 1, 31), @subject.lookup(function, function_argument)) + end + + #FIXME This test stinks. I don't know how to show that the second invocation + # doesn't call the function. In rspec I could just do an expect().not_to + # but it doesn't seem like Mocha can do that? I'm punting. + def test_lookup_simply_returns_result_of_cache_if_present_after_first_call + function = lambda { |year| Date.civil(year, 2, 1) - 1 } + function_argument = 2015 + + assert_equal(Date.civil(2015, 1, 31), @subject.lookup(function, function_argument)) + end + + def test_lookup_raises_error_if_function_is_not_a_proc + function = "Holidays.easter(year)" + function_argument = 2015 + + assert_raise ArgumentError do + @subject.lookup(function, function_argument) + end + end + + def test_lookup_accepts_date_as_function_argument + function = lambda { |date| date - 1 } + function_argument = Date.civil(2015, 2, 1) + + assert_equal(Date.civil(2015, 1, 31), @subject.lookup(function, function_argument)) + end + + def test_lookup_accepts_symbol_as_function_argument + function = lambda { |symbol| symbol } + function_argument = :test + + assert_equal(:test, @subject.lookup(function, function_argument)) + end + + def test_accepts_multiple_arguments_for_functions + function = lambda { |year, month, day| Date.civil(year, month, day) + 1 } + year = 2016 + month = 1 + day = 1 + + assert_equal(Date.civil(2016, 1, 2), @subject.lookup(function, year, month, day)) + end + + def test_raises_error_if_one_of_multiple_arguments_is_not_an_int_or_date + function = lambda { |year, month, day| Date.civil(year, month, day) + 1 } + year = 2016 + month = 1 + day = "1" + + assert_raise ArgumentError do + @subject.lookup(function, year, month, day) + end + end + + def test_accepts_mix_of_integers_and_dates_for_multiple_function_arguments + function = lambda { |date, modifier| date + modifier } + date = Date.civil(2016, 1, 1) + modifier = 5 + + assert_equal(Date.civil(2016, 1, 6), @subject.lookup(function, date, modifier)) + end + + def test_lookup_raises_error_if_function_argument_is_not_valid + function = lambda { |year| Date.civil(year, 2, 1) - 1 } + function_argument = "2015" + + assert_raise ArgumentError do + @subject.lookup(function, function_argument) + end + + function_argument = Proc.new { |arg1| "arg1" + "something"} + assert_raise ArgumentError do + @subject.lookup(function, function_argument) + end + end +end diff --git a/vendor/holidays/test/holidays/definition/repository/test_regions.rb b/vendor/holidays/test/holidays/definition/repository/test_regions.rb new file mode 100644 index 00000000..580a5976 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/repository/test_regions.rb @@ -0,0 +1,104 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/repository/regions' + +class RegionsRepoTests < Test::Unit::TestCase + def setup + @all_generated_regions = [:parent, :subregion, :subregion_with_underscores, :region1, :region2] + @parent_region_lookup = { + :subregion => :parent, + :subregion_with_underscores => :parent, + } + + @subject = Holidays::Definition::Repository::Regions.new(@all_generated_regions, @parent_region_lookup) + end + + def test_all_loaded_returns_an_empty_array_if_just_initialize + assert_equal([], @subject.all_loaded) + end + + def test_add_successfully_adds_a_region + @subject.add(:test) + assert_equal([:test], @subject.all_loaded) + end + + def test_add_raises_error_if_symbol_not_provided + assert_raises ArgumentError do + @subject.add('not-a-symbol') + end + end + + def test_add_raises_error_if_argument_is_nil + assert_raises ArgumentError do + @subject.add(nil) + end + end + + def test_add_raises_error_if_any_region_is_not_a_symbol + assert_raises ArgumentError do + @subject.add([:test, 'not-a-symbol']) + end + end + + def test_add_does_not_add_if_the_region_already_exists + @subject.add(:test) + @subject.add(:test) + assert_equal([:test], @subject.all_loaded) + end + + def test_add_accepts_array_of_regions + @subject.add([:test, :test2]) + assert_equal([:test, :test2], @subject.all_loaded) + end + + def test_exists_returns_true_if_region_is_present + @subject.add(:test) + assert @subject.loaded?(:test) + end + + def tests_exists_returns_false_if_region_is_not_present + assert_equal(false, @subject.loaded?(:something)) + end + + def test_exists_raises_error_if_invalid_argument + assert_raises ArgumentError do + @subject.loaded?(nil) + end + end + + def test_search_returns_empty_array_if_no_matches_found + assert_equal([], @subject.search(:something)) + end + + def test_search_returns_matches_on_prefix + @subject.add([:another_region, :test_region]) + assert_equal([:test_region], @subject.search(:test_)) + end + + def test_search_returns_multiple_matches_on_prefix + @subject.add([:another_region, :test_region, :test_region2]) + assert_equal([:test_region, :test_region2], @subject.search(:test_)) + end + + def test_search_raises_error_if_prefix_is_not_a_string + assert_raises ArgumentError do + @subject.search("string") + end + + assert_raises ArgumentError do + @subject.search(nil) + end + end + + def test_all_generated_returns_value_from_initializer + assert_equal(@all_generated_regions, @subject.all_generated) + end + + def test_parent_region_lookup_returns_region_if_it_exists + assert_equal(@parent_region_lookup[:subregion], @subject.parent_region_lookup(:subregion)) + end + + def test_parent_region_lookup_returns_nil_if_does_not_exist_in_lookup + assert_nil(@subject.parent_region_lookup(:parent)) + end +end diff --git a/vendor/holidays/test/holidays/definition/validator/test_custom_method.rb b/vendor/holidays/test/holidays/definition/validator/test_custom_method.rb new file mode 100644 index 00000000..c3d49b0e --- /dev/null +++ b/vendor/holidays/test/holidays/definition/validator/test_custom_method.rb @@ -0,0 +1,94 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/validator/custom_method' + +class CustomMethodValidatorTests < Test::Unit::TestCase + def setup + @subject = Holidays::Definition::Validator::CustomMethod.new + end + + def test_valid_returns_true_if_valid + m = {:name => "good_method", :arguments => "year", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_true_with_multiple_arguments + m = {:name => "good_method", :arguments => "year,month", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_true_with_date_argument + m = {:name => "good_method", :arguments => "date", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_true_with_year_argument + m = {:name => "good_method", :arguments => "year", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_true_with_month_argument + m = {:name => "good_method", :arguments => "month", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_true_with_day_argument + m = {:name => "good_method", :arguments => "day", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_true_with_region_argument + m = {:name => "good_method", :arguments => "region", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_true_multiple_arguments_with_whitespace + m = {:name => "good_method", :arguments => "year , month", :source => "source"} + assert @subject.valid?(m) + end + + def test_valid_returns_false_if_single_argument_contain_carriage_return + m = {:name => "bad_method", :arguments =>"year\n", :source =>"d = Date.civil(year, 1, 1)\nd + 2\n"} + assert_false @subject.valid?(m) + end + + def test_valid_returns_false_if_multiple_arguments_contain_carriage_return + m = {:name => "bad_method", :arguments =>"year,month\n", :source =>"d = Date.civil(year, 1, 1)\nd + 2\n"} + assert_false @subject.valid?(m) + end + + def test_valid_returns_false_if_multiple_arguments_contain_carriage_return_with_whitespace + m = {:name => "bad_method", :arguments =>"year , month\n", :source =>"d = Date.civil(year, 1, 1)\nd + 2\n"} + assert_false @subject.valid?(m) + end + + def test_valid_returns_false_if_no_source + m = {:name => "bad_method", :arguments => "day"} + assert_false @subject.valid?(m) + end + + def test_valid_returns_false_if_source_is_empty + m = {:name => "bad_method", :arguments => "day", :source => ""} + assert_false @subject.valid?(m) + end + + def test_valid_returns_false_if_name_is_missing + m = {:arguments => "day", :source => "source"} + assert_false @subject.valid?(m) + end + + def test_valid_returns_false_if_name_is_empty + m = {:name => "", :arguments => "day", :source => "source"} + assert_false @subject.valid?(m) + end + + def test_returns_false_if_multiple_arguments_contain_unrecognized_value + m = {:name => "bad_method", :arguments => "year,month,day,date,unknown", :source => "source"} + assert_false @subject.valid?(m) + end + + def test_returns_false_if_single_argument_contains_unrecognized_value + m = {:name => "bad_method", :arguments => "unknown", :source => "source"} + assert_false @subject.valid?(m) + end +end diff --git a/vendor/holidays/test/holidays/definition/validator/test_region.rb b/vendor/holidays/test/holidays/definition/validator/test_region.rb new file mode 100644 index 00000000..3349fe32 --- /dev/null +++ b/vendor/holidays/test/holidays/definition/validator/test_region.rb @@ -0,0 +1,54 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/validator/region' + +class RegionValidatorTests < Test::Unit::TestCase + def setup + @regions_repo = mock() + @regions_repo.stubs(:loaded?).returns(false) + @regions_repo.stubs(:all_generated).returns([]) + + @subject = Holidays::Definition::Validator::Region.new(@regions_repo) + end + + def test_returns_true_if_region_loaded_in_generated_files + @regions_repo.expects(:all_generated).returns([:us]) + assert(@subject.valid?(:us)) + end + + def test_returns_true_if_region_is_in_regions_repository + @regions_repo.expects(:loaded?).with(:custom).returns(true) + assert(@subject.valid?(:custom)) + end + + def test_returns_false_if_region_does_not_exist_in_generated_files_or_regions_repo + @regions_repo.expects(:loaded?).with(:unknown_region).returns(false) + assert_equal(false, @subject.valid?(:unknown_region)) + end + + def test_returns_false_if_region_is_not_a_symbol + assert_equal(false, @subject.valid?('not-a-symbol')) + end + + def test_returns_true_if_region_is_any + assert(@subject.valid?(:any)) + end + + def test_returns_true_if_wildcard_region_is_valid + @regions_repo.expects(:all_generated).returns([:gb]) + assert(@subject.valid?(:gb_)) + end + + def test_returns_false_if_wildcard_region_is_invalid + assert_equal(false, @subject.valid?(:somethingweird_)) + end + + def test_returns_false_if_malicious_region_is_given + assert_equal(false, @subject.valid?(:"../../../test")) + end + + def test_returns_true_with_multiple_underscores + @regions_repo.expects(:loaded?).with(:some_test_region).returns(true) + assert(@subject.valid?(:some_test_region)) + end +end diff --git a/vendor/holidays/test/holidays/definition/validator/test_test.rb b/vendor/holidays/test/holidays/definition/validator/test_test.rb new file mode 100644 index 00000000..923a8e2a --- /dev/null +++ b/vendor/holidays/test/holidays/definition/validator/test_test.rb @@ -0,0 +1,60 @@ +# Heh at this file name +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/definition/validator/test' + +class TestValidatorTests < Test::Unit::TestCase + def setup + @subject = Holidays::Definition::Validator::Test.new + end + + def test_returns_true_if_valid + t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'test', holiday: true, :options => ['option1']} + assert @subject.valid?(t) + end + + def test_returns_false_if_missing_dates + t = {:regions => ['us'], :name => 'test'} + assert_equal false, @subject.valid?(t) + end + + def test_returns_false_if_dates_contains_invalid_value + t = {:dates => ['2016-01-01', 'invalid-date'], :regions => ['us'], :name => 'test'} + assert_equal false, @subject.valid?(t) + end + + def test_returns_false_if_missing_regions + t = {:dates => ['2016-01-01'], :name => 'test'} + assert_equal false, @subject.valid?(t) + end + + def test_returns_false_if_regions_contains_non_string + t = {:dates => ['2016-01-01'], :regions => [3], :name => 'test'} + assert_equal false, @subject.valid?(t) + end + + def test_returns_false_if_name_not_a_string + t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 3} + assert_equal false, @subject.valid?(t) + end + + def test_returns_false_if_holiday_not_a_boolean + t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'Test', :holiday => 'invalid'} + assert_equal false, @subject.valid?(t) + end + + def test_returns_true_if_options_not_array_but_is_string + t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'test', :options => 'option1'} + assert @subject.valid?(t) + end + + def test_returns_false_if_options_contains_non_string + t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'Test', :options => [3]} + assert_equal false, @subject.valid?(t) + end + + def test_returns_false_if_both_holiday_and_name_are_missing + t = {:dates => ['2016-01-01'], :regions => ['us']} + assert_equal false, @subject.valid?(t) + end +end diff --git a/vendor/holidays/test/holidays/finder/context/test_between.rb b/vendor/holidays/test/holidays/finder/context/test_between.rb new file mode 100644 index 00000000..54f29c78 --- /dev/null +++ b/vendor/holidays/test/holidays/finder/context/test_between.rb @@ -0,0 +1,172 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/context/between' + +class BetweenTests < Test::Unit::TestCase + def setup + @regions = [:us] + @observed = false + @informal = false + + @definition_search = mock() + @dates_driver_builder = mock() + @options_parser = mock() + + @subject = Holidays::Finder::Context::Between.new( + @definition_search, + @dates_driver_builder, + @options_parser, + ) + + @start_date = Date.civil(2015, 1, 1) + @end_date = Date.civil(2015, 1, 1) + @dates_driver = {2015 => [0, 1, 2], 2014 => [0, 12]} + @options = [@regions, @observed, @informal] + + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([{ + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }]) + + @dates_driver_builder.expects(:call).at_most_once.with( + @start_date, @end_date, + ).returns( + @dates_driver, + ) + + @options_parser.expects(:call).at_most_once.with(@options).returns(@options) + end + + def test_returns_error_if_start_date_is_missing + assert_raise ArgumentError do + @subject.call(nil, @end_date, @options) + end + end + + def test_returns_error_if_end_date_is_missing + assert_raise ArgumentError do + @subject.call(@start_date, nil, @options) + end + end + + def test_returns_single_holiday + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + } + ], + @subject.call(@start_date, @end_date, @options) + ) + end + + def test_returns_sorted_multiple_holidays + @start_date = Date.civil(2015, 1, 1) + @end_date = Date.civil(2016, 12, 31) + + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([ + { + :date => Date.civil(2015, 6, 1), + :name => "2015-June", + :regions => [:us], + }, + { + :date => Date.civil(2015, 1, 1), + :name => "2015-Jan", + :regions => [:us], + }, + { + :date => Date.civil(2016, 6, 1), + :name => "2016-June", + :regions => [:us], + }, + ]) + + @dates_driver_builder.expects(:call).at_most_once.with( + @start_date, @end_date, + ).returns( + @dates_driver, + ) + + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "2015-Jan", + :regions => [:us], + }, + { + :date => Date.civil(2015, 6, 1), + :name => "2015-June", + :regions => [:us], + }, + { + :date => Date.civil(2016, 6, 1), + :name => "2016-June", + :regions => [:us], + }, + ], + @subject.call(@start_date, @end_date, @options) + ) + end + + def test_filters_holidays_returned_by_search_if_not_in_date_range + @start_date = Date.civil(2015, 1, 1) + @end_date = Date.civil(2015, 12, 31) + + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([ + { + :date => Date.civil(2015, 6, 1), + :name => "2015-June", + :regions => [:us], + }, + { + :date => Date.civil(2015, 1, 1), + :name => "2015-Jan", + :regions => [:us], + }, + { + :date => Date.civil(2016, 6, 1), + :name => "2016-June", + :regions => [:us], + }, + ]) + + @dates_driver_builder.expects(:call).at_most_once.with( + @start_date, @end_date, + ).returns( + @dates_driver, + ) + + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "2015-Jan", + :regions => [:us], + }, + { + :date => Date.civil(2015, 6, 1), + :name => "2015-June", + :regions => [:us], + }, + ], + @subject.call(@start_date, @end_date, @options) + ) + end +end diff --git a/vendor/holidays/test/holidays/finder/context/test_dates_driver_builder.rb b/vendor/holidays/test/holidays/finder/context/test_dates_driver_builder.rb new file mode 100644 index 00000000..e3b5c58f --- /dev/null +++ b/vendor/holidays/test/holidays/finder/context/test_dates_driver_builder.rb @@ -0,0 +1,91 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/context/dates_driver_builder' + +class DatesDriverBuilderTests < Test::Unit::TestCase + def setup + @subject = Holidays::Finder::Context::DatesDriverBuilder.new + end + + def test_returns_appropriately_formatted_hash + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 31) + + dates_driver = @subject.call(start_date, end_date) + + assert(dates_driver.is_a?(Hash)) + + dates_driver.each do |year, months| + assert(year.is_a?(Integer)) + assert(months.is_a?(Array)) + end + end + + def test_all_years_always_contains_variable_month + start_date = Date.civil(2010, 1, 1) + end_date = Date.civil(2020, 1, 1) + + dates_driver = @subject.call(start_date, end_date) + + assert(dates_driver[2010].include?(0)) + assert(dates_driver[2011].include?(0)) + assert(dates_driver[2012].include?(0)) + assert(dates_driver[2013].include?(0)) + assert(dates_driver[2014].include?(0)) + assert(dates_driver[2015].include?(0)) + assert(dates_driver[2016].include?(0)) + assert(dates_driver[2017].include?(0)) + assert(dates_driver[2018].include?(0)) + assert(dates_driver[2019].include?(0)) + assert(dates_driver[2020].include?(0)) + end + + def test_january_includes_february + dates_driver = @subject.call(Date.civil(2015, 1, 1), Date.civil(2015, 1, 1)) + + assert(dates_driver[2015].include?(1)) + assert(dates_driver[2015].include?(2)) + end + + def test_january_includes_previous_year_december + dates_driver = @subject.call(Date.civil(2015, 1, 1), Date.civil(2015, 1, 1)) + + assert(dates_driver[2015].include?(1)) + assert(dates_driver[2014].include?(12)) + end + + def test_december_includes_november + dates_driver = @subject.call(Date.civil(2015, 12, 1), Date.civil(2015, 12, 1)) + + assert(dates_driver[2015].include?(12)) + assert(dates_driver[2015].include?(11)) + end + + def test_december_includes_next_year_january + dates_driver = @subject.call(Date.civil(2015, 12, 1), Date.civil(2015, 12, 1)) + + assert(dates_driver[2015].include?(12)) + assert(dates_driver[2016].include?(1)) + end + + def test_middle_months_include_border_months + dates_driver = @subject.call(Date.civil(2015, 5, 1), Date.civil(2015, 5, 1)) + assert(dates_driver[2015].include?(4)) + assert(dates_driver[2015].include?(5)) + assert(dates_driver[2015].include?(6)) + + dates_driver = @subject.call(Date.civil(2015, 10, 1), Date.civil(2015, 10, 1)) + assert(dates_driver[2015].include?(9)) + assert(dates_driver[2015].include?(10)) + assert(dates_driver[2015].include?(11)) + + dates_driver = @subject.call(Date.civil(2015, 3, 1), Date.civil(2015, 7, 1)) + assert(dates_driver[2015].include?(2)) + assert(dates_driver[2015].include?(3)) + assert(dates_driver[2015].include?(4)) + assert(dates_driver[2015].include?(5)) + assert(dates_driver[2015].include?(6)) + assert(dates_driver[2015].include?(7)) + assert(dates_driver[2015].include?(8)) + end +end diff --git a/vendor/holidays/test/holidays/finder/context/test_next_holiday.rb b/vendor/holidays/test/holidays/finder/context/test_next_holiday.rb new file mode 100644 index 00000000..5a36e9dd --- /dev/null +++ b/vendor/holidays/test/holidays/finder/context/test_next_holiday.rb @@ -0,0 +1,156 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/context/next_holiday' + +class NextHolidayTests < Test::Unit::TestCase + def setup + @regions = [:us] + @observed = false + @informal = false + + @definition_search = mock() + @dates_driver_builder = mock() + @options_parser = mock() + + @subject = Holidays::Finder::Context::NextHoliday.new( + @definition_search, + @dates_driver_builder, + @options_parser, + ) + + @holiday_count = 1 + @from_date= Date.civil(2015, 1, 1) + @dates_driver = {2015 => [0, 1, 2], 2014 => [0, 12]} + @options = [@regions, @observed, @informal] + + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([{ + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }]) + + @dates_driver_builder.expects(:call).at_most_once.with( + @from_date, @from_date >> 12, + ).returns( + @dates_driver, + ) + + @options_parser.expects(:call).at_most_once.with(@options).returns(@options) + end + + def test_returns_error_if_holidays_count_is_missing + assert_raise ArgumentError do + @subject.call(nil, @from_date, @options) + end + end + + def test_returns_error_if_holidays_count_is_less_than_or_equal_to_zero + assert_raise ArgumentError do + @subject.call(0, @from_date, @options) + end + end + + def test_returns_error_if_from_date_is_missing + assert_raise ArgumentError do + @subject.call(@holiday_count, nil, @options) + end + end + + def test_returns_single_holiday + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + } + ], + @subject.call(@holiday_count, @from_date, @options) + ) + end + + def test_returns_correct_holidays_based_on_holiday_count + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 12, 1), + :name => "Test", + :regions => [:us], + }, + ]) + + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + } + ], + @subject.call(2, @from_date, @options) + ) + end + + def test_returns_correctly_sorted_holidays_based_on_holiday_count_if_holidays_are_out_of_order + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 12, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + ] + ) + + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + } + ], + @subject.call(2, @from_date, @options) + ) + end +end diff --git a/vendor/holidays/test/holidays/finder/context/test_parse_options.rb b/vendor/holidays/test/holidays/finder/context/test_parse_options.rb new file mode 100644 index 00000000..298e1d54 --- /dev/null +++ b/vendor/holidays/test/holidays/finder/context/test_parse_options.rb @@ -0,0 +1,141 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/context/parse_options' + +class ParseOptionsTests < Test::Unit::TestCase + def setup + @regions_repo = mock() + @regions_repo.stubs(:loaded?).returns(false) + + @region_validator = mock() + @region_validator.stubs(:valid?).returns(true) + + @definition_loader = mock() + @definition_loader.stubs(:call) + + @subject = Holidays::Finder::Context::ParseOptions.new( + @regions_repo, + @region_validator, + @definition_loader, + ) + end + + def test_returns_observed_true_if_options_contains_observed_flag + @regions_repo.expects(:parent_region_lookup).with(:ca).returns(:ca) + observed = @subject.call([:ca, :observed])[1] + assert_equal(true, observed) + end + + def test_returns_observed_false_if_options_does_not_contain_observed_flag + @regions_repo.expects(:parent_region_lookup).with(:ca).returns(:ca) + observed = @subject.call([:ca])[1] + assert_equal(false, observed) + end + + def test_returns_informal_true_if_options_contains_informal_flag + @regions_repo.expects(:parent_region_lookup).with(:ca).returns(:ca) + informal = @subject.call([:ca, :informal])[2] + assert_equal(true, informal) + end + + def test_returns_informal_false_if_options_does_not_contain_informal_flag + @regions_repo.expects(:parent_region_lookup).with(:ca).returns(:ca) + informal = @subject.call([:ca])[2] + assert_equal(false, informal) + end + + def test_raises_error_if_regions_are_invalid + @region_validator.stubs(:valid?).returns(false) + + assert_raise Holidays::InvalidRegion do + @subject.call([:unknown_region]) + end + end + + def test_wildcards_load_appropriate_regions + @definition_loader.expects(:call).with(:ch).returns([:ch, :ch_zh]) + + regions = @subject.call([:ch_]).first + + assert_equal([:ch, :ch_zh], regions) + assert_equal(false, regions.include?(:ch_)) + end + + def test_does_nothing_if_region_is_already_loaded_and_is_parent + @regions_repo.expects(:parent_region_lookup).with(:test).returns(nil) + regions = @subject.call([:test]).first + assert_equal([:test], regions) + end + + def test_does_nothing_if_region_is_already_loaded_and_is_parent_but_is_custom + @regions_repo.expects(:parent_region_lookup).with(:custom_region).returns(nil) + @regions_repo.expects(:loaded?).with(:custom_region).returns(true) + + regions = @subject.call([:custom_region]).first + assert_equal([:custom_region], regions) + end + + def test_has_parent_loads_parent_region + @regions_repo.expects(:parent_region_lookup).with(:subregion).returns(:parent) + @regions_repo.expects(:loaded?).with(:parent).returns(false) + @definition_loader.expects(:call).with(:parent).returns([:parent, :subregion]) + + regions = @subject.call([:subregion]).first + assert_equal([:subregion], regions) + end + + def test_has_parent_already_loaded_does_not_load_again + @regions_repo.expects(:parent_region_lookup).with(:subregion).returns(:parent) + @regions_repo.expects(:loaded?).with(:parent).returns(false) + @definition_loader.expects(:call).with(:parent).returns([:parent, :subregion]) + + regions = @subject.call([:subregion]).first + assert_equal([:subregion], regions) + end + + def test_cannot_load_region_prefix_for_wildcard_raises_error + @definition_loader.expects(:call).with(:ch).raises(LoadError) + assert_raises Holidays::UnknownRegionError do + @subject.call([:ch_]) + end + end + + def test_cannot_load_region_not_wildcard_raises_error + @regions_repo.expects(:parent_region_lookup).with(:ch).returns(:ch) + @definition_loader.expects(:call).with(:ch).raises(LoadError) + assert_raises Holidays::UnknownRegionError do + @subject.call([:ch]) + end + end + + def test_region_with_multiple_underscores_load_correctly + @regions_repo.expects(:parent_region_lookup).with(:subregion_with_underscores).returns(:parent) + @regions_repo.expects(:loaded?).with(:parent).returns(false) + @definition_loader.expects(:call).with(:parent).returns([:parent, :subregion_with_underscores]) + + regions = @subject.call([:subregion_with_underscores]).first + assert_equal([:subregion_with_underscores], regions) + end + + def test_blank_region_should_load_all_regions_available + @regions_repo.expects(:all_generated).returns([:region1, :region2]) + @regions_repo.expects(:loaded?).with(:region1).returns(false) + @regions_repo.expects(:loaded?).with(:region2).returns(true) + @regions_repo.expects(:parent_region_lookup).with(:region1).returns(:region2) + @definition_loader.expects(:call).with(:region2) + + regions = @subject.call.first + assert_equal([:region1, :region2], regions) + end + + def test_special_any_region_should_load_all_regions_available + @regions_repo.expects(:all_generated).returns([:region1, :region2]) + @regions_repo.expects(:loaded?).with(:region1).returns(false) + @regions_repo.expects(:loaded?).with(:region2).returns(true) + @regions_repo.expects(:parent_region_lookup).with(:region1).returns(:region2) + @definition_loader.expects(:call).with(:region2) + + regions = @subject.call(:any).first + assert_equal([:region1, :region2], regions) + end +end diff --git a/vendor/holidays/test/holidays/finder/context/test_search.rb b/vendor/holidays/test/holidays/finder/context/test_search.rb new file mode 100644 index 00000000..1e976586 --- /dev/null +++ b/vendor/holidays/test/holidays/finder/context/test_search.rb @@ -0,0 +1,232 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/context/search' + +class FinderSearchTests < Test::Unit::TestCase + def setup + @holidays_by_month_repo = mock() + @custom_method_processor = mock() + @day_of_month_calculator = mock() + + @in_region_rule = mock() + @year_range_rule = mock() + @rules = {:in_region => @in_region_rule, :year_range => @year_range_rule} + + @custom_method_repo = mock() + @proc_cache_repo = mock() + + @start_date = Date.civil(2015, 1, 1) + @end_date = Date.civil(2015, 1, 1) + @dates_driver = {2015 => [1]} + @regions = [:us] + @options = [] + + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 1, :name => "Test", :regions=>@regions]) + @in_region_rule.expects(:call).at_most_once.returns(true) + @year_range_rule.expects(:call).at_most_once.returns(false) + + @subject = Holidays::Finder::Context::Search.new( + @holidays_by_month_repo, + @custom_method_processor, + @day_of_month_calculator, + @rules, + ) + end + + def test_raises_error_if_dates_driver_is_empty + @dates_driver = {} + assert_raises ArgumentError do + @subject.call(@dates_driver, @regions, @options) + end + end + + def test_raises_error_if_dates_driver_contains_bad_month + @dates_driver = {2015 => [100]} + assert_raises ArgumentError do + @subject.call(@dates_driver, @regions, @options) + end + end + + def test_raises_error_if_dates_driver_contains_bad_month_mixed_with_valid_months + @dates_driver = {2015 => [1, 12], 2020 => [1, 200]} + assert_raises ArgumentError do + @subject.call(@dates_driver, @regions, @options) + end + end + + def test_returns_nothing_if_holidays_repo_returns_nil + @holidays_by_month_repo.expects(:find_by_month).with(1).returns(nil) + assert_equal([], @subject.call(@dates_driver, @regions, @options)) + end + + def test_returns_nothing_if_holidays_repo_returns_empty_array + @holidays_by_month_repo.expects(:find_by_month).with(1).returns([]) + assert_equal([], @subject.call(@dates_driver, @regions, @options)) + end + + def test_returns_nothing_if_holidays_not_in_region + @holidays_by_month_repo.expects(:find_by_month).returns([:regions=>[:other_region]]) + @in_region_rule.expects(:call).with(@regions, [:other_region]).returns(false) + assert_equal([], @subject.call(@dates_driver, @regions, @options)) + end + + def test_returns_nothing_if_only_informal_holidays_are_returned_and_no_informal_flag_set + @holidays_by_month_repo.expects(:find_by_month).returns([:type => :informal, :regions=>@regions]) + assert_equal([], @subject.call(@dates_driver, @regions, @options)) + end + + def test_year_rule_set_but_not_in_required_years_returns_nothing + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 1, :name => "Test", :regions=>@regions, :year_ranges => [:after => 2000]]) + assert_equal([], @subject.call(@dates_driver, @regions, @options)) + end + + def test_function_present_returns_date + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 1, :name => "Test", :regions=> @regions, :function => "func-id", :function_arguments => [:year], :function_modifier => 1]) + + returned_date = Date.civil(2015, 3, 10) + @custom_method_processor.expects(:call).with( + {:year => 2015, :month => 1, :day => 1, :region => :us}, + "func-id", + [:year], + 1, + ).returns(returned_date) + + assert_equal( + [{ + :date => Date.civil(2015, 3, 10), + :name => "Test", + :regions => [:us], + }], + @subject.call(@dates_driver, @regions, @options) + ) + end + + #FIXME This is a test that reflects how the current system works + # but this is NOT valid. See https://github.com/holidays/holidays/issues/204 + def test_function_returns_nil_date_should_not_be_returned + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 1, :name => "Test", :regions=> @regions, :function => "func-id", :function_arguments => [:year], :function_modifier => 1]) + + @custom_method_processor.expects(:call).with( + {:year => 2015, :month => 1, :day => 1, :region => :us}, + "func-id", + [:year], + 1, + ).returns(nil) + + assert_equal([], @subject.call(@dates_driver, @regions, @options)) + end + + def test_function_not_present_mday_set + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 15, :name => "Test", :regions=> @regions]) + + assert_equal( + [{ + :date => Date.civil(2015, 1, 15), + :name => "Test", + :regions => [:us], + }], + @subject.call(@dates_driver, @regions, @options) + ) + end + + def test_function_not_present_mday_not_set + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:name => "Test", :week => 1, :wday => 1, :regions=> @regions]) + + @day_of_month_calculator.expects(:call).with(2015, 1, 1, 1).returns(20) + + assert_equal( + [{ + :date => Date.civil(2015, 1, 20), + :name => "Test", + :regions => [:us], + }], + @subject.call(@dates_driver, @regions, @options) + ) + end + + def test_returns_holiday_if_informal_and_informal_flag_set + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 13, :name => "Test", :type => :informal, :regions=>@regions]) + + assert_equal( + [{ + :date => Date.civil(2015, 1, 13), + :name => "Test", + :regions => [:us], + }], + @subject.call(@dates_driver, @regions, [:informal]) + ) + end + + def test_does_not_return_holiday_if_informal_and_informal_flag_not_set + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 13, :name => "Test", :type => :informal, :regions=>@regions]) + + assert_equal([], @subject.call(@dates_driver, @regions, @options)) + end + + def test_returns_observed_result_if_observed_set_and_observed_function_present + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 8, :name => "Test", :type => :observed, :observed => "SOME_OBSERVED_FUNC_ID", :regions=>@regions]) + + @custom_method_processor.expects(:call).with( + {:year => 2015, :month => 1, :day => 8, :region => :us}, + "SOME_OBSERVED_FUNC_ID", + [:date], + ).returns(Date.civil(2015, 10, 1)) + + assert_equal( + [{ + :date => Date.civil(2015, 10, 1), + :name => "Test", + :regions => [:us], + }], + @subject.call(@dates_driver, @regions, [:observed]) + ) + end + + def test_returns_unobserved_date_if_observed_method_not_set_but_flag_is_present + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns([:mday => 14, :name => "Test", :type => :observed, :observed => "SOME_OBSERVED_FUNC_ID", :regions=>@regions]) + + assert_equal( + [{ + :date => Date.civil(2015, 1, 14), + :name => "Test", + :regions => [:us], + }], + @subject.call(@dates_driver, @regions, @options) + ) + end + + # This is a specific scenario but it COULD happen in our current flow. The goal: any date + # manipulation that occurs for a specific holiday should have no impact on other holidays. + def test_returns_expected_result_if_custom_method_modifies_month_when_multiple_holidays_found + @in_region_rule.expects(:call).twice.returns(true) + @holidays_by_month_repo.expects(:find_by_month).at_most_once.returns( + [ + {:mday => 14, :name => "Test", :function => "func-id", :function_arguments => [:year], :regions => @regions}, + {:mday => 14, :name => "Test2", :regions => @regions}, + ] + ) + + @custom_method_processor.expects(:call).with( + {:year => 2015, :month => 1, :day => 14, :region => :us}, + "func-id", + [:year], + nil, + ).returns(Date.civil(2015, 3, 14)) + + assert_equal( + [ + { + :date => Date.civil(2015, 3, 14), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 1, 14), + :name => "Test2", + :regions => [:us], + } + ], + @subject.call(@dates_driver, @regions, @options) + ) + end +end diff --git a/vendor/holidays/test/holidays/finder/context/test_year_holiday.rb b/vendor/holidays/test/holidays/finder/context/test_year_holiday.rb new file mode 100644 index 00000000..e798ace2 --- /dev/null +++ b/vendor/holidays/test/holidays/finder/context/test_year_holiday.rb @@ -0,0 +1,202 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/context/year_holiday' + +class YearHolidayTests < Test::Unit::TestCase + def setup + @regions = [:us] + @observed = false + @informal = false + + @definition_search = mock() + @dates_driver_builder = mock() + @options_parser = mock() + + @subject = Holidays::Finder::Context::YearHoliday.new( + @definition_search, + @dates_driver_builder, + @options_parser, + ) + + @from_date= Date.civil(2015, 1, 1) + @dates_driver = {2015 => [0, 1, 2], 2014 => [0, 12]} + @options = [@regions, @observed, @informal] + + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([{ + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }]) + + @dates_driver_builder.expects(:call).at_most_once.with( + @from_date, @from_date >> 12, + ).returns( + @dates_driver, + ) + + @options_parser.expects(:call).at_most_once.with(@options).returns(@options) + end + + def test_returns_error_if_from_date_is_missing + assert_raise ArgumentError do + @subject.call(nil, @options) + end + end + + def test_returns_error_if_from_date_is_not_a_date + assert_raise ArgumentError do + @subject.call("2015-1-1", @options) + end + end + + def test_returns_single_holiday + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + } + ], + @subject.call(@from_date, @options) + ) + end + + def test_returns_multiple_holidays_in_a_year + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 12, 1), + :name => "Test", + :regions => [:us], + }, + ] + ) + + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 12, 1), + :name => "Test", + :regions => [:us], + } + ], + @subject.call(@from_date, @options) + ) + end + + def test_returns_multiple_holidays_filters_dates_outside_of_year + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns([ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2016, 12, 1), + :name => "Test", + :regions => [:us], + }, + ] + ) + + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + ], + @subject.call(@from_date, @options) + ) + end + + def test_returns_sorted_multiple_holidays + @definition_search.expects(:call).at_most_once.with( + @dates_driver, + @regions, + [], + ).returns( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 12, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + ] + ) + + assert_equal( + [ + { + :date => Date.civil(2015, 1, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 2, 1), + :name => "Test", + :regions => [:us], + }, + { + :date => Date.civil(2015, 12, 1), + :name => "Test", + :regions => [:us], + } + ], + @subject.call(@from_date, @options) + ) + end +end diff --git a/vendor/holidays/test/holidays/finder/rules/test_in_region.rb b/vendor/holidays/test/holidays/finder/rules/test_in_region.rb new file mode 100644 index 00000000..a660be2f --- /dev/null +++ b/vendor/holidays/test/holidays/finder/rules/test_in_region.rb @@ -0,0 +1,42 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/rules/in_region' + +class FinderRulesInRegionTests < Test::Unit::TestCase + def setup + @available = [:test] + @subject = Holidays::Finder::Rules::InRegion + end + + def test_returns_true_if_any_specified + assert_equal(true, @subject.call([:any], @available)) + end + + def test_returns_true_if_exact_match_found + assert_equal(true, @subject.call([:test], @available)) + end + + def test_returns_true_if_subregion_matches_parent + assert_equal(true, @subject.call([:test_sub], @available)) + end + + def test_returns_true_if_subregion_matches_grandparent + assert_equal(true, @subject.call([:test_sub_sub], @available)) + end + + def test_returns_true_if_subregion_is_in_available + assert_equal(true, @subject.call([:test_sub], [:test, :test_sub])) + end + + def test_returns_false_if_match_not_found + assert_equal(false, @subject.call([:other], @available)) + end + + def test_returns_false_if_match_not_found_for_subregion + assert_equal(false, @subject.call([:other_sub], @available)) + end + + def test_returns_true_if_request_includes_nonmatching_but_also_any + assert_equal(true, @subject.call([:other_sub, :other, :any], @available)) + end +end diff --git a/vendor/holidays/test/holidays/finder/rules/test_year_range.rb b/vendor/holidays/test/holidays/finder/rules/test_year_range.rb new file mode 100644 index 00000000..03f427d3 --- /dev/null +++ b/vendor/holidays/test/holidays/finder/rules/test_year_range.rb @@ -0,0 +1,166 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper' + +require 'holidays/finder/rules/year_range' + +class FinderRulesYearRangeTests < Test::Unit::TestCase + def setup + @year = 2015 + @year_ranges = {between: 1996..2002} + @subject = Holidays::Finder::Rules::YearRange + end + + def test_returns_error_if_target_year_is_missing + assert_raises ArgumentError do + @subject.call(nil, @year_ranges) + end + end + + def test_returns_error_if_target_year_is_not_a_number + assert_raises ArgumentError do + @subject.call("test", @year_ranges) + end + end + + def test_returns_error_if_year_ranges_if_nil + @year_ranges = [] + assert_raises ArgumentError do + @subject.call(@year, nil) + end + end + + def test_returns_error_if_year_ranges_contains_only_non_hash + @year_ranges = :test + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_error_if_year_ranges_is_empty + @year_ranges = [{}, {}] + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_error_if_year_range_contains_a_hash_with_multiple_entries + @year_ranges = {:between => 1996..2002, :after => 2002} + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_error_if_year_range_contains_unrecognized_operator + @year_ranges = {:what => 2002} + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_error_if_until_operator_and_value_is_not_a_number + @year_ranges = {until: "bad"} + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_true_if_until_operator_and_target_is_until + @year_ranges = {until: 2000} + assert_equal(true, @subject.call(1999, @year_ranges)) + end + + def test_returns_true_if_until_operator_and_target_is_equal + @year_ranges = {until: 2000} + assert_equal(true, @subject.call(2000, @year_ranges)) + end + + def test_returns_false_if_until_operator_and_target_is_after + @year_ranges = {until: 2000} + assert_equal(false, @subject.call(2001, @year_ranges)) + end + + def test_returns_error_if_from_operator_with_bad_value + @year_ranges = {from: "bad"} + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_false_if_from_operator_and_target_is_before + @year_ranges = {from: 2000} + assert_equal(false, @subject.call(1999, @year_ranges)) + end + + def test_returns_true_if_from_operator_and_target_is_equal + @year_ranges = {from: 2000} + assert_equal(true, @subject.call(2000, @year_ranges)) + end + + def test_returns_true_if_from_operator_and_target_is_after + @year_ranges = {from: 2000} + assert_equal(true, @subject.call(2001, @year_ranges)) + end + + def test_returns_error_if_limited_operator_and_bad_value + @year_ranges = {limited: "bad"} + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_error_if_limited_operator_with_empty_array + @year_ranges = {limited: []} + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_error_if_limited_operator_with_array_containing_non_integer_value + @year_ranges = {limited: ["bad"]} + assert_raises ArgumentError do + @subject.call(@year, @year_ranges) + end + end + + def test_returns_true_if_limited_operator_and_value_is_number_that_matches_target + @year_ranges = {limited: [2002]} + assert_equal(true, @subject.call(2002, @year_ranges)) + end + + def test_returns_false_if_limited_operator_and_target_is_not_included + @year_ranges = {limited: [1998,2000]} + assert_equal(false, @subject.call(1997, @year_ranges)) + assert_equal(false, @subject.call(1999, @year_ranges)) + assert_equal(false, @subject.call(2002, @year_ranges)) + end + + def test_returns_true_if_limited_operator_and_target_is_included + @year_ranges = {limited: [1998, 2000, 2002]} + assert_equal(true, @subject.call(1998, @year_ranges)) + assert_equal(true, @subject.call(2000, @year_ranges)) + assert_equal(true, @subject.call(2002, @year_ranges)) + end + + def test_returns_error_if_between_operator_and_value_not_a_range + @year_ranges = {between: 2000} + assert_raises ArgumentError do + @subject.call(2003, @year_ranges) + end + end + + def test_returns_false_if_between_operator_and_target_is_before + @year_ranges = {between: 1998..2002} + assert_equal(false, @subject.call(1997, @year_ranges)) + end + + def test_returns_true_if_between_operator_and_target_is_covered + @year_ranges = {between: 1998..2002} + assert_equal(true, @subject.call(1998, @year_ranges)) + assert_equal(true, @subject.call(2000, @year_ranges)) + assert_equal(true, @subject.call(2002, @year_ranges)) + end + + def test_returns_false_if_between_operator_and_target_is_after + @year_ranges = {between: 1998..2002} + assert_equal(false, @subject.call(2003, @year_ranges)) + end +end diff --git a/vendor/holidays/test/integration/README.md b/vendor/holidays/test/integration/README.md new file mode 100644 index 00000000..41b880ca --- /dev/null +++ b/vendor/holidays/test/integration/README.md @@ -0,0 +1,9 @@ +# Integration tests + +These tests are dependent on the files in /definitions (and, by proxy, /lib/generated_definitions). +It is possible that these tests will break because of 'unrelated' definition changes. The code +behind these changes could still be good but since the definitions changed we could see failures. + +These are not unit tests. This is not testing whether specific internal code is working. These are +tests from the consumer perspective. You must recognize that this could fail because of code +changes unrelated to definition changes. diff --git a/vendor/holidays/test/integration/test_all_regions.rb b/vendor/holidays/test/integration/test_all_regions.rb new file mode 100644 index 00000000..7d94463b --- /dev/null +++ b/vendor/holidays/test/integration/test_all_regions.rb @@ -0,0 +1,49 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class AllRegionsTests < Test::Unit::TestCase + def setup + Holidays::LoadAllDefinitions.call + end + + def test_definition_dir + assert File.directory?(Holidays::FULL_DEFINITIONS_PATH) + end + + def test_show_available_regions + regions = Holidays.available_regions + + assert_equal regions.size, Holidays::REGIONS.size + assert_equal regions, Holidays::REGIONS + end + + def test_load_subregion + holidays = Holidays.on(Date.civil(2014, 1, 1), :de_bb) + assert holidays.any? { |h| h[:name] == 'Neujahrstag' } + + holidays = Holidays.on(Date.civil(2020, 1, 1), :de_bb) + assert holidays.any? { |h| h[:name] == 'Neujahrstag' } + + holidays = Holidays.on(Date.civil(2027, 1, 1), :de_bb) + assert holidays.any? { |h| h[:name] == 'Neujahrstag' } + end + + def test_unknown_region_raises_exception + assert_raise Holidays::InvalidRegion do + Holidays.on(Date.civil(2014, 1, 1), :something_we_do_not_recognize) + end + + assert_raise Holidays::InvalidRegion do + Holidays.on(Date.civil(2020, 1, 1), :something_we_do_not_recognize) + end + + assert_raise Holidays::InvalidRegion do + Holidays.on(Date.civil(2030, 1, 1), :something_we_do_not_recognize) + end + end + + def test_malicious_load_attempt_raises_exception + assert_raise Holidays::InvalidRegion do + Holidays.between(Date.civil(2014, 1, 1), Date.civil(2016, 1, 1), '../../../../../../../../../../../../tmp/profile_pic.jpg') + end + end +end diff --git a/vendor/holidays/test/integration/test_any_holidays_during_work_week.rb b/vendor/holidays/test/integration/test_any_holidays_during_work_week.rb new file mode 100644 index 00000000..cf8f1f3e --- /dev/null +++ b/vendor/holidays/test/integration/test_any_holidays_during_work_week.rb @@ -0,0 +1,90 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class AnyHolidaysDuringWorkWeekTests < Test::Unit::TestCase + def subject + Holidays.method(:any_holidays_during_work_week?) + end + + def test_returns_true_when_single_holiday_exists_during_week + assert subject.call(Date.new(2018, 1, 1), :us) + end + + def test_returns_true_when_multiple_holidays_exist_during_week + assert subject.call(Date.new(2018, 12, 26), :gb) + end + + def test_returns_true_if_informal_flag_set_and_informal_holiday_exists_during_week + assert subject.call(Date.new(2018, 10, 31), :us, :informal) + end + + def test_returns_true_when_no_region_specified_and_single_holiday_exists_during_week + assert subject.call(Date.new(2018, 1, 1)) + end + + def test_returns_true_if_both_informal_and_observed_flags_set_and_informal_holiday_observed_during_week + assert subject.call(Date.new(2008, 11, 30), :gb_sct, :informal, :observed) + end + + def test_returns_true_when_observed_flag_set_and_holiday_is_observed_during_week + assert subject.call(Date.new(2012,9,5), :us, :observed) + end + + def test_returns_true_when_observed_flag_set_and_holiday_is_observed_on_monday + assert subject.call(Date.new(2018,11,12), :us, :observed) + end + + def test_returns_true_with_multiple_regions_and_holiday_occurs_during_week + assert subject.call(Date.new(2018,1,1), [:us, :gb]) + end + + def test_returns_true_when_observed_flag_set_and_holiday_on_saturday_but_observed_on_friday + assert subject.call(Date.new(2018,7,3), [:us], :observed) + end + + def test_returns_false_when_no_holiday_exists_during_week + assert_equal false, subject.call(Date.new(2018,7,30), :us) + end + + def test_returns_false_when_holiday_on_sunday + assert_equal false, subject.call(Date.new(2018,11,11), :us) + end + + def test_returns_false_when_holiday_on_saturday + assert_equal false, subject.call(Date.new(2017,11,11), :us) + end + + def test_returns_false_when_observed_flag_not_set_and_holiday_occurs_on_sunday_but_observed_on_monday + assert_equal false, subject.call(Date.new(2017,1,1), :us) + end + + def test_returns_false_if_informal_and_observed_flags_both_set_and_no_holiday_exists_during_week + assert_equal false, subject.call(Date.new(2018,7,30), :us, :informal, :observed) + end + + def test_returns_false_when_informal_flag_set_and_informal_holiday_occurs_on_weekend + assert_equal false, subject.call(Date.new(2018,4,14), :us, :informal) + end + + def test_returns_false_when_informal_flag_set_but_observed_is_not_and_informal_holiday_is_observed_on_monday + assert_equal false, subject.call(Date.new(2008, 11, 30), :gb_sct, :informal) + end + + def test_verify_count_of_weeks_without_any_holidays_for_2012 + weeks_in_2012 = Date.commercial(2013, -1).cweek + holidays_in_2012 = weeks_in_2012.times.count { |week| subject.call(Date.commercial(2012,week+1), :us) == false } + assert_equal 45, holidays_in_2012 + end + + def test_returns_true_for_new_years_in_any_region + assert subject.call(Date.civil(2016, 1, 1)) + end + + # These are in response to https://github.com/holidays/holidays/issues/264, just to be completely sure it's fixed. + def returns_true_for_various_holidays_in_poland + assert subject.call(Date.civil(2018, 1, 1), :pl) + assert subject.call(Date.civil(2018, 1, 2), :pl) + assert subject.call(Date.civil(2018, 5, 2), :pl) + assert subject.call(Date.civil(2018, 5, 3), :pl) + assert subject.call(Date.today, Date.today + 365*2, :pl, :observed) + end +end diff --git a/vendor/holidays/test/integration/test_available_regions.rb b/vendor/holidays/test/integration/test_available_regions.rb new file mode 100644 index 00000000..84eae311 --- /dev/null +++ b/vendor/holidays/test/integration/test_available_regions.rb @@ -0,0 +1,23 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class AvailableRegionsTests < Test::Unit::TestCase + def setup + @date = Date.civil(2008,1,1) + end + + def test_available_regions_returns_array + assert Holidays.available_regions.is_a?(Array) + end + + def test_available_regions_returns_array_of_symbols + Holidays.available_regions.each do |r| + assert r.is_a?(Symbol) + end + end + + # This test might fail if we add new regions. Since this is an integration test + # I am fine with that! + def test_available_regions_returns_correct_number_of_regions + assert_equal 258, Holidays.available_regions.count + end +end diff --git a/vendor/holidays/test/integration/test_custom_holidays.rb b/vendor/holidays/test/integration/test_custom_holidays.rb new file mode 100644 index 00000000..eb7bb5a3 --- /dev/null +++ b/vendor/holidays/test/integration/test_custom_holidays.rb @@ -0,0 +1,41 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class CustomHolidaysTest < Test::Unit::TestCase + + def test_custom_region_present_after_single_file_parsing + assert_raises Holidays::InvalidRegion do + Holidays.on(Date.civil(2013,6,20), :custom_single_file) + end + + Holidays.load_custom('test/data/test_single_custom_holiday_defs.yaml') + + assert_not_equal [], Holidays.on(Date.civil(2013,6,20), :custom_single_file) + end + + def test_load_custom_returns_loaded_holidays + expected_loaded_holidays = {6=>[{:mday=>20, :name=>"Company Founding", :regions=>[:custom_single_file]}]} + + assert_equal expected_loaded_holidays, Holidays.load_custom('test/data/test_single_custom_holiday_defs.yaml') + end + + def test_custom_holidays_present_after_multiple_file_parsing + assert_raises Holidays::InvalidRegion do + Holidays.on(Date.civil(2013, 10,5), :custom_multiple_files) + end + + assert_raises Holidays::InvalidRegion do + Holidays.on(Date.civil(2013,3,1), :custom_multiple_files) + end + + assert_raises Holidays::InvalidRegion do + Holidays.on(Date.civil(2013,3,1), :custom_multiple_files_govt) + end + + Holidays.load_custom('test/data/test_multiple_custom_holiday_defs.yaml', 'test/data/test_custom_govt_holiday_defs.yaml') + + assert_not_equal [], Holidays.on(Date.civil(2013,10,5), :custom_multiple_files) + assert_not_equal [], Holidays.on(Date.civil(2013,3,1), :custom_multiple_files) + assert_not_equal [], Holidays.on(Date.civil(2013,3,1), :custom_multiple_files_govt) + end + +end diff --git a/vendor/holidays/test/integration/test_custom_informal_holidays.rb b/vendor/holidays/test/integration/test_custom_informal_holidays.rb new file mode 100644 index 00000000..e358db92 --- /dev/null +++ b/vendor/holidays/test/integration/test_custom_informal_holidays.rb @@ -0,0 +1,15 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class CustomHolidaysTest < Test::Unit::TestCase + + def test_custom_region_informal_day_parsing + Holidays.load_custom('test/data/test_custom_informal_holidays_defs.yaml') + + assert_not_equal [], Holidays.on(Date.new(2018,1,1), :custom_informal, :informal) + assert_equal [], Holidays.on(Date.new(2018,1,1), :custom_informal, :observed) + + assert_not_equal [], Holidays.on(Date.new(2018,1,5), :custom_informal, :informal) + assert_equal [], Holidays.on(Date.new(2018,1,5), :custom_informal, :observed) + end + +end diff --git a/vendor/holidays/test/integration/test_custom_year_range_holidays.rb b/vendor/holidays/test/integration/test_custom_year_range_holidays.rb new file mode 100644 index 00000000..6de77829 --- /dev/null +++ b/vendor/holidays/test/integration/test_custom_year_range_holidays.rb @@ -0,0 +1,35 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class CustomYearRangeHolidaysTest < Test::Unit::TestCase + + def test_after_year_feature + Holidays.load_custom('test/data/test_custom_year_range_holiday_defs.yaml') + assert_equal [], Holidays.on(Date.civil(2015,6,1), :custom_year_range_file) + assert_not_equal [], Holidays.on(Date.civil(2016,6,1), :custom_year_range_file) + end + + def test_before_year_feature + Holidays.load_custom('test/data/test_custom_year_range_holiday_defs.yaml') + assert_not_equal [], Holidays.on(Date.civil(2017,6,2), :custom_year_range_file) + assert_equal [], Holidays.on(Date.civil(2018,6,2), :custom_year_range_file) + end + + def test_between_year_feature + Holidays.load_custom('test/data/test_custom_year_range_holiday_defs.yaml') + assert_equal [], Holidays.on(Date.civil(2015,6,3), :custom_year_range_file) + assert_not_equal [], Holidays.on(Date.civil(2016,6,3), :custom_year_range_file) + assert_not_equal [], Holidays.on(Date.civil(2017,6,3), :custom_year_range_file) + assert_not_equal [], Holidays.on(Date.civil(2018,6,3), :custom_year_range_file) + assert_equal [], Holidays.on(Date.civil(2019,6,3), :custom_year_range_file) + end + + def test_limited_year_feature + Holidays.load_custom('test/data/test_custom_year_range_holiday_defs.yaml') + assert_equal [], Holidays.on(Date.civil(2015,6,4), :custom_year_range_file) + assert_not_equal [], Holidays.on(Date.civil(2016,6,4), :custom_year_range_file) + assert_equal [], Holidays.on(Date.civil(2017,6,4), :custom_year_range_file) + assert_not_equal [], Holidays.on(Date.civil(2018,6,4), :custom_year_range_file) + assert_not_equal [], Holidays.on(Date.civil(2019,6,4), :custom_year_range_file) + assert_equal [], Holidays.on(Date.civil(2020,6,4), :custom_year_range_file) + end +end diff --git a/vendor/holidays/test/integration/test_holidays.rb b/vendor/holidays/test/integration/test_holidays.rb new file mode 100644 index 00000000..8cc83382 --- /dev/null +++ b/vendor/holidays/test/integration/test_holidays.rb @@ -0,0 +1,249 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class HolidaysTests < Test::Unit::TestCase + def setup + @date = Date.civil(2008,1,1) + end + + def test_on + h = Holidays.on(Date.civil(2008,9,1), :ca) + assert_equal 'Labour Day', h[0][:name] + + holidays = Holidays.on(Date.civil(2008,7,4), :ca) + assert_equal 0, holidays.length + end + + def test_requires_valid_regions + assert_raises Holidays::InvalidRegion do + Holidays.on(Date.civil(2008,1,1), :xx) + end + + assert_raises Holidays::InvalidRegion do + Holidays.on(Date.civil(2008,1,1), [:ca,:xx]) + end + + assert_raises Holidays::InvalidRegion do + Holidays.between(Date.civil(2008,1,1), Date.civil(2008,12,31), [:ca,:xx]) + end + end + + def test_requires_valid_regions_holiday_next + assert_raises Holidays::InvalidRegion do + Holidays.next_holidays(1, [:xx], Date.civil(2008,1,1)) + end + + assert_raises Holidays::InvalidRegion do + Holidays.next_holidays(1, [:ca,:xx], Date.civil(2008,1,1)) + Holidays.on(Date.civil(2008,1,1), [:ca,:xx]) + end + + assert_raises Holidays::InvalidRegion do + Holidays.next_holidays(1, [:ca,:xx]) + end + end + + def test_region_params + holidays = Holidays.on(@date, :ca) + assert_equal 1, holidays.length + + holidays = Holidays.on(@date, [:ca_bc,:ca]) + assert_equal 1, holidays.length + end + + def test_observed_dates + # Should fall on Tuesday the 1st + assert_equal 1, Holidays.on(Date.civil(2008,7,1), :ca, :observed).length + + # Should fall on Monday the 2nd + assert_equal 1, Holidays.on(Date.civil(2007,7,2), :ca, :observed).length + end + + def test_any_region + # Should return nothing(Victoria Day is not celebrated :ca wide anymore) + holidays = Holidays.between(Date.civil(2008,5,1), Date.civil(2008,5,31), :ca) + assert_equal 0, holidays.length + + # Should return Victoria Day and National Patriotes Day. + # + # Should be 2 in the CA region but other regional files are loaded during the + # unit tests add to the :any count. + holidays = Holidays.between(Date.civil(2008,5,1), Date.civil(2008,5,31), [:any]) + assert holidays.length >= 2 + + # Test blank region + holidays = Holidays.between(Date.civil(2008,5,1), Date.civil(2008,5,31)) + assert holidays.length >= 3 + end + + def test_any_region_holiday_next + # Should return Victoria Day. + holidays = Holidays.next_holidays(1, [:ca], Date.civil(2008,5,1)) + assert_equal 1, holidays.length + assert_equal ['2008-07-01','Canada Day'] , [holidays.first[:date].to_s, holidays.first[:name].to_s] + + # Should return 2 holidays. + holidays = Holidays.next_holidays(2, [:ca], Date.civil(2008,5,1)) + assert_equal 2, holidays.length + + # Should return 1 holiday in July + holidays = Holidays.next_holidays(1, [:jp], Date.civil(2016, 5, 22)) + assert_equal ['2016-07-18','海の日'] , [holidays.first[:date].to_s, holidays.first[:name].to_s] + + # Must Region.If there is not region, raise ArgumentError. + assert_raises ArgumentError do + Holidays.next_holidays(2, '', Date.civil(2008,5,1)) + end + # Options should be present.If they are empty, raise ArgumentError. + assert_raises ArgumentError do + Holidays.next_holidays(2, [], Date.civil(2008,5,1)) + end + # Options should be Array.If they are not Array, raise ArgumentError. + assert_raises ArgumentError do + Holidays.next_holidays(2, :ca, Date.civil(2008,5,1)) + end + end + + def test_year_holidays + # Should return 7 holidays from February 23 to December 31 + holidays = Holidays.year_holidays([:ca_on], Date.civil(2016, 2, 23)) + assert_equal 7, holidays.length + + # Must have options (Regions) + assert_raises ArgumentError do + Holidays.year_holidays([], Date.civil(2016, 2, 23)) + end + + # Options must be in the form of an array. + assert_raises ArgumentError do + Holidays.year_holidays(:ca_on, Date.civil(2016, 2, 23)) + end + end + + def test_year_holidays_with_specified_year + # Should return all 11 holidays for 2016 in Ontario, Canada + holidays = Holidays.year_holidays([:ca_on], Date.civil(2016, 1, 1)) + assert_equal 9, holidays.length + + # Should return all 5 holidays for 2016 in Australia + holidays = Holidays.year_holidays([:au], Date.civil(2016, 1, 1)) + assert_equal 5, holidays.length + end + + def test_year_holidays_without_specified_year + # Gets holidays for current year from today's date + holidays = Holidays.year_holidays([:de]) + assert_equal holidays.first[:date].year, Date.today.year + end + + def test_year_holidays_empty + # if remain holidays is nothing , method will return empty. + holidays = Holidays.year_holidays([:ca_on], Date.civil(2016, 12, 27)) + assert_empty holidays + end + + def test_year_holidays_random_years + # Should be 1 less holiday, as Family day didn't exist in Ontario in 1990 + holidays = Holidays.year_holidays([:ca_on], Date.civil(1990, 1, 1)) + assert_equal 8, holidays.length + + # Family day still didn't exist in 2000 + holidays = Holidays.year_holidays([:ca_on], Date.civil(2000, 1, 1)) + assert_equal 8, holidays.length + + holidays = Holidays.year_holidays([:ca_on], Date.civil(2020, 1, 1)) + assert_equal 9, holidays.length + + holidays = Holidays.year_holidays([:ca_on], Date.civil(2050, 1, 1)) + assert_equal 9, holidays.length + + holidays = Holidays.year_holidays([:jp], Date.civil(2070, 1, 1)) + assert_equal 19, holidays.length + end + + def test_sub_regions + # Should return nothing (Victoria Day is no longer :ca wide) + holidays = Holidays.between(Date.civil(2008,5,1), Date.civil(2008,5,31), :ca) + assert_equal 0, holidays.length + + ## Should return National Patriotes Day. + holidays = Holidays.between(Date.civil(2008,5,1), Date.civil(2008,5,31), :ca_qc) + assert_equal 1, holidays.length + + # Should return Victoria Day and National Patriotes Day. + holidays = Holidays.between(Date.civil(2008,5,1), Date.civil(2008,5,31), :ca_) + assert_equal 3, holidays.length + end + + def test_sub_regions_holiday_next + # Should return Victoria Day. + holidays = Holidays.next_holidays(2, [:ca_bc], Date.civil(2008,5,1)) + assert_equal 2, holidays.length + assert_equal ['2008-05-19','Victoria Day'] , [holidays.first[:date].to_s, holidays.first[:name].to_s] + + # Should return Victoria Da and National Patriotes Day. + holidays = Holidays.next_holidays(2, [:ca_qc], Date.civil(2008,5,1)) + assert_equal 2, holidays.length + assert_equal ['2008-06-24','Fête Nationale'] , [holidays.last[:date].to_s, holidays.last[:name].to_s] + + # Should return Victoria Day and National Patriotes Day. + holidays = Holidays.next_holidays(2, [:ca_], Date.civil(2008,5,1)) + assert_equal 2, holidays.length + + # Aparently something in jruby doesn't sort the same way as other rubies so....we'll just do it ourselves so + # we don't flap. + sorted_holidays = holidays.sort_by { |h| h[:name] } + assert_equal ['2008-05-19','National Patriotes Day'] , [sorted_holidays.first[:date].to_s, sorted_holidays.first[:name].to_s] + assert_equal ['2008-05-19','Victoria Day'] , [sorted_holidays.last[:date].to_s, sorted_holidays.last[:name].to_s] + end + + def test_easter_lambda + [Date.civil(1800,4,11), Date.civil(1899,3,31), Date.civil(1900,4,13), + Date.civil(2008,3,21), Date.civil(2035,3,23)].each do |date| + assert_equal 'Good Friday', Holidays.on(date, :ca)[0][:name] + end + + [Date.civil(1800,4,14), Date.civil(1899,4,3), Date.civil(1900,4,16), + Date.civil(2008,3,24), Date.civil(2035,3,26)].each do |date| + assert_equal 'Easter Monday', Holidays.on(date, :ca_qc, :informal)[0][:name] + end + end + + def test_sorting + (1..10).each{|year| + (1..12).each{|month| + holidays = Holidays.between(Date.civil(year, month, 1), Date.civil(year, month, 28), :gb_) + holidays.each_with_index{|holiday, index| + assert holiday[:date] >= holidays[index - 1][:date] if index > 0 + } + } + } + end + + def test_caching + good_friday = Date.civil(2008, 3, 21) + easter_monday = Date.civil(2008, 3, 24) + cache_end_date = Date.civil(2008, 3, 25) + + Holidays.cache_between(good_friday, cache_end_date, :ca, :informal) + + # Test that correct results are returned outside the + # cache range, and with no caching + assert_equal 1, Holidays.on(Date.civil(2035, 1, 1), :ca, :informal).length + assert_equal 1, Holidays.on(Date.civil(2035, 1, 1), :us).length + + # Make sure cache is hit for all successive calls + Holidays::Factory::Finder.expects(:between).never + + # Test that cache has been set and it returns the same as before + assert_equal 1, Holidays.on(good_friday, :ca, :informal).length + assert_equal 1, Holidays.on(easter_monday, :ca, :informal).length + assert_equal 1, easter_monday.holidays(:ca, :informal).length + assert_equal true, easter_monday.holiday?(:ca, :informal) + end + + def test_load_all + Holidays.load_all + assert_equal 258, Holidays.available_regions.count + end +end diff --git a/vendor/holidays/test/integration/test_holidays_between.rb b/vendor/holidays/test/integration/test_holidays_between.rb new file mode 100644 index 00000000..13d9f7ea --- /dev/null +++ b/vendor/holidays/test/integration/test_holidays_between.rb @@ -0,0 +1,87 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +require "#{Holidays::DEFINITIONS_PATH}/ca" + +# Re-include CA defs via holidays/north_america to ensure that individual +# defs aren't duplicated. +# +# NOTE: this test is a mixture of integration and unit tests. It's messy and bad. +# I am not fixing it here because I am trying to clean up the 'between' use case +# and don't want to bite off more than I can chew. +require "#{Holidays::DEFINITIONS_PATH}/northamerica" + +class HolidaysBetweenTests < Test::Unit::TestCase + def setup + @date = Date.civil(2008,1,1) + @subject = Holidays.method(:between) + end + + def teardown + Holidays::Factory::Definition.cache_repository.reset! + end + + def test_between + holidays = @subject.call(Date.civil(2008,7,1), Date.civil(2008,7,1), :ca) + assert_equal 1, holidays.length + + holidays = @subject.call(Date.civil(2008,7,1), Date.civil(2008,7,31), :ca) + assert_equal 1, holidays.length + + holidays = @subject.call(Date.civil(2008,7,2), Date.civil(2008,7,31), :ca) + assert_equal 0, holidays.length + end + + def test_between_raises_error_if_missing_start_or_end_date + assert_raise ArgumentError do + @subject.call(nil, Date.civil(2015, 1, 1), :us) + end + + assert_raise ArgumentError do + @subject.call(Date.civil(2015, 1, 1), nil, :us) + end + end + + def test_between_raises_error_if_end_date_is_before_start_date + assert_raise ArgumentError do + @subject.call(Date.civil(2019, 2, 1), Date.civil(2019, 1, 1), :us) + end + + assert_raise ArgumentError do + @subject.call(Date.civil(2008,7,2), Date.civil(2000,7,2), :ca) + end + end + + def test_cached_holidays_are_returned_if_present + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 31) + options = [:us, :informal] + + Holidays::Factory::Definition.cache_repository.expects(:find).with(start_date, end_date, options).returns({cached: 'data'}) + + assert_equal({cached: 'data'}, @subject.call(start_date, end_date, *options)) + end + + def test_options_are_parsed + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 31) + options = [:us] + + between_mock = mock() + Holidays::Factory::Finder.stubs(:between).returns(between_mock) + between_mock.expects(:call).with(start_date, end_date, [:us]) + + @subject.call(start_date, end_date, *options) + end + + def test_dates_driver_builder_is_called + start_date = Date.civil(2015, 1, 1) + end_date = Date.civil(2015, 1, 31) + options = [:us] + + between_mock = mock() + Holidays::Factory::Finder.stubs(:between).returns(between_mock) + between_mock.expects(:call).with(start_date, end_date, [:us]) + + @subject.call(start_date, end_date, *options) + end +end diff --git a/vendor/holidays/test/integration/test_multiple_regions.rb b/vendor/holidays/test/integration/test_multiple_regions.rb new file mode 100644 index 00000000..d94864eb --- /dev/null +++ b/vendor/holidays/test/integration/test_multiple_regions.rb @@ -0,0 +1,71 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' +require "#{Holidays::DEFINITIONS_PATH}/gb" +require "#{Holidays::DEFINITIONS_PATH}/ie" + +class MultipleRegionsTests < Test::Unit::TestCase + # Simulate load of new environment where the repositories begin empty + def reset_cache + Holidays::Factory::Definition.instance_variable_set(:@regions_repo, nil) + Holidays::Factory::Definition.instance_variable_set(:@holidays_repo, nil) + end + + def test_defining_holidays + h = Holidays.on(Date.new(2008, 12, 26), :ie) + assert_equal 'St. Stephen\'s Day', h[0][:name] + + h = Holidays.on(Date.new(2008, 5, 9), :gb_) + assert_equal 'Liberation Day', (h[0] || {})[:name] + + h = Holidays.on(Date.new(2008, 5, 9), :je) + assert_equal 'Liberation Day', h[0][:name] + + h = Holidays.on(Date.new(2008, 5, 9), :gb) + assert h.empty? + end + + def test_north_american_parent_region_lookup + assert_equal :ca, Holidays::PARENT_REGION_LOOKUP[:ca] + assert_equal :ca, Holidays::PARENT_REGION_LOOKUP[:ca_qc] + assert_equal :mx, Holidays::PARENT_REGION_LOOKUP[:mx] + assert_equal :mx, Holidays::PARENT_REGION_LOOKUP[:mx_pue] + assert_equal :us, Holidays::PARENT_REGION_LOOKUP[:us] + assert_equal :us, Holidays::PARENT_REGION_LOOKUP[:us_fl] + end + + def test_north_american_subregion_caching + { ca: :ca_qc, mx: :mx_pue, us: :us_fl }.each do |region, subregion| + module_name = region.upcase + + reset_cache + Holidays.on(Date.new(2018, 1, 1), region) # Test check on regional holidays + assert_equal [region], Holidays::Factory::Definition.regions_repository.all_loaded, "Only Holidays::#{module_name} should be loaded" + holiday_regions = Holidays::Factory::Definition.holidays_by_month_repository.all.values.flatten.map { |h| h[:regions] }.uniq.flatten + assert_includes holiday_regions, region, 'Region holidays should be loaded' + assert_includes holiday_regions, subregion, 'Subregion holidays should be loaded' + + reset_cache + Holidays.on(Date.new(2018, 1, 1), subregion) # Test check on subregional holidays + assert_equal [region], Holidays::Factory::Definition.regions_repository.all_loaded, "Only Holidays::#{module_name} should be loaded" + holiday_regions = Holidays::Factory::Definition.holidays_by_month_repository.all.values.flatten.map { |h| h[:regions] }.uniq.flatten + assert_includes holiday_regions, region, 'Region holidays should be loaded' + assert_includes holiday_regions, subregion, 'Subregion holidays should be loaded' + end + end + + def test_north_american_cross_region_caching + reset_cache + Holidays.on(Date.new(2018, 1, 1), :us) + assert_equal [:us], Holidays::Factory::Definition.regions_repository.all_loaded, 'Only Holidays::US should be loaded' + holiday_regions = Holidays::Factory::Definition.holidays_by_month_repository.all.values.flatten.map { |h| h[:regions] }.uniq.flatten + assert_includes holiday_regions, :us, 'Region holidays should be loaded' + assert_includes holiday_regions, :us_fl, 'Subregion holidays should be loaded' + + Holidays.on(Date.new(2018, 1, 1), :ca) + assert_equal [:us, :ca], Holidays::Factory::Definition.regions_repository.all_loaded, 'Only Holidays::US and Holidays::CA should be loaded' + holiday_regions = Holidays::Factory::Definition.holidays_by_month_repository.all.values.flatten.map { |h| h[:regions] }.uniq.flatten + assert_includes holiday_regions, :us, 'Region holidays should be loaded' + assert_includes holiday_regions, :ca, 'Region holidays should be loaded' + assert_includes holiday_regions, :us_fl, 'Subregion holidays should be loaded' + assert_includes holiday_regions, :ca_qc, 'Subregion holidays should be loaded' + end +end diff --git a/vendor/holidays/test/integration/test_multiple_regions_with_conflict.rb b/vendor/holidays/test/integration/test_multiple_regions_with_conflict.rb new file mode 100644 index 00000000..ef3b6797 --- /dev/null +++ b/vendor/holidays/test/integration/test_multiple_regions_with_conflict.rb @@ -0,0 +1,29 @@ +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# See https://github.com/holidays/holidays/issues/344 for more info on why +# these tests exist. +class MultipleRegionsWithConflictsTests < Test::Unit::TestCase + + def test_corpus_christi_returns_correctly_for_co_even_if_br_is_loaded_first + result = Holidays.on(Date.new(2014, 6, 19), :br) + assert_equal 1, result.count + assert_equal 'Corpus Christi', result.first[:name] + + result = Holidays.on(Date.new(2014, 6, 23), :co) + assert_equal 1, result.count + assert_equal 'Corpus Christi', result.first[:name] + end + + def test_custom_loaded_region_returns_correct_value_with_function_modifier_conflict_even_if_conflict_definition_is_loaded_first + Holidays.load_custom('test/data/test_multiple_regions_with_conflicts_region_1.yaml') + result = Holidays.on(Date.new(2019, 6, 20), :multiple_with_conflict_1) + assert_equal 1, result.count + assert_equal 'With Function Modifier', result.first[:name] + + Holidays.load_custom('test/data/test_multiple_regions_with_conflicts_region_2.yaml') + result = Holidays.on(Date.new(2019, 6, 24), :multiple_with_conflict_2) + assert_equal 1, result.count + assert_equal 'With Function Modifier', result.first[:name] + end + +end diff --git a/vendor/holidays/test/integration/test_nonstandard_regions.rb b/vendor/holidays/test/integration/test_nonstandard_regions.rb new file mode 100644 index 00000000..6659b362 --- /dev/null +++ b/vendor/holidays/test/integration/test_nonstandard_regions.rb @@ -0,0 +1,25 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +class NonstandardRegionsHolidaysTests < Test::Unit::TestCase + def test_ecbtarget_christmas_day + h = Holidays.on(Date.new(2018,12,25), :ecbtarget) + assert_equal 'Christmas Day', h[0][:name] + end + + def test_federalreserve_memorial_day + h = Holidays.on(Date.new(2018,5,28), :federalreserve) + assert_equal 'Memorial Day', h[0][:name] + + end + + def test_federalreservebanks_independence_day + h = Holidays.on(Date.new(2019,7,4), :federalreservebanks, :observed) + assert_equal 'Independence Day', h[0][:name] + end + + def test_unitednations_international_day_of_families + h = Holidays.on(Date.new(2021,5,15), :unitednations) + assert_equal 'International Day of Families', h[0][:name] + end +end diff --git a/vendor/holidays/test/test_helper.rb b/vendor/holidays/test/test_helper.rb new file mode 100644 index 00000000..0285a2cb --- /dev/null +++ b/vendor/holidays/test/test_helper.rb @@ -0,0 +1,37 @@ +require File.dirname(__FILE__) + '/coverage_report' + +$:.unshift(File.expand_path(File.dirname(__FILE__) + '../../lib/')) + +$KCODE = 'u' if RUBY_VERSION =~ /^1\.8/ + +require 'rubygems' +require 'test/unit' +require 'mocha/test_unit' +require 'date' +require 'holidays' +require 'holidays/core_extensions/date' +require 'holidays/core_extensions/time' + +# Loads core extension for use in various definition tests as necessary +class Date + include Holidays::CoreExtensions::Date +end + +class Time + include Holidays::CoreExtensions::Time +end + +module Holidays + # Test region used for generating a holiday on Date.today + module Test # :nodoc: + DEFINED_REGIONS = [:test] + + HOLIDAYS_BY_MONTH = { + Date.today.mon => [{:mday => Date.today.mday, :name => "Test Holiday", :regions => [:test]}] + } + + CUSTOM_METHODS = {} + end +end + +Holidays::Factory::Definition.merger.call(Holidays::Test::DEFINED_REGIONS, Holidays::Test::HOLIDAYS_BY_MONTH, Holidays::Test::CUSTOM_METHODS)