Skip to content

Commit

Permalink
Define holidays in methods instead of constants
Browse files Browse the repository at this point in the history
  • Loading branch information
alexdunae committed Sep 14, 2011
1 parent 8f60480 commit 3f23f56
Show file tree
Hide file tree
Showing 32 changed files with 814 additions and 686 deletions.
20 changes: 12 additions & 8 deletions data/build_defs.rb
Original file line number Diff line number Diff line change
Expand Up @@ -104,29 +104,33 @@ def parse_holiday_defs(module_name, files)
module_src =<<-EOM
# encoding: utf-8
module Holidays
# This file is generated by the Ruby Holiday gem.
# This file is generated by the Ruby Holidays gem.
#
# Definitions loaded: #{files.join(', ')}
#
# To use the definitions in this file, load them right after you load the
# To use the definitions in this file, load it right after you load the
# Holiday gem:
#
# require 'holidays'
# require 'holidays/#{module_name.downcase}'
#
# More definitions are available at http://code.dunae.ca/holidays.
# All the definitions are available at https://github.com/alexdunae/holidays
module #{module_name} # :nodoc:
DEFINED_REGIONS = [:#{regions.flatten.uniq.join(', :')}]
def self.defined_regions
[:#{regions.flatten.uniq.join(', :')}]
end
HOLIDAYS_BY_MONTH = {
#{month_strs.join(",\n")}
}
def self.holidays_by_month
{
#{month_strs.join(",\n")}
}
end
end
#{method_str}
end
Holidays.merge_defs(Holidays::#{module_name}::DEFINED_REGIONS, Holidays::#{module_name}::HOLIDAYS_BY_MONTH)
Holidays.merge_defs(Holidays::#{module_name}.defined_regions, Holidays::#{module_name}.holidays_by_month)
EOM


Expand Down
28 changes: 16 additions & 12 deletions lib/holidays/at.rb
Original file line number Diff line number Diff line change
@@ -1,37 +1,41 @@
# encoding: utf-8
module Holidays
# This file is generated by the Ruby Holiday gem.
# This file is generated by the Ruby Holidays gem.
#
# Definitions loaded: data/at.yaml
#
# To use the definitions in this file, load them right after you load the
# To use the definitions in this file, load it right after you load the
# Holiday gem:
#
# require 'holidays'
# require 'holidays/at'
#
# More definitions are available at http://code.dunae.ca/holidays.
# All the definitions are available at https://github.com/alexdunae/holidays
module AT # :nodoc:
DEFINED_REGIONS = [:at]
def self.defined_regions
[:at]
end

HOLIDAYS_BY_MONTH = {
def self.holidays_by_month
{
5 => [{:mday => 1, :name => "Staatsfeiertag", :regions => [:at]}],
0 => [{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:at]},
{:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Christi Himmelfahrt", :regions => [:at]},
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:at]},
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:at]}],
11 => [{:mday => 1, :name => "Allerheiligen", :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]}]
}
{:mday => 26, :name => "2. Weihnachtstag", :regions => [:at]}],
8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:at]}],
10 => [{:mday => 26, :name => "Nationalfeiertag", :regions => [:at]}]
}
end
end


end

Holidays.merge_defs(Holidays::AT::DEFINED_REGIONS, Holidays::AT::HOLIDAYS_BY_MONTH)
Holidays.merge_defs(Holidays::AT.defined_regions, Holidays::AT.holidays_by_month)
36 changes: 20 additions & 16 deletions lib/holidays/au.rb
Original file line number Diff line number Diff line change
@@ -1,43 +1,47 @@
# encoding: utf-8
module Holidays
# This file is generated by the Ruby Holiday gem.
# This file is generated by the Ruby Holidays gem.
#
# Definitions loaded: data/au.yaml
#
# To use the definitions in this file, load them right after you load the
# To use the definitions in this file, load it right after you load the
# Holiday gem:
#
# require 'holidays'
# require 'holidays/au'
#
# More definitions are available at http://code.dunae.ca/holidays.
# All the definitions are available at https://github.com/alexdunae/holidays
module AU # :nodoc:
DEFINED_REGIONS = [:au, :au_tas, :au_wa, :au_vic, :au_qld, :au_nt, :au_act, :au_nsw, :au_sa, :au_qld_brisbane]
def self.defined_regions
[:au_qld, :au_nt, :au, :au_tas, :au_wa, :au_act, :au_nsw, :au_sa, :au_vic, :au_qld_brisbane]
end

