Alex Dunae 2007-11-23 04:28:15 +00:00
parent e88aae4755
commit 7f3c9b6b88
7 changed files with 408 additions and 1 deletions

View File

@ -29,4 +29,3 @@ methods:
day = ((h + l - 7 * m + 114) % 31) + 1
Date.civil(year, month, day)
end

100
data/dk.yaml Normal file
View File

@ -0,0 +1,100 @@
# 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: lambda { |year| easter(year)-49 }
type: informal
- name: Palmesøndag
regions: [dk]
function: lambda { |year| easter(year)-7 }
- name: Skærtorsdag
regions: [dk]
function: lambda { |year| easter(year)-3 }
- name: Langfredag
regions: [dk]
function: lambda { |year| easter(year)-2 }
- name: Påskedag
regions: [dk]
function: lambda { |year| easter(year) }
- name: 2. påskedag
regions: [dk]
function: lambda { |year| easter(year)+1 }
- name: Store Bededag
regions: [dk]
function: lambda { |year| easter(year)+26 }
- name: Kristi Himmelfartsdag
regions: [dk]
function: lambda { |year| easter(year)+40 }
- name: Kristi Himmelfartsdag
regions: [dk]
function: lambda { |year| easter(year)+40 }
- name: 2. Pinsedag
regions: [dk]
function: lambda { |year| easter(year)+49 }
- name: Pinsedag
regions: [dk]
function: lambda { |year| easter(year)+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
- name: Danmarks befrielse
regions: [dk]
mday: 5
type: informal
6:
- name: Grundlovsdag
regions: [dk]
mday: 5
- 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
- name: 1. juledag
regions: [dk]
mday: 25
- name: 2. juledag
regions: [dk_]
mday: 26

110
data/es.yaml Normal file
View File

@ -0,0 +1,110 @@
# Spanish holiday definitions for the Ruby Holiday gem.
#
# Updated: 2008-11-22.
# Sources:
# - http://en.wikipedia.org/wiki/Public_holidays_in_Spain
#
# Notes:
# - Valencia is encoded as both es_v and es_vc
---
months:
0:
- name: Jueves Santo
regions: [es_pv, es_ct, es_na, es_v, es_vc]
function: lambda { |year| easter(year)-3 }
- name: Viernes Santo
regions: [es]
function: lambda { |year| easter(year)-2 }
- name: Lunes de Pascua
regions: [es_pv, es_ct, es_na, es_v, es_vc]
function: lambda { |year| easter(year)+1 }
1:
- name: Año Nuevo
regions: [es]
mday: 1
- name: Día de Reyes
regions: [es]
mday: 6
2:
- name: Día de Andalucía
regions: [es_an]
mday: 28
3:
- name: Día de las Islas Baleares
regions: [es_ib]
mday: 1
- name: San José
regions: [es_v, es_vc, es_cm, es_mu, es_m]
mday: 19
4:
- name: San Jorge
regions: [es_ar, es_cl]
mday: 23
- name: Día de Aragón
regions: [es_ar]
mday: 23
5:
- name: Día del Trabajador
regions: [es]
mday: 1
- name: Fiesta de la Comunidad
regions: [es_m]
mday: 2
- name: Día de las Canarias
regions: [es_cn]
mday: 30
- name: Día de la Región Castilla-La Mancha
regions: [es_cm]
mday: 31
6:
- name: Día de la Región de Murcia
regions: [es_mu]
mday: 9
- name: Día de La Rioja
regions: [es_lo]
mday: 9
7:
- name: Santiago Apostol
regions: [es_ga]
mday: 23
8:
- name: Asunción
regions: [es]
mday: 15
9:
- name: Día de Ceuta
regions: [es_ce]
mday: 2
- name: Día de Asturias
regions: [es_o]
mday: 8
- name: Día de Extremadura
regions: [es_ex]
mday: 8
- name: Fiesta Nacional de Cataluña
regions: [es_ct]
mday: 11
10:
- name: Día de Valencia
regions: [es_vc, es_v]
mday: 9
- name: Día de la Hispanidad
regions: [es]
mday: 12
11:
- name: Todos los Santos
regions: [es]
mday: 1
12:
- name: Día de la Constitución
regions: [es]
mday: 6
- name: Inmaculada Concepción
regions: [es]
mday: 8
- name: Navidad del Señor
regions: [es]
mday: 25
- name: San Esteban
regions: [es_ib, es_ct]
mday: 26

51
data/fr.yaml Normal file
View File

@ -0,0 +1,51 @@
# French holiday definitions for the Ruby Holiday gem.
#
# Updated: 2008-11-22.
# Sources:
# - http://en.wikipedia.org/wiki/Holidays_in_France
---
months:
0:
- name: Pâques
regions: [fr]
function: lambda { |year| easter(year) }
- name: Ascension
regions: [fr]
function: lambda { |year| easter(year)+40 }
- name: Pentecôte
regions: [fr]
function: lambda { |year| easter(year)+49 }
- name: Lundi de Pentecôte
regions: [fr]
function: lambda { |year| easter(year)+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

67
data/is.yaml Normal file
View File

@ -0,0 +1,67 @@
# Islandic holiday definitions for the Ruby Holiday gem.
#
# Updated: 2008-11-22.
# Sources:
# - http://www.iceland.is/history-and-culture/Traditions/IcelandicHolidays/
# - http://en.wikipedia.org/wiki/Public_holidays_in_Iceland
---
months:
0:
- name: Fastelavn
regions: [is]
function: lambda { |year| easter(year)-49 }
type: informal
- name: Palmesøndag
regions: [is]
function: lambda { |year| easter(year)-7 }
- name: Skærtorsdag
regions: [is]
function: lambda { |year| easter(year)-3 }
- name: Langfredag
regions: [is]
function: lambda { |year| easter(year)-2 }
- name: Påskedag
regions: [is]
function: lambda { |year| easter(year) }
- name: 2. påskedag
regions: [is]
function: lambda { |year| easter(year)+1 }
- name: Store Bededag
regions: [is]
function: lambda { |year| easter(year)+26 }
- name: Kristi Himmelfartsdag
regions: [is]
function: lambda { |year| easter(year)+40 }
- name: Kristi Himmelfartsdag
regions: [is]
function: lambda { |year| easter(year)+40 }
- name: 2. Pinsedag
regions: [is]
function: lambda { |year| easter(year)+49 }
- name: Pinsedag
regions: [is]
function: lambda { |year| easter(year)+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
5:
- name: Verkalýðsdagurinn
regions: [is]
mday: 1
- name: Mæðradagurinn
regions: [is]
mday: 13

80
lib/holidays/za.rb Normal file
View File

@ -0,0 +1,80 @@
module Holidays
# This file is generated by the Ruby Holiday gem.
#
# Definitions loaded: data/za.yaml, data/common_methods.yaml
#
# To use the definitions in the file, load them right after you load the
# Holiday gem:
#
# require 'holidays'
# require 'path/to/za'
#
# More definitions are available at http://code.dunae.ca/holidays.
module ZA # :nodoc:
DEFINED_REGIONS = [:za]
HOLIDAYS_BY_MONTH = {
5 => [{:mday => 1, :name => "Workers' Day", :regions => [:za]}],
0 => [{:function => lambda { |year| easter(year)-2 }, :name => "Good Friday", :regions => [:za]},
{:function => lambda { |year| easter(year)+1 }, :name => "Family Day", :regions => [:za]}],
6 => [{:mday => 16, :name => "Youth Day", :regions => [:za]}],
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:za]}],
12 => [{:mday => 16, :name => "Day of Reconciliation", :regions => [:za]},
{:mday => 25, :name => "Christmas Day", :regions => [:za]},
{:mday => 26, :name => "Day of Goodwill", :regions => [:za]}],
8 => [{:mday => 9, :name => "National Women's Day", :regions => [:za]}],
3 => [{:mday => 21, :name => "Human Rights Day", :regions => [:za]}],
9 => [{:mday => 24, :name => "Heritage Day", :regions => [:za]}],
4 => [{:mday => 27, :name => "Freedom Day", :regions => [:za]}]
}
# Get the date of Easter in a given year.
#
# +year+ must be a valid Gregorian year.
#
# Returns a Date object.
#--
# from http://snippets.dzone.com/posts/show/765
# TODO: check year to ensure Gregorian
def self.easter(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
end
end
Holidays.class_eval do
existing_regions = []
if const_defined?(:DEFINED_REGIONS)
existing_regions = const_get(:DEFINED_REGIONS)
remove_const(:DEFINED_REGIONS)
end
const_set(:DEFINED_REGIONS, existing_regions | Holidays::ZA::DEFINED_REGIONS)
existing_defs = {}
if const_defined?(:HOLIDAYS_BY_MONTH)
existing_defs = const_get(:HOLIDAYS_BY_MONTH)
remove_const(:HOLIDAYS_BY_MONTH)
end
#const_set(:HOLIDAYS_BY_MONTH, existing_defs.merge(Holidays::ZA::HOLIDAYS_BY_MONTH))
const_set(:HOLIDAYS_BY_MONTH, Holidays::ZA::HOLIDAYS_BY_MONTH)
include Holidays::ZA
end