revised_holidays 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/ruby.yml +25 -0
- data/CHANGELOG.md +446 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/Makefile +45 -0
- data/README.md +337 -0
- data/Rakefile +109 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/definitions/.github/workflows/ruby.yml +25 -0
- data/definitions/.gitignore +5 -0
- data/definitions/CHANGELOG.md +352 -0
- data/definitions/Gemfile +6 -0
- data/definitions/LICENSE +21 -0
- data/definitions/METHODS.yml +26 -0
- data/definitions/Makefile +9 -0
- data/definitions/README.md +22 -0
- data/definitions/ar.yaml +268 -0
- data/definitions/at.yaml +116 -0
- data/definitions/au.yaml +907 -0
- data/definitions/be_fr.yaml +153 -0
- data/definitions/be_nl.yaml +153 -0
- data/definitions/bg.yaml +186 -0
- data/definitions/br.yaml +178 -0
- data/definitions/ca.yaml +969 -0
- data/definitions/ch.yaml +277 -0
- data/definitions/cl.yaml +294 -0
- data/definitions/co.yaml +437 -0
- data/definitions/cr.yaml +100 -0
- data/definitions/cz.yaml +137 -0
- data/definitions/de.yaml +401 -0
- data/definitions/dk.yaml +220 -0
- data/definitions/doc/CONTRIBUTING.md +44 -0
- data/definitions/doc/MAINTAINERS.md +39 -0
- data/definitions/doc/SYNTAX.md +435 -0
- data/definitions/doc/architecture/README.md +15 -0
- data/definitions/doc/architecture/adr-001.md +86 -0
- data/definitions/doc/architecture/adr-002.md +64 -0
- data/definitions/ecbtarget.yaml +74 -0
- data/definitions/ee.yaml +123 -0
- data/definitions/es.yaml +495 -0
- data/definitions/federalreserve.yaml +389 -0
- data/definitions/federalreservebanks.yaml +821 -0
- data/definitions/fedex.yaml +102 -0
- data/definitions/fi.yaml +234 -0
- data/definitions/fr.yaml +157 -0
- data/definitions/gb.yaml +565 -0
- data/definitions/ge.yaml +158 -0
- data/definitions/gr.yaml +158 -0
- data/definitions/hk.yaml +287 -0
- data/definitions/hr.yaml +171 -0
- data/definitions/hu.yaml +156 -0
- data/definitions/ie.yaml +172 -0
- data/definitions/index.yaml +80 -0
- data/definitions/is.yaml +247 -0
- data/definitions/it.yaml +246 -0
- data/definitions/jp.yaml +761 -0
- data/definitions/ke.yaml +107 -0
- data/definitions/kr.yaml +166 -0
- data/definitions/kz.yaml +128 -0
- data/definitions/li.yaml +154 -0
- data/definitions/lib/validation/custom_method_validator.rb +38 -0
- data/definitions/lib/validation/definition_validator.rb +35 -0
- data/definitions/lib/validation/error.rb +11 -0
- data/definitions/lib/validation/month_validator.rb +58 -0
- data/definitions/lib/validation/run.rb +66 -0
- data/definitions/lib/validation/test_validator.rb +83 -0
- data/definitions/lt.yaml +198 -0
- data/definitions/lu.yaml +123 -0
- data/definitions/lv.yaml +229 -0
- data/definitions/ma.yaml +96 -0
- data/definitions/mt_en.yaml +131 -0
- data/definitions/mt_mt.yaml +131 -0
- data/definitions/mx.yaml +160 -0
- data/definitions/my.yaml +79 -0
- data/definitions/nerc.yaml +94 -0
- data/definitions/ng.yaml +97 -0
- data/definitions/nl.yaml +127 -0
- data/definitions/no.yaml +169 -0
- data/definitions/northamericainformal.yaml +105 -0
- data/definitions/nyse.yaml +137 -0
- data/definitions/nz.yaml +346 -0
- data/definitions/pe.yaml +208 -0
- data/definitions/ph.yaml +130 -0
- data/definitions/pl.yaml +796 -0
- data/definitions/pt.yaml +187 -0
- data/definitions/ro.yaml +240 -0
- data/definitions/rs_cyrl.yaml +129 -0
- data/definitions/rs_la.yaml +129 -0
- data/definitions/ru.yaml +108 -0
- data/definitions/se.yaml +238 -0
- data/definitions/sg.yaml +89 -0
- data/definitions/si.yaml +162 -0
- data/definitions/sk.yaml +154 -0
- data/definitions/spec/coverage_report.rb +7 -0
- data/definitions/spec/data/invalid/months/malformed/bad.yaml +15 -0
- data/definitions/spec/data/invalid/months/missing/no_months.yaml +9 -0
- data/definitions/spec/data/valid/simple.yaml +15 -0
- data/definitions/spec/spec_helper.rb +7 -0
- data/definitions/spec/validation/custom_method_validator_spec.rb +60 -0
- data/definitions/spec/validation/definition_validator_spec.rb +43 -0
- data/definitions/spec/validation/month_validator_spec.rb +175 -0
- data/definitions/spec/validation/test_validator_spec.rb +169 -0
- data/definitions/th.yaml +111 -0
- data/definitions/tn.yaml +83 -0
- data/definitions/tr.yaml +174 -0
- data/definitions/ua.yaml +161 -0
- data/definitions/unitednations.yaml +189 -0
- data/definitions/ups.yaml +102 -0
- data/definitions/us.yaml +965 -0
- data/definitions/ve.yaml +118 -0
- data/definitions/vi.yaml +54 -0
- data/definitions/za.yaml +139 -0
- data/doc/CONTRIBUTING.md +72 -0
- data/doc/MAINTAINERS.md +81 -0
- data/doc/REFERENCES +19 -0
- data/lib/generated_definitions/MANIFEST +83 -0
- data/lib/generated_definitions/REGIONS.rb +6 -0
- data/lib/generated_definitions/ar.rb +60 -0
- data/lib/generated_definitions/at.rb +37 -0
- data/lib/generated_definitions/au.rb +177 -0
- data/lib/generated_definitions/be.rb +42 -0
- data/lib/generated_definitions/be_fr.rb +36 -0
- data/lib/generated_definitions/be_nl.rb +36 -0
- data/lib/generated_definitions/bg.rb +53 -0
- data/lib/generated_definitions/br.rb +37 -0
- data/lib/generated_definitions/ca.rb +88 -0
- data/lib/generated_definitions/ch.rb +95 -0
- data/lib/generated_definitions/cl.rb +71 -0
- data/lib/generated_definitions/co.rb +121 -0
- data/lib/generated_definitions/cr.rb +35 -0
- data/lib/generated_definitions/cz.rb +37 -0
- data/lib/generated_definitions/de.rb +65 -0
- data/lib/generated_definitions/dk.rb +48 -0
- data/lib/generated_definitions/ecbtarget.rb +30 -0
- data/lib/generated_definitions/ee.rb +36 -0
- data/lib/generated_definitions/el.rb +38 -0
- data/lib/generated_definitions/es.rb +56 -0
- data/lib/generated_definitions/europe.rb +638 -0
- data/lib/generated_definitions/federalreserve.rb +35 -0
- data/lib/generated_definitions/federalreservebanks.rb +35 -0
- data/lib/generated_definitions/fedex.rb +36 -0
- data/lib/generated_definitions/fi.rb +61 -0
- data/lib/generated_definitions/fr.rb +39 -0
- data/lib/generated_definitions/gb.rb +51 -0
- data/lib/generated_definitions/ge.rb +41 -0
- data/lib/generated_definitions/gr.rb +38 -0
- data/lib/generated_definitions/hk.rb +106 -0
- data/lib/generated_definitions/hr.rb +40 -0
- data/lib/generated_definitions/hu.rb +35 -0
- data/lib/generated_definitions/ie.rb +33 -0
- data/lib/generated_definitions/is.rb +60 -0
- data/lib/generated_definitions/it.rb +45 -0
- data/lib/generated_definitions/jp.rb +166 -0
- data/lib/generated_definitions/ke.rb +34 -0
- data/lib/generated_definitions/kr.rb +40 -0
- data/lib/generated_definitions/kz.rb +38 -0
- data/lib/generated_definitions/li.rb +44 -0
- data/lib/generated_definitions/lt.rb +38 -0
- data/lib/generated_definitions/lu.rb +35 -0
- data/lib/generated_definitions/lv.rb +56 -0
- data/lib/generated_definitions/ma.rb +33 -0
- data/lib/generated_definitions/mt_en.rb +38 -0
- data/lib/generated_definitions/mt_mt.rb +38 -0
- data/lib/generated_definitions/mx.rb +54 -0
- data/lib/generated_definitions/my.rb +30 -0
- data/lib/generated_definitions/nerc.rb +30 -0
- data/lib/generated_definitions/ng.rb +33 -0
- data/lib/generated_definitions/nl.rb +37 -0
- data/lib/generated_definitions/no.rb +40 -0
- data/lib/generated_definitions/northamerica.rb +229 -0
- data/lib/generated_definitions/nyse.rb +34 -0
- data/lib/generated_definitions/nz.rb +105 -0
- data/lib/generated_definitions/pe.rb +43 -0
- data/lib/generated_definitions/ph.rb +50 -0
- data/lib/generated_definitions/pl.rb +73 -0
- data/lib/generated_definitions/pt.rb +40 -0
- data/lib/generated_definitions/ro.rb +39 -0
- data/lib/generated_definitions/rs_cyrl.rb +39 -0
- data/lib/generated_definitions/rs_la.rb +39 -0
- data/lib/generated_definitions/ru.rb +37 -0
- data/lib/generated_definitions/scandinavia.rb +166 -0
- data/lib/generated_definitions/se.rb +53 -0
- data/lib/generated_definitions/sg.rb +31 -0
- data/lib/generated_definitions/si.rb +39 -0
- data/lib/generated_definitions/sk.rb +39 -0
- data/lib/generated_definitions/southamerica.rb +248 -0
- data/lib/generated_definitions/th.rb +36 -0
- data/lib/generated_definitions/tn.rb +32 -0
- data/lib/generated_definitions/tr.rb +64 -0
- data/lib/generated_definitions/ua.rb +37 -0
- data/lib/generated_definitions/unitednations.rb +81 -0
- data/lib/generated_definitions/ups.rb +36 -0
- data/lib/generated_definitions/us.rb +153 -0
- data/lib/generated_definitions/ve.rb +36 -0
- data/lib/generated_definitions/vi.rb +29 -0
- data/lib/generated_definitions/za.rb +36 -0
- data/lib/holidays/core_extensions/date.rb +57 -0
- data/lib/holidays/core_extensions/time.rb +23 -0
- data/lib/holidays/date_calculator/day_of_month.rb +68 -0
- data/lib/holidays/date_calculator/easter.rb +91 -0
- data/lib/holidays/date_calculator/lunar_date.rb +371 -0
- data/lib/holidays/date_calculator/weekend_modifier.rb +80 -0
- data/lib/holidays/definition/context/function_processor.rb +91 -0
- data/lib/holidays/definition/context/generator.rb +209 -0
- data/lib/holidays/definition/context/load.rb +29 -0
- data/lib/holidays/definition/context/merger.rb +22 -0
- data/lib/holidays/definition/decorator/custom_method_proc.rb +28 -0
- data/lib/holidays/definition/decorator/custom_method_source.rb +30 -0
- data/lib/holidays/definition/decorator/test.rb +37 -0
- data/lib/holidays/definition/entity/custom_method.rb +11 -0
- data/lib/holidays/definition/entity/test.rb +11 -0
- data/lib/holidays/definition/generator/module.rb +54 -0
- data/lib/holidays/definition/generator/regions.rb +55 -0
- data/lib/holidays/definition/generator/test.rb +51 -0
- data/lib/holidays/definition/parser/custom_method.rb +67 -0
- data/lib/holidays/definition/parser/test.rb +86 -0
- data/lib/holidays/definition/repository/cache.rb +47 -0
- data/lib/holidays/definition/repository/custom_methods.rb +27 -0
- data/lib/holidays/definition/repository/holidays_by_month.rb +57 -0
- data/lib/holidays/definition/repository/proc_result_cache.rb +51 -0
- data/lib/holidays/definition/repository/regions.rb +46 -0
- data/lib/holidays/definition/validator/custom_method.rb +31 -0
- data/lib/holidays/definition/validator/region.rb +36 -0
- data/lib/holidays/definition/validator/test.rb +71 -0
- data/lib/holidays/errors.rb +11 -0
- data/lib/holidays/factory/date_calculator.rb +42 -0
- data/lib/holidays/factory/definition.rb +143 -0
- data/lib/holidays/factory/finder.rb +70 -0
- data/lib/holidays/finder/context/between.rb +45 -0
- data/lib/holidays/finder/context/dates_driver_builder.rb +64 -0
- data/lib/holidays/finder/context/next_holiday.rb +57 -0
- data/lib/holidays/finder/context/parse_options.rb +104 -0
- data/lib/holidays/finder/context/search.rb +111 -0
- data/lib/holidays/finder/context/year_holiday.rb +57 -0
- data/lib/holidays/finder/rules/in_region.rb +31 -0
- data/lib/holidays/finder/rules/year_range.rb +58 -0
- data/lib/holidays/load_all_definitions.rb +56 -0
- data/lib/holidays/version.rb +3 -0
- data/lib/holidays.rb +130 -0
- data/lib/revised_holidays.rb +1 -0
- data/revised_holidays.gemspec +31 -0
- data/test/coverage_report.rb +26 -0
- data/test/data/test_custom_govt_holiday_defs.yaml +5 -0
- data/test/data/test_custom_informal_holidays_defs.yaml +11 -0
- data/test/data/test_custom_year_range_holiday_defs.yaml +31 -0
- data/test/data/test_invalid_region.rb +15 -0
- data/test/data/test_multiple_custom_holiday_defs.yaml +12 -0
- data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
- data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
- data/test/data/test_region.rb +15 -0
- data/test/data/test_single_custom_holiday_defs.yaml +12 -0
- data/test/data/test_single_custom_holiday_with_custom_procs.yaml +28 -0
- data/test/defs/test_defs_ar.rb +69 -0
- data/test/defs/test_defs_at.rb +31 -0
- data/test/defs/test_defs_au.rb +233 -0
- data/test/defs/test_defs_be_fr.rb +45 -0
- data/test/defs/test_defs_be_nl.rb +45 -0
- data/test/defs/test_defs_bg.rb +41 -0
- data/test/defs/test_defs_br.rb +49 -0
- data/test/defs/test_defs_ca.rb +289 -0
- data/test/defs/test_defs_ch.rb +51 -0
- data/test/defs/test_defs_cl.rb +69 -0
- data/test/defs/test_defs_co.rb +113 -0
- data/test/defs/test_defs_cr.rb +29 -0
- data/test/defs/test_defs_cz.rb +37 -0
- data/test/defs/test_defs_de.rb +89 -0
- data/test/defs/test_defs_dk.rb +47 -0
- data/test/defs/test_defs_ecbtarget.rb +27 -0
- data/test/defs/test_defs_ee.rb +41 -0
- data/test/defs/test_defs_es.rb +137 -0
- data/test/defs/test_defs_europe.rb +1522 -0
- data/test/defs/test_defs_fed_ex.rb +24 -0
- data/test/defs/test_defs_federalreserve.rb +119 -0
- data/test/defs/test_defs_federalreservebanks.rb +251 -0
- data/test/defs/test_defs_fedex.rb +31 -0
- data/test/defs/test_defs_fi.rb +59 -0
- data/test/defs/test_defs_fr.rb +43 -0
- data/test/defs/test_defs_gb.rb +159 -0
- data/test/defs/test_defs_ge.rb +53 -0
- data/test/defs/test_defs_gr.rb +41 -0
- data/test/defs/test_defs_hk.rb +59 -0
- data/test/defs/test_defs_hr.rb +45 -0
- data/test/defs/test_defs_hu.rb +47 -0
- data/test/defs/test_defs_ie.rb +53 -0
- data/test/defs/test_defs_is.rb +51 -0
- data/test/defs/test_defs_it.rb +55 -0
- data/test/defs/test_defs_jp.rb +159 -0
- data/test/defs/test_defs_ke.rb +31 -0
- data/test/defs/test_defs_kr.rb +37 -0
- data/test/defs/test_defs_kz.rb +39 -0
- data/test/defs/test_defs_li.rb +35 -0
- data/test/defs/test_defs_lt.rb +65 -0
- data/test/defs/test_defs_lu.rb +35 -0
- data/test/defs/test_defs_lv.rb +98 -0
- data/test/defs/test_defs_ma.rb +29 -0
- data/test/defs/test_defs_mt_en.rb +41 -0
- data/test/defs/test_defs_mt_mt.rb +41 -0
- data/test/defs/test_defs_mx.rb +49 -0
- data/test/defs/test_defs_my.rb +23 -0
- data/test/defs/test_defs_nerc.rb +29 -0
- data/test/defs/test_defs_ng.rb +29 -0
- data/test/defs/test_defs_nl.rb +33 -0
- data/test/defs/test_defs_no.rb +43 -0
- data/test/defs/test_defs_northamerica.rb +667 -0
- data/test/defs/test_defs_nyse.rb +46 -0
- data/test/defs/test_defs_nz.rb +67 -0
- data/test/defs/test_defs_pe.rb +47 -0
- data/test/defs/test_defs_ph.rb +29 -0
- data/test/defs/test_defs_pl.rb +229 -0
- data/test/defs/test_defs_pt.rb +47 -0
- data/test/defs/test_defs_ro.rb +65 -0
- data/test/defs/test_defs_rs_cyrl.rb +46 -0
- data/test/defs/test_defs_rs_la.rb +46 -0
- data/test/defs/test_defs_ru.rb +34 -0
- data/test/defs/test_defs_scandinavia.rb +215 -0
- data/test/defs/test_defs_se.rb +59 -0
- data/test/defs/test_defs_sg.rb +25 -0
- data/test/defs/test_defs_si.rb +105 -0
- data/test/defs/test_defs_sk.rb +41 -0
- data/test/defs/test_defs_southamerica.rb +327 -0
- data/test/defs/test_defs_th.rb +33 -0
- data/test/defs/test_defs_tn.rb +27 -0
- data/test/defs/test_defs_tr.rb +60 -0
- data/test/defs/test_defs_ua.rb +41 -0
- data/test/defs/test_defs_unitednations.rb +11 -0
- data/test/defs/test_defs_ups.rb +31 -0
- data/test/defs/test_defs_us.rb +387 -0
- data/test/defs/test_defs_ve.rb +35 -0
- data/test/defs/test_defs_vi.rb +22 -0
- data/test/defs/test_defs_za.rb +35 -0
- data/test/holidays/core_extensions/test_date.rb +122 -0
- data/test/holidays/core_extensions/test_date_time.rb +60 -0
- data/test/holidays/date_calculator/test_day_of_month.rb +27 -0
- data/test/holidays/date_calculator/test_easter_gregorian.rb +30 -0
- data/test/holidays/date_calculator/test_easter_julian.rb +36 -0
- data/test/holidays/date_calculator/test_lunar_date.rb +89 -0
- data/test/holidays/date_calculator/test_weekend_modifier.rb +54 -0
- data/test/holidays/definition/context/test_function_processor.rb +199 -0
- data/test/holidays/definition/context/test_generator.rb +226 -0
- data/test/holidays/definition/context/test_load.rb +37 -0
- data/test/holidays/definition/context/test_merger.rb +25 -0
- data/test/holidays/definition/decorator/test_custom_method_proc.rb +113 -0
- data/test/holidays/definition/decorator/test_custom_method_source.rb +96 -0
- data/test/holidays/definition/decorator/test_test.rb +123 -0
- data/test/holidays/definition/generator/test_module.rb +268 -0
- data/test/holidays/definition/generator/test_regions.rb +97 -0
- data/test/holidays/definition/generator/test_test.rb +113 -0
- data/test/holidays/definition/parser/test_custom_method.rb +79 -0
- data/test/holidays/definition/parser/test_test.rb +142 -0
- data/test/holidays/definition/repository/test_cache.rb +123 -0
- data/test/holidays/definition/repository/test_custom_methods.rb +43 -0
- data/test/holidays/definition/repository/test_holidays_by_month.rb +275 -0
- data/test/holidays/definition/repository/test_proc_result_cache.rb +91 -0
- data/test/holidays/definition/repository/test_regions.rb +104 -0
- data/test/holidays/definition/validator/test_custom_method.rb +94 -0
- data/test/holidays/definition/validator/test_region.rb +54 -0
- data/test/holidays/definition/validator/test_test.rb +60 -0
- data/test/holidays/finder/context/test_between.rb +172 -0
- data/test/holidays/finder/context/test_dates_driver_builder.rb +91 -0
- data/test/holidays/finder/context/test_next_holiday.rb +156 -0
- data/test/holidays/finder/context/test_parse_options.rb +141 -0
- data/test/holidays/finder/context/test_search.rb +232 -0
- data/test/holidays/finder/context/test_year_holiday.rb +202 -0
- data/test/holidays/finder/rules/test_in_region.rb +42 -0
- data/test/holidays/finder/rules/test_year_range.rb +166 -0
- data/test/integration/README.md +9 -0
- data/test/integration/test_all_regions.rb +49 -0
- data/test/integration/test_any_holidays_during_work_week.rb +90 -0
- data/test/integration/test_available_regions.rb +23 -0
- data/test/integration/test_custom_holidays.rb +41 -0
- data/test/integration/test_custom_informal_holidays.rb +15 -0
- data/test/integration/test_custom_year_range_holidays.rb +35 -0
- data/test/integration/test_holidays.rb +243 -0
- data/test/integration/test_holidays_between.rb +87 -0
- data/test/integration/test_multiple_regions.rb +71 -0
- data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
- data/test/integration/test_nonstandard_regions.rb +25 -0
- data/test/test_helper.rb +37 -0
- metadata +649 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
## encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'yaml'
|
|
4
|
+
|
|
5
|
+
require_relative 'error'
|
|
6
|
+
require_relative 'definition_validator'
|
|
7
|
+
require_relative 'custom_method_validator'
|
|
8
|
+
require_relative 'month_validator'
|
|
9
|
+
require_relative 'test_validator'
|
|
10
|
+
|
|
11
|
+
definitions_path = '/../../'
|
|
12
|
+
|
|
13
|
+
module Definitions
|
|
14
|
+
class Validate
|
|
15
|
+
def initialize(path, definition_validator)
|
|
16
|
+
@path = path
|
|
17
|
+
@definition_validator = definition_validator
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def call
|
|
21
|
+
path = File.expand_path(File.dirname(__FILE__)) + @path
|
|
22
|
+
|
|
23
|
+
definition_count = 0
|
|
24
|
+
|
|
25
|
+
Dir.foreach(path) do |item|
|
|
26
|
+
next if item == '.' or item == '..'
|
|
27
|
+
|
|
28
|
+
target = path+item
|
|
29
|
+
next if File.extname(target) != '.yaml'
|
|
30
|
+
next if item == 'index.yaml'
|
|
31
|
+
|
|
32
|
+
definition_count += 1
|
|
33
|
+
|
|
34
|
+
begin
|
|
35
|
+
definition_file = YAML.load(File.open(target))
|
|
36
|
+
validate!(definition_file)
|
|
37
|
+
rescue Psych::SyntaxError => e
|
|
38
|
+
puts "Failed on file '#{target}', YAML parse error: #{e}"
|
|
39
|
+
puts "This means your YAML is somehow invalid. Test your file on something like yamllint.com to find the issue."
|
|
40
|
+
exit
|
|
41
|
+
rescue => e
|
|
42
|
+
puts "Failed on file '#{target}', error: #{e}"
|
|
43
|
+
exit
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
puts "Success!"
|
|
48
|
+
puts "Definition count: #{definition_count}"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
def validate!(definition)
|
|
54
|
+
raise StandardError unless @definition_validator.call(definition)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
Definitions::Validate.new(
|
|
60
|
+
definitions_path,
|
|
61
|
+
Definitions::Validation::Definition.new(
|
|
62
|
+
Definitions::Validation::CustomMethod.new,
|
|
63
|
+
Definitions::Validation::Month.new,
|
|
64
|
+
Definitions::Validation::Test.new,
|
|
65
|
+
),
|
|
66
|
+
).call
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'date'
|
|
2
|
+
require_relative 'error'
|
|
3
|
+
|
|
4
|
+
module Definitions
|
|
5
|
+
module Validation
|
|
6
|
+
class Test
|
|
7
|
+
def call(tests)
|
|
8
|
+
err!("Tests cannot be nil") if tests.nil?
|
|
9
|
+
err!("Tests cannot be empty. They are too important to leave out!") if tests.empty?
|
|
10
|
+
err!("Tests must be an array") unless tests.is_a?(Array)
|
|
11
|
+
|
|
12
|
+
tests.each do |t|
|
|
13
|
+
validate!(t)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def err!(msg)
|
|
22
|
+
raise Errors::InvalidTest.new(msg)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def validate!(t)
|
|
26
|
+
validate_given!(t["given"])
|
|
27
|
+
validate_expect!(t["expect"])
|
|
28
|
+
rescue Errors::InvalidTest => e
|
|
29
|
+
raise Errors::InvalidTest.new("#{e.message} - #{t.inspect}")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def validate_given!(g)
|
|
33
|
+
err!("Test must contain given key") if g.nil?
|
|
34
|
+
|
|
35
|
+
validate_regions!(g["regions"])
|
|
36
|
+
validate_options!(g["options"])
|
|
37
|
+
validate_date_values!(g)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def validate_regions!(regions)
|
|
41
|
+
err!("Test contains invalid regions (must be an array of strings)") unless regions.is_a?(Array)
|
|
42
|
+
err!("Test must contain at least one region") if regions.nil? || regions.empty?
|
|
43
|
+
|
|
44
|
+
regions.each do |r|
|
|
45
|
+
err!("Test cannot contain empty regions") if r.empty?
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def validate_options!(opts)
|
|
50
|
+
if opts
|
|
51
|
+
opts = [ opts ] unless opts.is_a?(Array)
|
|
52
|
+
opts.each do |opt|
|
|
53
|
+
err!("Test contains invalid option(s)") unless opt == "informal" || opt == "observed"
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def validate_date_values!(given)
|
|
59
|
+
err!("Test must contain some date") unless given.has_key?("date")
|
|
60
|
+
|
|
61
|
+
given["date"] = [ given["date"] ] unless given["date"].is_a?(Array)
|
|
62
|
+
|
|
63
|
+
given["date"].each do |d|
|
|
64
|
+
parse_date!(d)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def parse_date!(d)
|
|
69
|
+
DateTime.parse(d)
|
|
70
|
+
rescue TypeError, ArgumentError, NoMethodError
|
|
71
|
+
err!("Test must contain valid date, date value was: '#{d}")
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def validate_expect!(e)
|
|
75
|
+
err!("Test must contain expect key") if e.nil?
|
|
76
|
+
|
|
77
|
+
if e.has_key?("holiday") && ![true, false].include?(e["holiday"])
|
|
78
|
+
err!("Test contains invalid holiday value (must be true/false)")
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
data/definitions/lt.yaml
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# Lithuanian holiday definitions for the Ruby Holiday gem.
|
|
2
|
+
#
|
|
3
|
+
# Updated: 2014-10-02
|
|
4
|
+
# Sources:
|
|
5
|
+
# - http://en.wikipedia.org/wiki/Public_holidays_in_Lithuania
|
|
6
|
+
# - http://day.lt/sventes/nedarbo
|
|
7
|
+
---
|
|
8
|
+
months:
|
|
9
|
+
0:
|
|
10
|
+
- name: Šv. Velykos
|
|
11
|
+
regions: [lt]
|
|
12
|
+
function: easter(year)
|
|
13
|
+
- name: Antroji Velykų diena
|
|
14
|
+
regions: [lt]
|
|
15
|
+
function: easter(year)
|
|
16
|
+
function_modifier: 1
|
|
17
|
+
1:
|
|
18
|
+
- name: Naujieji metai
|
|
19
|
+
regions: [lt]
|
|
20
|
+
mday: 1
|
|
21
|
+
2:
|
|
22
|
+
- name: Valstybės atkūrimo diena
|
|
23
|
+
regions: [lt]
|
|
24
|
+
mday: 16
|
|
25
|
+
3:
|
|
26
|
+
- name: Nepriklausomybės atkūrimo diena
|
|
27
|
+
regions: [lt]
|
|
28
|
+
mday: 11
|
|
29
|
+
5:
|
|
30
|
+
- name: Darbininkų diena
|
|
31
|
+
regions: [lt]
|
|
32
|
+
mday: 1
|
|
33
|
+
6:
|
|
34
|
+
- name: Joninės
|
|
35
|
+
regions: [lt]
|
|
36
|
+
mday: 24
|
|
37
|
+
7:
|
|
38
|
+
- name: Valstybės diena
|
|
39
|
+
regions: [lt]
|
|
40
|
+
mday: 6
|
|
41
|
+
8:
|
|
42
|
+
- name: Žolinė
|
|
43
|
+
regions: [lt]
|
|
44
|
+
mday: 15
|
|
45
|
+
11:
|
|
46
|
+
- name: Visų šventųjų diena
|
|
47
|
+
regions: [lt]
|
|
48
|
+
mday: 1
|
|
49
|
+
- name: Mirusiųjų atminimo (Vėlinių) diena
|
|
50
|
+
regions: [lt]
|
|
51
|
+
mday: 2
|
|
52
|
+
12:
|
|
53
|
+
- name: Šv. Kūčios
|
|
54
|
+
regions: [lt]
|
|
55
|
+
mday: 24
|
|
56
|
+
- name: Šv. Kalėdos
|
|
57
|
+
regions: [lt]
|
|
58
|
+
mday: 25
|
|
59
|
+
- name: Antroji Kalėdų diena
|
|
60
|
+
regions: [lt]
|
|
61
|
+
mday: 26
|
|
62
|
+
|
|
63
|
+
tests:
|
|
64
|
+
- given:
|
|
65
|
+
date: '2008-01-01'
|
|
66
|
+
regions: ["lt"]
|
|
67
|
+
expect:
|
|
68
|
+
name: "Naujieji metai"
|
|
69
|
+
- given:
|
|
70
|
+
date: '2008-02-16'
|
|
71
|
+
regions: ["lt"]
|
|
72
|
+
expect:
|
|
73
|
+
name: "Valstybės atkūrimo diena"
|
|
74
|
+
- given:
|
|
75
|
+
date: '2008-03-11'
|
|
76
|
+
regions: ["lt"]
|
|
77
|
+
expect:
|
|
78
|
+
name: "Nepriklausomybės atkūrimo diena"
|
|
79
|
+
- given:
|
|
80
|
+
date: '2008-03-23'
|
|
81
|
+
regions: ["lt"]
|
|
82
|
+
expect:
|
|
83
|
+
name: "Šv. Velykos"
|
|
84
|
+
- given:
|
|
85
|
+
date: '2008-03-24'
|
|
86
|
+
regions: ["lt"]
|
|
87
|
+
expect:
|
|
88
|
+
name: "Antroji Velykų diena"
|
|
89
|
+
- given:
|
|
90
|
+
date: '2008-05-01'
|
|
91
|
+
regions: ["lt"]
|
|
92
|
+
expect:
|
|
93
|
+
name: "Darbininkų diena"
|
|
94
|
+
- given:
|
|
95
|
+
date: '2008-06-24'
|
|
96
|
+
regions: ["lt"]
|
|
97
|
+
expect:
|
|
98
|
+
name: "Joninės"
|
|
99
|
+
- given:
|
|
100
|
+
date: '2008-07-06'
|
|
101
|
+
regions: ["lt"]
|
|
102
|
+
expect:
|
|
103
|
+
name: "Valstybės diena"
|
|
104
|
+
- given:
|
|
105
|
+
date: '2008-08-15'
|
|
106
|
+
regions: ["lt"]
|
|
107
|
+
expect:
|
|
108
|
+
name: "Žolinė"
|
|
109
|
+
- given:
|
|
110
|
+
date: '2008-11-01'
|
|
111
|
+
regions: ["lt"]
|
|
112
|
+
expect:
|
|
113
|
+
name: "Visų šventųjų diena"
|
|
114
|
+
- given:
|
|
115
|
+
date: '2008-12-24'
|
|
116
|
+
regions: ["lt"]
|
|
117
|
+
expect:
|
|
118
|
+
name: "Šv. Kūčios"
|
|
119
|
+
- given:
|
|
120
|
+
date: '2008-12-25'
|
|
121
|
+
regions: ["lt"]
|
|
122
|
+
expect:
|
|
123
|
+
name: "Šv. Kalėdos"
|
|
124
|
+
- given:
|
|
125
|
+
date: '2008-12-26'
|
|
126
|
+
regions: ["lt"]
|
|
127
|
+
expect:
|
|
128
|
+
name: "Antroji Kalėdų diena"
|
|
129
|
+
- given:
|
|
130
|
+
date: '2012-01-01'
|
|
131
|
+
regions: ["lt"]
|
|
132
|
+
expect:
|
|
133
|
+
name: "Naujieji metai"
|
|
134
|
+
- given:
|
|
135
|
+
date: '2012-02-16'
|
|
136
|
+
regions: ["lt"]
|
|
137
|
+
expect:
|
|
138
|
+
name: "Valstybės atkūrimo diena"
|
|
139
|
+
- given:
|
|
140
|
+
date: '2012-03-11'
|
|
141
|
+
regions: ["lt"]
|
|
142
|
+
expect:
|
|
143
|
+
name: "Nepriklausomybės atkūrimo diena"
|
|
144
|
+
- given:
|
|
145
|
+
date: '2012-04-08'
|
|
146
|
+
regions: ["lt"]
|
|
147
|
+
expect:
|
|
148
|
+
name: "Šv. Velykos"
|
|
149
|
+
- given:
|
|
150
|
+
date: '2012-04-09'
|
|
151
|
+
regions: ["lt"]
|
|
152
|
+
expect:
|
|
153
|
+
name: "Antroji Velykų diena"
|
|
154
|
+
- given:
|
|
155
|
+
date: '2012-05-01'
|
|
156
|
+
regions: ["lt"]
|
|
157
|
+
expect:
|
|
158
|
+
name: "Darbininkų diena"
|
|
159
|
+
- given:
|
|
160
|
+
date: '2012-06-24'
|
|
161
|
+
regions: ["lt"]
|
|
162
|
+
expect:
|
|
163
|
+
name: "Joninės"
|
|
164
|
+
- given:
|
|
165
|
+
date: '2012-07-06'
|
|
166
|
+
regions: ["lt"]
|
|
167
|
+
expect:
|
|
168
|
+
name: "Valstybės diena"
|
|
169
|
+
- given:
|
|
170
|
+
date: '2012-08-15'
|
|
171
|
+
regions: ["lt"]
|
|
172
|
+
expect:
|
|
173
|
+
name: "Žolinė"
|
|
174
|
+
- given:
|
|
175
|
+
date: '2012-11-01'
|
|
176
|
+
regions: ["lt"]
|
|
177
|
+
expect:
|
|
178
|
+
name: "Visų šventųjų diena"
|
|
179
|
+
- given:
|
|
180
|
+
date: '2012-12-24'
|
|
181
|
+
regions: ["lt"]
|
|
182
|
+
expect:
|
|
183
|
+
name: "Šv. Kūčios"
|
|
184
|
+
- given:
|
|
185
|
+
date: '2012-12-25'
|
|
186
|
+
regions: ["lt"]
|
|
187
|
+
expect:
|
|
188
|
+
name: "Šv. Kalėdos"
|
|
189
|
+
- given:
|
|
190
|
+
date: '2012-12-26'
|
|
191
|
+
regions: ["lt"]
|
|
192
|
+
expect:
|
|
193
|
+
name: "Antroji Kalėdų diena"
|
|
194
|
+
- given:
|
|
195
|
+
date: '2024-11-02'
|
|
196
|
+
regions: ["lt"]
|
|
197
|
+
expect:
|
|
198
|
+
name: "Mirusiųjų atminimo (Vėlinių) diena"
|
data/definitions/lu.yaml
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Luxembourg holiday definitions for the Ruby Holiday gem.
|
|
2
|
+
#
|
|
3
|
+
# Updated: 2020-01-21.
|
|
4
|
+
# Sources:
|
|
5
|
+
# - https://en.wikipedia.org/wiki/Public_holidays_in_Luxembourg
|
|
6
|
+
---
|
|
7
|
+
months:
|
|
8
|
+
0:
|
|
9
|
+
- name: Ouschterméindeg
|
|
10
|
+
regions: [lu]
|
|
11
|
+
function: easter(year)
|
|
12
|
+
function_modifier: 1
|
|
13
|
+
- name: Christi Himmelfaart
|
|
14
|
+
regions: [lu]
|
|
15
|
+
function: easter(year)
|
|
16
|
+
function_modifier: 39
|
|
17
|
+
- name: Péngschtméindeg
|
|
18
|
+
regions: [lu]
|
|
19
|
+
function: easter(year)
|
|
20
|
+
function_modifier: 49
|
|
21
|
+
1:
|
|
22
|
+
- name: Neijoerschdag
|
|
23
|
+
regions: [lu]
|
|
24
|
+
mday: 1
|
|
25
|
+
5:
|
|
26
|
+
- name: Dag vun der Aarbecht
|
|
27
|
+
regions: [lu]
|
|
28
|
+
mday: 1
|
|
29
|
+
- name: Europadag
|
|
30
|
+
regions: [lu]
|
|
31
|
+
mday: 9
|
|
32
|
+
year_ranges:
|
|
33
|
+
from: 2019
|
|
34
|
+
6:
|
|
35
|
+
- name: Nationalfeierdag
|
|
36
|
+
regions: [lu]
|
|
37
|
+
mday: 23
|
|
38
|
+
8:
|
|
39
|
+
- name: Léiffrawëschdag
|
|
40
|
+
regions: [lu]
|
|
41
|
+
mday: 15
|
|
42
|
+
11:
|
|
43
|
+
- name: Allerhellgen
|
|
44
|
+
regions: [lu]
|
|
45
|
+
mday: 1
|
|
46
|
+
12:
|
|
47
|
+
- name: Chrëschtdag
|
|
48
|
+
regions: [lu]
|
|
49
|
+
mday: 25
|
|
50
|
+
- name: Stiefesdag
|
|
51
|
+
regions: [lu]
|
|
52
|
+
mday: 26
|
|
53
|
+
|
|
54
|
+
tests:
|
|
55
|
+
- given:
|
|
56
|
+
date: '2008-01-01'
|
|
57
|
+
regions: ["lu"]
|
|
58
|
+
options: ["informal"]
|
|
59
|
+
expect:
|
|
60
|
+
name: "Neijoerschdag"
|
|
61
|
+
- given:
|
|
62
|
+
date: '2008-03-24'
|
|
63
|
+
regions: ["lu"]
|
|
64
|
+
options: ["informal"]
|
|
65
|
+
expect:
|
|
66
|
+
name: "Ouschterméindeg"
|
|
67
|
+
- given:
|
|
68
|
+
date: '2008-05-01'
|
|
69
|
+
regions: ["lu"]
|
|
70
|
+
options: ["informal"]
|
|
71
|
+
expect:
|
|
72
|
+
name: "Christi Himmelfaart"
|
|
73
|
+
- given:
|
|
74
|
+
date: '2008-06-23'
|
|
75
|
+
regions: ["lu"]
|
|
76
|
+
options: ["informal"]
|
|
77
|
+
expect:
|
|
78
|
+
name: "Nationalfeierdag"
|
|
79
|
+
- given:
|
|
80
|
+
date: '2008-08-15'
|
|
81
|
+
regions: ["lu"]
|
|
82
|
+
options: ["informal"]
|
|
83
|
+
expect:
|
|
84
|
+
name: "Léiffrawëschdag"
|
|
85
|
+
- given:
|
|
86
|
+
date: '2008-11-01'
|
|
87
|
+
regions: ["lu"]
|
|
88
|
+
options: ["informal"]
|
|
89
|
+
expect:
|
|
90
|
+
name: "Allerhellgen"
|
|
91
|
+
- given:
|
|
92
|
+
date: '2008-12-25'
|
|
93
|
+
regions: ["lu"]
|
|
94
|
+
options: ["informal"]
|
|
95
|
+
expect:
|
|
96
|
+
name: "Chrëschtdag"
|
|
97
|
+
- given:
|
|
98
|
+
date: '2008-12-26'
|
|
99
|
+
regions: ["lu"]
|
|
100
|
+
options: ["informal"]
|
|
101
|
+
expect:
|
|
102
|
+
name: "Stiefesdag"
|
|
103
|
+
- given:
|
|
104
|
+
date: '2008-05-11'
|
|
105
|
+
regions: ["lu"]
|
|
106
|
+
options: ["informal"]
|
|
107
|
+
expect:
|
|
108
|
+
name: "Péngschtméindeg"
|
|
109
|
+
- given:
|
|
110
|
+
date: '2019-05-01'
|
|
111
|
+
regions: ["lu"]
|
|
112
|
+
expect:
|
|
113
|
+
name: "Dag vun der Aarbecht"
|
|
114
|
+
- given:
|
|
115
|
+
date: '2019-05-09'
|
|
116
|
+
regions: ["lu"]
|
|
117
|
+
expect:
|
|
118
|
+
name: "Europadag"
|
|
119
|
+
- given:
|
|
120
|
+
date: '2018-05-09'
|
|
121
|
+
regions: ["lu"]
|
|
122
|
+
expect:
|
|
123
|
+
holiday: false
|
data/definitions/lv.yaml
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Latvian holiday definitions for the Ruby Holiday gem.
|
|
2
|
+
#
|
|
3
|
+
# Updated: 2023-05-29
|
|
4
|
+
# Sources:
|
|
5
|
+
# - https://likumi.lv/ta/id/72608 (Likums "Par svētku, atceres un atzīmējamām dienām")
|
|
6
|
+
---
|
|
7
|
+
months:
|
|
8
|
+
0:
|
|
9
|
+
- name: Lielā Piektdiena # Good Friday
|
|
10
|
+
regions: [lv]
|
|
11
|
+
function: easter(year)
|
|
12
|
+
function_modifier: -2
|
|
13
|
+
- name: Pirmās Lieldienas # Easter Sunday
|
|
14
|
+
regions: [lv]
|
|
15
|
+
function: easter(year)
|
|
16
|
+
- name: Otrās Lieldienas # Easter Monday
|
|
17
|
+
regions: [lv]
|
|
18
|
+
function: easter(year)
|
|
19
|
+
function_modifier: 1
|
|
20
|
+
- name: Vasarsvētki # Summer's Day / Pentecost
|
|
21
|
+
regions: [lv]
|
|
22
|
+
function: easter(year)
|
|
23
|
+
function_modifier: 49
|
|
24
|
+
- name: Vispārējo latviešu Dziesmu un deju svētku noslēguma diena
|
|
25
|
+
regions: [lv]
|
|
26
|
+
function: lv_song_and_dance_festival_end_date(year)
|
|
27
|
+
observed: to_monday_if_weekend(date)
|
|
28
|
+
year_ranges:
|
|
29
|
+
from: 2018
|
|
30
|
+
1:
|
|
31
|
+
- name: Jaungada diena # New Year's Day
|
|
32
|
+
regions: [lv]
|
|
33
|
+
mday: 1
|
|
34
|
+
5:
|
|
35
|
+
- 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
|
|
36
|
+
regions: [lv]
|
|
37
|
+
mday: 1
|
|
38
|
+
- name: Latvijas Republikas Neatkarības atjaunošanas diena # Day of the Restoration of Independence of the Republic of Latvia
|
|
39
|
+
regions: [lv]
|
|
40
|
+
mday: 4
|
|
41
|
+
observed: to_monday_if_weekend(date)
|
|
42
|
+
- name: Mātes diena # Mother's Day
|
|
43
|
+
regions: [lv]
|
|
44
|
+
week: 2
|
|
45
|
+
wday: 0
|
|
46
|
+
- name: "Diena, kad Latvijas hokeja komanda ieguva bronzas medaļu 2023. gada Pasaules hokeja čempionātā" # Latvia team 2023 IIHF World Championship bronze medal win
|
|
47
|
+
regions: [lv]
|
|
48
|
+
mday: 29
|
|
49
|
+
year_ranges:
|
|
50
|
+
limited: [2023]
|
|
51
|
+
6:
|
|
52
|
+
- name: Līgo diena # Midsummer
|
|
53
|
+
regions: [lv]
|
|
54
|
+
mday: 23
|
|
55
|
+
- name: Jāņu diena # Midsummer
|
|
56
|
+
regions: [lv]
|
|
57
|
+
mday: 24
|
|
58
|
+
9:
|
|
59
|
+
- name: Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena # Visit of Pope Francis
|
|
60
|
+
regions: [lv]
|
|
61
|
+
mday: 24
|
|
62
|
+
year_ranges:
|
|
63
|
+
limited: [2018]
|
|
64
|
+
11:
|
|
65
|
+
- name: Latvijas Republikas Proklamēšanas diena # Proclamation Day of the Republic of Latvia
|
|
66
|
+
regions: [lv]
|
|
67
|
+
mday: 18
|
|
68
|
+
observed: to_monday_if_weekend(date)
|
|
69
|
+
12:
|
|
70
|
+
- name: Ziemassvētku vakars # Christmas Eve
|
|
71
|
+
regions: [lv]
|
|
72
|
+
mday: 24
|
|
73
|
+
- name: Pirmie Ziemassvētki # Christmas Day
|
|
74
|
+
regions: [lv]
|
|
75
|
+
mday: 25
|
|
76
|
+
- name: Otrie Ziemassvētki # Boxing Day
|
|
77
|
+
regions: [lv]
|
|
78
|
+
mday: 26
|
|
79
|
+
- name: Vecgada diena # New Year's Eve
|
|
80
|
+
regions: [lv]
|
|
81
|
+
mday: 31
|
|
82
|
+
|
|
83
|
+
methods:
|
|
84
|
+
lv_song_and_dance_festival_end_date:
|
|
85
|
+
arguments: year
|
|
86
|
+
ruby: |
|
|
87
|
+
case year
|
|
88
|
+
when 2018
|
|
89
|
+
# 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")
|
|
90
|
+
Date.new(2018, 7, 8)
|
|
91
|
+
when 2023
|
|
92
|
+
# https://likumi.lv/ta/id/330067 (Ministru kabineta rīkojums Nr. 92 "Par XXVII Vispārējo latviešu dziesmu un XVII Deju svētku norises laiku")
|
|
93
|
+
Date.new(2023, 7, 9)
|
|
94
|
+
when 2028
|
|
95
|
+
# Event's period/next year is known, but precise dates aren't.
|
|
96
|
+
# Previously, dates were announced 2 years ahead, so on ~2026-05 this method would need to be revisited.
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
tests:
|
|
100
|
+
- given:
|
|
101
|
+
date: ['2018-01-01', '2019-01-01', '2029-01-01']
|
|
102
|
+
regions: ["lv"]
|
|
103
|
+
expect:
|
|
104
|
+
name: "Jaungada diena"
|
|
105
|
+
- given:
|
|
106
|
+
date: ['2018-03-30', '2019-04-19', '2039-04-08']
|
|
107
|
+
regions: ["lv"]
|
|
108
|
+
expect:
|
|
109
|
+
name: "Lielā Piektdiena"
|
|
110
|
+
- given:
|
|
111
|
+
date: ['2018-04-01', '2019-04-21', '2039-04-10']
|
|
112
|
+
regions: ["lv"]
|
|
113
|
+
expect:
|
|
114
|
+
name: "Pirmās Lieldienas"
|
|
115
|
+
- given:
|
|
116
|
+
date: ['2018-04-02', '2019-04-22', '2039-04-11']
|
|
117
|
+
regions: ["lv"]
|
|
118
|
+
expect:
|
|
119
|
+
name: "Otrās Lieldienas"
|
|
120
|
+
- given:
|
|
121
|
+
date: ['2018-05-01', '2019-05-01', '2029-05-01']
|
|
122
|
+
regions: ["lv"]
|
|
123
|
+
expect:
|
|
124
|
+
name: "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena"
|
|
125
|
+
- given:
|
|
126
|
+
date: ['2018-05-04', '2019-05-04', '2020-05-04']
|
|
127
|
+
regions: ["lv"]
|
|
128
|
+
expect:
|
|
129
|
+
name: "Latvijas Republikas Neatkarības atjaunošanas diena"
|
|
130
|
+
- given:
|
|
131
|
+
date: '2019-05-06'
|
|
132
|
+
regions: ["lv"]
|
|
133
|
+
options: ["observed"]
|
|
134
|
+
expect:
|
|
135
|
+
name: "Latvijas Republikas Neatkarības atjaunošanas diena"
|
|
136
|
+
- given:
|
|
137
|
+
date: '2020-05-04'
|
|
138
|
+
regions: ["lv"]
|
|
139
|
+
options: ["observed"]
|
|
140
|
+
expect:
|
|
141
|
+
name: "Latvijas Republikas Neatkarības atjaunošanas diena"
|
|
142
|
+
- given:
|
|
143
|
+
date: ['2019-05-12', '2020-05-10', '2029-05-13']
|
|
144
|
+
regions: ["lv"]
|
|
145
|
+
expect:
|
|
146
|
+
name: "Mātes diena"
|
|
147
|
+
- given:
|
|
148
|
+
date: '2023-05-29'
|
|
149
|
+
regions: ["lv"]
|
|
150
|
+
expect:
|
|
151
|
+
name: "Diena, kad Latvijas hokeja komanda ieguva bronzas medaļu 2023. gada Pasaules hokeja čempionātā"
|
|
152
|
+
- given:
|
|
153
|
+
date: ['2019-06-09', '2020-05-31', '2029-05-20']
|
|
154
|
+
regions: ["lv"]
|
|
155
|
+
expect:
|
|
156
|
+
name: "Vasarsvētki"
|
|
157
|
+
- given:
|
|
158
|
+
date: ['2019-06-23', '2020-06-23', '2029-06-23']
|
|
159
|
+
regions: ["lv"]
|
|
160
|
+
expect:
|
|
161
|
+
name: "Līgo diena"
|
|
162
|
+
- given:
|
|
163
|
+
date: ['2019-06-24', '2020-06-24', '2029-06-24']
|
|
164
|
+
regions: ["lv"]
|
|
165
|
+
expect:
|
|
166
|
+
name: "Jāņu diena"
|
|
167
|
+
- given:
|
|
168
|
+
date: ['2018-07-08', '2023-07-09']
|
|
169
|
+
regions: ["lv"]
|
|
170
|
+
expect:
|
|
171
|
+
name: "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena"
|
|
172
|
+
- given:
|
|
173
|
+
date: ['2018-07-09', '2023-07-10']
|
|
174
|
+
regions: ["lv"]
|
|
175
|
+
options: ["observed"]
|
|
176
|
+
expect:
|
|
177
|
+
name: "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena"
|
|
178
|
+
- given:
|
|
179
|
+
date: ['2019-07-08', '2019-07-09', '2022-07-08', '2022-07-09', '2024-07-08', '2024-07-09']
|
|
180
|
+
regions: ["lv"]
|
|
181
|
+
expect:
|
|
182
|
+
holiday: false
|
|
183
|
+
- given:
|
|
184
|
+
date: '2018-09-24'
|
|
185
|
+
regions: ["lv"]
|
|
186
|
+
expect:
|
|
187
|
+
name: "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena"
|
|
188
|
+
- given:
|
|
189
|
+
date: '2019-09-24'
|
|
190
|
+
regions: ["lv"]
|
|
191
|
+
expect:
|
|
192
|
+
holiday: false
|
|
193
|
+
- given:
|
|
194
|
+
date: ['2019-11-18', '2020-11-18', '2029-11-18']
|
|
195
|
+
regions: ["lv"]
|
|
196
|
+
expect:
|
|
197
|
+
name: "Latvijas Republikas Proklamēšanas diena"
|
|
198
|
+
- given:
|
|
199
|
+
date: '2020-11-18'
|
|
200
|
+
regions: ["lv"]
|
|
201
|
+
options: ["observed"]
|
|
202
|
+
expect:
|
|
203
|
+
name: "Latvijas Republikas Proklamēšanas diena"
|
|
204
|
+
- given:
|
|
205
|
+
date: '2029-11-19'
|
|
206
|
+
regions: ["lv"]
|
|
207
|
+
options: ["observed"]
|
|
208
|
+
expect:
|
|
209
|
+
name: "Latvijas Republikas Proklamēšanas diena"
|
|
210
|
+
- given:
|
|
211
|
+
date: ['2019-12-24', '2020-12-24', '2029-12-24']
|
|
212
|
+
regions: ["lv"]
|
|
213
|
+
expect:
|
|
214
|
+
name: "Ziemassvētku vakars"
|
|
215
|
+
- given:
|
|
216
|
+
date: ['2019-12-25', '2020-12-25', '2029-12-25']
|
|
217
|
+
regions: ["lv"]
|
|
218
|
+
expect:
|
|
219
|
+
name: "Pirmie Ziemassvētki"
|
|
220
|
+
- given:
|
|
221
|
+
date: ['2019-12-26', '2020-12-26', '2029-12-26']
|
|
222
|
+
regions: ["lv"]
|
|
223
|
+
expect:
|
|
224
|
+
name: "Otrie Ziemassvētki"
|
|
225
|
+
- given:
|
|
226
|
+
date: ['2019-12-31', '2020-12-31', '2029-12-31']
|
|
227
|
+
regions: ["lv"]
|
|
228
|
+
expect:
|
|
229
|
+
name: "Vecgada diena"
|