HOLIDAYS_BY_MONTH = {
def self.holidays_by_month
{
5 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_qld]},
{:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]}],
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Good Friday", :regions => [:au]},
{:function => lambda { |year| Holidays.easter(year)-1 }, :function_id => "easter(year)-1", :name => "Easter Saturday", :regions => [:au]},
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Easter Monday", :regions => [:au]},
{:function => lambda { |year| Holidays.easter(year)+2 }, :function_id => "easter(year)+2", :name => "Easter Monday", :regions => [:au_tas]}],
6 => [{:wday => 1, :week => 1, :name => "Foundation Day", :regions => [:au_wa]},
{:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_qld, :au_vic]},
{:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}],
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:au]},
{:mday => 26, :name => "Australia Day", :regions => [:au]}],
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:au]},
{:mday => 26, :name => "Boxing Day", :regions => [:au]}],
8 => [{:wday => 3, :week => -3, :name => "Ekka", :regions => [:au_qld_brisbane]}],
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]}],
4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:au]}],
5 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_qld]},
{:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]}],
6 => [{:wday => 1, :week => 1, :name => "Foundation Day", :regions => [:au_wa]},
{:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_tas, :au_nt, :au_qld, :au_vic]},
{:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}],
8 => [{:wday => 3, :week => -3, :name => "Ekka", :regions => [:au_qld_brisbane]}],
10 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_act, :au_nsw, :au_sa]}],
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:au]},
{:mday => 26, :name => "Boxing Day", :regions => [:au]}]
}
10 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_act, :au_nsw, :au_sa]}]
}
end
end


end

Holidays.merge_defs(Holidays::AU::DEFINED_REGIONS, Holidays::AU::HOLIDAYS_BY_MONTH)
Holidays.merge_defs(Holidays::AU.defined_regions, Holidays::AU.holidays_by_month)
30 changes: 17 additions & 13 deletions lib/holidays/br.rb
Original file line number Diff line number Diff line change
@@ -1,36 +1,40 @@
# encoding: utf-8
module Holidays
# This file is generated by the Ruby Holiday gem.
# This file is generated by the Ruby Holidays gem.
#
# Definitions loaded: data/br.yaml
#
# To use the definitions in this file, load them right after you load the
# To use the definitions in this file, load it right after you load the
# Holiday gem:
#
# require 'holidays'
# require 'holidays/br'
#
# More definitions are available at http://code.dunae.ca/holidays.
# All the definitions are available at https://github.com/alexdunae/holidays
module BR # :nodoc:
DEFINED_REGIONS = [:br]
def self.defined_regions
[:br]
end

