From 49c9445ab6c6a470f3422d5fcd1221d53da01bd2 Mon Sep 17 00:00:00 2001 From: Dirk Grambow Date: Thu, 5 Nov 2009 21:30:46 +0100 Subject: [PATCH] Fixed German definition file --- data/de.yaml | 22 +++++++++------------- lib/holidays/de.rb | 12 +++++------- lib/holidays/europe.rb | 35 +++++++++++++++++------------------ test/defs/test_defs_de.rb | 7 +++++-- test/defs/test_defs_europe.rb | 7 +++++-- 5 files changed, 41 insertions(+), 42 deletions(-) diff --git a/data/de.yaml b/data/de.yaml index 3ba73eb..c7c5d6a 100644 --- a/data/de.yaml +++ b/data/de.yaml @@ -1,6 +1,6 @@ # German holiday definitions for the Ruby Holiday gem. # -# Updated: 2008-11-29. +# Updated: 2009-11-05. # Sources: # - http://en.wikipedia.org/wiki/Holidays_in_Germany # - http://www.timeanddate.com/calendar/index.html?country=8 @@ -11,10 +11,6 @@ months: - name: Karfreitag regions: [de] function: easter(year)-2 - - name: Ostern - regions: [de] - function: easter(year) - type: informal - name: Ostermontag regions: [de] function: easter(year)+1 @@ -25,22 +21,19 @@ months: regions: [de] function: easter(year)+50 - name: Fronleichnam - regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl, de_sn, de_th] + regions: [de_bw, de_by, de_he, de_nw, de_rp, de_sl] function: easter(year)+60 1: - name: Neujahrstag regions: [de] mday: 1 - name: Heilige Drei Könige - regions: [de_bw, de_by] + regions: [de_bw, de_by, de_st] mday: 6 5: - name: Tag der Arbeit regions: [de] mday: 1 - - name: Victoire 1945 - regions: [de] - mday: 8 8: - name: Mariä Himmelfahrt regions: [de_by, de_sl] @@ -57,7 +50,7 @@ months: regions: [de_bw, de_by, de_nw, de_rp, de_sl] mday: 1 - name: Buß- und Bettag - regions: [de_by, de_sn] + regions: [de_sn] function: de_buss_und_bettag(year) 12: - name: 1. Weihnachtstag @@ -81,7 +74,6 @@ methods: tests: | {Date.civil(2009,1,1) => 'Neujahrstag', Date.civil(2009,4,10) => 'Karfreitag', - Date.civil(2009,4,12) => 'Ostern', Date.civil(2009,4,13) => 'Ostermontag', Date.civil(2009,5,1) => 'Tag der Arbeit', Date.civil(2009,5,21) => 'Christi Himmelfahrt', @@ -92,7 +84,11 @@ tests: | assert_equal name, Holidays.on(date, :de, :informal)[0][:name] end - [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn, :de_th, :de_].each do |r| + [:de_bw, :de_by, :de_st, :de_].each do |r| + assert_equal 'Heilige Drei Könige', Date.civil(2009,1,6).holidays(r)[0][:name] + end + + [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_].each do |r| assert_equal 'Fronleichnam', Date.civil(2009,6,11).holidays(r)[0][:name] end diff --git a/lib/holidays/de.rb b/lib/holidays/de.rb index c27b102..40c3b85 100644 --- a/lib/holidays/de.rb +++ b/lib/holidays/de.rb @@ -11,21 +11,19 @@ module Holidays # # More definitions are available at http://code.dunae.ca/holidays. module DE # :nodoc: - DEFINED_REGIONS = [:de, :de_bw, :de_by, :de_nw, :de_rp, :de_sl, :de_sn, :de_he, :de_th, :de_bb, :de_mv, :de_st] + DEFINED_REGIONS = [:de, :de_bw, :de_by, :de_nw, :de_rp, :de_sl, :de_sn, :de_he, :de_st, :de_bb, :de_mv, :de_th] HOLIDAYS_BY_MONTH = { - 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:de]}, - {:mday => 8, :name => "Victoire 1945", :regions => [:de]}], + 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:de]}], 0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:de]}, - {:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :type => :informal, :name => "Ostern", :regions => [:de]}, {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:de]}, {:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Christi Himmelfahrt", :regions => [:de]}, {:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:de]}, - {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn, :de_th]}], + {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl]}], 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:de_bw, :de_by, :de_nw, :de_rp, :de_sl]}, - {:function => lambda { |year| Holidays.de_buss_und_bettag(year) }, :function_id => "de_buss_und_bettag(year)", :name => "Buß- und Bettag", :regions => [:de_by, :de_sn]}], + {:function => lambda { |year| Holidays.de_buss_und_bettag(year) }, :function_id => "de_buss_und_bettag(year)", :name => "Buß- und Bettag", :regions => [:de_sn]}], 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:de]}, - {:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by]}], + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by, :de_st]}], 12 => [{:mday => 25, :name => "1. Weihnachtstag", :regions => [:de]}, {:mday => 26, :name => "2. Weihnachtstag", :regions => [:de]}], 8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by, :de_sl]}], diff --git a/lib/holidays/europe.rb b/lib/holidays/europe.rb index 7079018..8a45828 100644 --- a/lib/holidays/europe.rb +++ b/lib/holidays/europe.rb @@ -11,18 +11,18 @@ module Holidays # # More definitions are available at http://code.dunae.ca/holidays. module Europe # :nodoc: - DEFINED_REGIONS = [:dk, :de, :fr, :de_bw, :de_by, :de_nw, :de_rp, :de_sl, :de_sn, :de_he, :de_th, :de_bb, :de_mv, :de_st, :es, :es_m, :es_cn, :es_cm, :es_pv, :es_ct, :es_na, :es_v, :es_vc, :es_mu, :es_lo, :es_ib, :es_ga, :es_an, :es_ce, :es_o, :es_ex, :es_ar, :es_cl, :gb, :ie, :je, :gb_jsy, :gg, :gb_gsy, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :gb_sct, :im, :gb_iom, :gb_con, :is, :it, :nl, :pt] + DEFINED_REGIONS = [:dk, :de, :de_bw, :de_by, :de_nw, :de_rp, :de_sl, :de_sn, :de_he, :de_st, :de_bb, :de_mv, :de_th, :es, :es_m, :es_cn, :es_cm, :es_pv, :es_ct, :es_na, :es_v, :es_vc, :es_mu, :es_lo, :es_ib, :es_ga, :es_an, :es_ce, :es_o, :es_ex, :es_ar, :es_cl, :fr, :gb, :ie, :je, :gb_jsy, :gg, :gb_gsy, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :gb_sct, :im, :gb_iom, :gb_con, :is, :it, :nl, :pt] HOLIDAYS_BY_MONTH = { 5 => [{:mday => 1, :name => "Arbejdernes kampdag", :regions => [:dk]}, {:mday => 5, :type => :informal, :name => "Danmarks befrielse", :regions => [:dk]}, {:mday => 1, :name => "Tag der Arbeit", :regions => [:de]}, - {:mday => 8, :name => "Victoire 1945", :regions => [:de, :fr]}, {:mday => 1, :name => "Día del Trabajador", :regions => [:es]}, {:mday => 2, :name => "Fiesta de la Comunidad", :regions => [:es_m]}, {:mday => 30, :name => "Día de las Canarias", :regions => [:es_cn]}, {:mday => 31, :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, :name => "May Day", :regions => [:gb, :ie]}, {:mday => 9, :name => "Liberation Day", :regions => [:je, :gb_jsy, :gg, :gb_gsy]}, {:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:gb]}, @@ -43,11 +43,10 @@ module Holidays {:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pinsedag", :regions => [:dk]}, {:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "2. Pinsedag", :regions => [:dk]}, {:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:de]}, - {:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :type => :informal, :name => "Ostern", :regions => [:de]}, {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:de]}, {:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Christi Himmelfahrt", :regions => [:de]}, {:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:de]}, - {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn, :de_th]}, + {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl]}, {:function => lambda { |year| Holidays.easter(year)-3 }, :function_id => "easter(year)-3", :name => "Jueves Santo", :regions => [:es_pv, :es_ct, :es_na, :es_v, :es_vc]}, {:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Viernes Santo", :regions => [:es]}, {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Lunes de Pascua", :regions => [:es_pv, :es_ct, :es_na, :es_v, :es_vc]}, @@ -84,7 +83,7 @@ module Holidays {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Corpo de Deus", :regions => [:pt]}], 11 => [{:mday => 10, :type => :informal, :name => "Mortensaften", :regions => [:dk]}, {:mday => 1, :name => "Allerheiligen", :regions => [:de_bw, :de_by, :de_nw, :de_rp, :de_sl]}, - {:function => lambda { |year| Holidays.de_buss_und_bettag(year) }, :function_id => "de_buss_und_bettag(year)", :name => "Buß- und Bettag", :regions => [:de_by, :de_sn]}, + {:function => lambda { |year| Holidays.de_buss_und_bettag(year) }, :function_id => "de_buss_und_bettag(year)", :name => "Buß- und Bettag", :regions => [:de_sn]}, {:mday => 1, :name => "Todos los Santos", :regions => [:es]}, {:mday => 1, :name => "Toussaint", :regions => [:fr]}, {:mday => 11, :name => "Armistice 1918", :regions => [:fr]}, @@ -104,7 +103,7 @@ module Holidays {:mday => 10, :name => "Dia de Portugal", :regions => [:pt]}], 1 => [{: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]}, + {:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by, :de_st]}, {:mday => 1, :name => "Año Nuevo", :regions => [:es]}, {:mday => 6, :name => "Día de Reyes", :regions => [:es]}, {:mday => 1, :name => "Jour de l'an", :regions => [:fr]}, @@ -185,18 +184,6 @@ module Holidays } end -# Germany: Wednesday before November 23 -def self.de_buss_und_bettag(year) - date = Date.civil(year,11,23) - if date.wday > 3 - date -= (date.wday - 3) - else - date -= (date.wday + 4) - end - date -end - - # Iceland: first day of summer (Thursday after 18 April) def self.is_sumardagurinn_fyrsti(year) date = Date.civil(year,4,18) @@ -209,6 +196,18 @@ def self.is_sumardagurinn_fyrsti(year) end +# Germany: Wednesday before November 23 +def self.de_buss_und_bettag(year) + date = Date.civil(year,11,23) + if date.wday > 3 + date -= (date.wday - 3) + else + date -= (date.wday + 4) + end + date +end + + end diff --git a/test/defs/test_defs_de.rb b/test/defs/test_defs_de.rb index 6825dde..e3bc159 100644 --- a/test/defs/test_defs_de.rb +++ b/test/defs/test_defs_de.rb @@ -9,7 +9,6 @@ class DeDefinitionTests < Test::Unit::TestCase # :nodoc: def test_de {Date.civil(2009,1,1) => 'Neujahrstag', Date.civil(2009,4,10) => 'Karfreitag', - Date.civil(2009,4,12) => 'Ostern', Date.civil(2009,4,13) => 'Ostermontag', Date.civil(2009,5,1) => 'Tag der Arbeit', Date.civil(2009,5,21) => 'Christi Himmelfahrt', @@ -20,7 +19,11 @@ class DeDefinitionTests < Test::Unit::TestCase # :nodoc: assert_equal name, Holidays.on(date, :de, :informal)[0][:name] end -[:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn, :de_th, :de_].each do |r| +[:de_bw, :de_by, :de_st, :de_].each do |r| + assert_equal 'Heilige Drei Könige', Date.civil(2009,1,6).holidays(r)[0][:name] +end + +[:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_].each do |r| assert_equal 'Fronleichnam', Date.civil(2009,6,11).holidays(r)[0][:name] end diff --git a/test/defs/test_defs_europe.rb b/test/defs/test_defs_europe.rb index a43edd0..6d0c594 100644 --- a/test/defs/test_defs_europe.rb +++ b/test/defs/test_defs_europe.rb @@ -29,7 +29,6 @@ end {Date.civil(2009,1,1) => 'Neujahrstag', Date.civil(2009,4,10) => 'Karfreitag', - Date.civil(2009,4,12) => 'Ostern', Date.civil(2009,4,13) => 'Ostermontag', Date.civil(2009,5,1) => 'Tag der Arbeit', Date.civil(2009,5,21) => 'Christi Himmelfahrt', @@ -40,7 +39,11 @@ end assert_equal name, Holidays.on(date, :de, :informal)[0][:name] end -[:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_sn, :de_th, :de_].each do |r| +[:de_bw, :de_by, :de_st, :de_].each do |r| + assert_equal 'Heilige Drei Könige', Date.civil(2009,1,6).holidays(r)[0][:name] +end + +[:de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :de_].each do |r| assert_equal 'Fronleichnam', Date.civil(2009,6,11).holidays(r)[0][:name] end