HOLIDAYS_BY_MONTH = {
def self.holidays_by_month
{
5 => [{:mday => 1, :name => "Dia do Trabalho", :regions => [:br]}],
0 => [{:function => lambda { |year| Holidays.easter(year)-47 }, :function_id => "easter(year)-47", :type => :informal, :name => "Carnaval", :regions => [:br]},
{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Sexta-feira Santa", :regions => [:br]},
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Páscoa", :regions => [:br]},
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Corpus Christ", :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]}]
}
1 => [{:mday => 1, :name => "Dia da Confraternização Universal", :regions => [:br]}],
12 => [{:mday => 25, :name => "Natal", :regions => [:br]}],
9 => [{:mday => 7, :name => "Proclamação da Independência", :regions => [:br]}],
4 => [{:mday => 21, :name => "Dia de Tiradentes", :regions => [:br]}],
10 => [{:mday => 12, :name => "Dia de Nossa Senhora Aparecida", :regions => [:br]}]
}
end
end


end

Holidays.merge_defs(Holidays::BR::DEFINED_REGIONS, Holidays::BR::HOLIDAYS_BY_MONTH)
Holidays.merge_defs(Holidays::BR.defined_regions, Holidays::BR.holidays_by_month)
52 changes: 28 additions & 24 deletions lib/holidays/ca.rb
Original file line number Diff line number Diff line change
@@ -1,54 +1,58 @@
# encoding: utf-8
module Holidays
# This file is generated by the Ruby Holiday gem.
# This file is generated by the Ruby Holidays gem.
#
# Definitions loaded: data/ca.yaml, data/north_america_informal.yaml
#
# To use the definitions in this file, load them right after you load the
# To use the definitions in this file, load it right after you load the
# Holiday gem:
#
# require 'holidays'
# require 'holidays/ca'
#
# More definitions are available at http://code.dunae.ca/holidays.
# All the definitions are available at https://github.com/alexdunae/holidays
module CA # :nodoc:
DEFINED_REGIONS = [:ca, :ca_qc, :ca_ab, :ca_on, :ca_sk, :ca_mb, :ca_nf, :ca_nt, :ca_nu, :ca_bc, :ca_ns, :ca_yk, :us]
def self.defined_regions
[:ca, :ca_qc, :ca_nf, :ca_nt, :ca_nu, :ca_ab, :ca_on, :ca_sk, :ca_mb, :ca_bc, :ca_ns, :ca_yk, :us]
end

HOLIDAYS_BY_MONTH = {
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Good Friday", :regions => [:ca]},
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :type => :informal, :name => "Easter Monday", :regions => [:ca]}],
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:ca]},
{:mday => 2, :name => "New Year's", :regions => [:ca_qc]}],
2 => [{:wday => 1, :week => 3, :name => "Family Day", :regions => [:ca_ab, :ca_on, :ca_sk]},
{:wday => 1, :week => 3, :name => "Louis Riel Day", :regions => [:ca_mb]},
{:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]},
{:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}],
3 => [{:mday => 23, :name => "St. George's Day", :regions => [:ca_nf]},
{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}],
5 => [{:function => lambda { |year| Holidays.ca_victoria_day(year) }, :function_id => "ca_victoria_day(year)", :name => "Victoria Day", :regions => [:ca]},
def self.holidays_by_month
{
5 => [{:function => lambda { |year| Holidays.ca_victoria_day(year) }, :function_id => "ca_victoria_day(year)", :name => "Victoria Day", :regions => [:ca]},
{:function => lambda { |year| Holidays.ca_victoria_day(year) }, :function_id => "ca_victoria_day(year)", :name => "National Patriotes Day", :regions => [:ca_qc]},
{:wday => 0, :week => 3, :type => :informal, :name => "Father's Day", :regions => [:us, :ca]}],
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Good Friday", :regions => [:ca]},
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :type => :informal, :name => "Easter Monday", :regions => [:ca]}],
11 => [{:mday => 11, :name => "Remembrance Day", :regions => [:ca]}],
6 => [{:mday => 24, :name => "Discovery Day", :regions => [:ca_nf]},
{:mday => 24, :name => "Fête Nationale", :regions => [:ca_qc]},
{:mday => 21, :name => "National Aboriginal Day", :regions => [:ca_nt]}],
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:ca]},
{:mday => 2, :name => "New Year's", :regions => [:ca_qc]}],
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:ca]},
{:mday => 26, :name => "Boxing Day", :regions => [:ca]}],
7 => [{:mday => 1, :observed => lambda { |date| Holidays.to_monday_if_sunday(date) }, :observed_id => "to_monday_if_sunday", :name => "Canada Day", :regions => [:ca]},
{:mday => 12, :name => "Orangemen's Day", :regions => [:ca_nf]},
{:mday => 9, :name => "Nunavut Day", :regions => [:ca_nu]}],
2 => [{:wday => 1, :week => 3, :name => "Family Day", :regions => [:ca_ab, :ca_on, :ca_sk]},
{:wday => 1, :week => 3, :name => "Louis Riel Day", :regions => [:ca_mb]},
{:mday => 2, :type => :informal, :name => "Groundhog Day", :regions => [:us, :ca]},
{:mday => 14, :type => :informal, :name => "Valentine's Day", :regions => [:us, :ca]}],
8 => [{:wday => 1, :week => 1, :name => "BC Day", :regions => [:ca_bc]},
{:wday => 1, :week => 1, :name => "Saskatchewan Day", :regions => [:ca_sk]},
{:wday => 1, :week => 1, :name => "Heritage Day", :regions => [:ca_ab]},
{:wday => 1, :week => 1, :name => "Natal Day", :regions => [:ca_ns]},
{:wday => 1, :week => 1, :name => "Civic Holiday", :regions => [:ca_on]},
{:wday => 1, :week => 3, :name => "Discovery Day", :regions => [:ca_yk]}],
3 => [{:mday => 23, :name => "St. George's Day", :regions => [:ca_nf]},
{:mday => 17, :type => :informal, :name => "St. Patrick's Day", :regions => [:us, :ca]}],
9 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:ca]}],
10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca]},
{:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}],
11 => [{:mday => 11, :name => "Remembrance Day", :regions => [:ca]}],
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:ca]},
{:mday => 26, :name => "Boxing Day", :regions => [:ca]}],
4 => [{:mday => 1, :type => :informal, :name => "April Fool's Day", :regions => [:us, :ca]},
{:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}]
}
{:mday => 22, :type => :informal, :name => "Earth Day", :regions => [:us, :ca]}],
10 => [{:wday => 1, :week => 2, :name => "Thanksgiving", :regions => [:ca]},
{:mday => 31, :type => :informal, :name => "Halloween", :regions => [:us, :ca]}]
}
end
end

# Monday on or before May 24
Expand All @@ -66,4 +70,4 @@ def self.ca_victoria_day(year)

end

Holidays.merge_defs(Holidays::CA::DEFINED_REGIONS, Holidays::CA::HOLIDAYS_BY_MONTH)
Holidays.merge_defs(Holidays::CA.defined_regions, Holidays::CA.holidays_by_month)
32 changes: 18 additions & 14 deletions lib/holidays/cz.rb
Original file line number Diff line number Diff line change
@@ -1,36 +1,40 @@
# encoding: utf-8
module Holidays
# This file is generated by the Ruby Holiday gem.
# This file is generated by the Ruby Holidays gem.
#
# Definitions loaded: data/cz.yaml
#
# To use the definitions in this file, load them right after you load the
# To use the definitions in this file, load it right after you load the
# Holiday gem:
#
# require 'holidays'
# require 'holidays/cz'
#
# More definitions are available at http://code.dunae.ca/holidays.
# All the definitions are available at https://github.com/alexdunae/holidays
module CZ # :nodoc:
DEFINED_REGIONS = [:cz]
def self.defined_regions
[:cz]
end

HOLIDAYS_BY_MONTH = {
def self.holidays_by_month
{
5 => [{:mday => 1, :name => "Svátek práce", :regions => [:cz]},
{:mday => 8, :name => "Den vítězství", :regions => [:cz]}],
0 => [{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Velikonoční pondělí", :regions => [:cz]}],
11 => [{:mday => 17, :name => "Den boje za svobodu a demokracii", :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]}],
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]}],
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]}]
}
10 => [{:mday => 28, :name => "Den vzniku samostatného československého státu", :regions => [:cz]}]
}
end
end


end

Holidays.merge_defs(Holidays::CZ::DEFINED_REGIONS, Holidays::CZ::HOLIDAYS_BY_MONTH)
Holidays.merge_defs(Holidays::CZ.defined_regions, Holidays::CZ.holidays_by_month)
Loading

0 comments on commit 3f23f56

Please sign in to comment.