holidays 1.0.5 → 1.0.6
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.
- data/.travis.yml +8 -1
- data/{CHANGELOG → CHANGELOG.rdoc} +29 -3
- data/LICENSE +2 -2
- data/README.rdoc +41 -28
- data/data/ar.yaml +82 -0
- data/data/au.yaml +40 -4
- data/data/be.yaml +65 -0
- data/data/br.yaml +12 -12
- data/data/ca.yaml +30 -17
- data/data/ch.yaml +187 -0
- data/data/federal_reserve.yaml +151 -0
- data/data/fi.yaml +19 -0
- data/data/fr.yaml +5 -5
- data/data/gb.yaml +19 -14
- data/data/hr.yaml +77 -0
- data/data/ie.yaml +36 -8
- data/data/index.yaml +12 -2
- data/data/ma.yaml +52 -0
- data/data/nerc.yaml +51 -0
- data/data/north_america_informal.yaml +13 -1
- data/data/pt.yaml +14 -13
- data/data/ro.yaml +76 -0
- data/data/sk.yaml +74 -0
- data/data/us.yaml +5 -1
- data/data/ve.yaml +70 -0
- data/holidays.gemspec +41 -9
- data/lib/holidays.rb +57 -34
- data/lib/holidays/MANIFEST +35 -24
- data/lib/holidays/ar.rb +42 -0
- data/lib/holidays/at.rb +3 -3
- data/lib/holidays/au.rb +28 -4
- data/lib/holidays/be.rb +40 -0
- data/lib/holidays/br.rb +1 -1
- data/lib/holidays/ca.rb +7 -3
- data/lib/holidays/ch.rb +92 -0
- data/lib/holidays/europe.rb +173 -53
- data/lib/holidays/federal_reserve.rb +50 -0
- data/lib/holidays/fi.rb +14 -1
- data/lib/holidays/fr.rb +1 -1
- data/lib/holidays/gb.rb +1 -1
- data/lib/holidays/hr.rb +42 -0
- data/lib/holidays/hu.rb +38 -0
- data/lib/holidays/ie.rb +16 -7
- data/lib/holidays/ma.rb +37 -0
- data/lib/holidays/mx.rb +3 -1
- data/lib/holidays/nerc.rb +34 -0
- data/lib/holidays/north_america.rb +9 -4
- data/lib/holidays/pt.rb +1 -1
- data/lib/holidays/ro.rb +40 -0
- data/lib/holidays/scandinavia.rb +13 -0
- data/lib/holidays/sk.rb +42 -0
- data/lib/holidays/us.rb +6 -3
- data/lib/holidays/ve.rb +40 -0
- data/rakefile.rb +1 -1
- data/test/defs/test_defs_ar.rb +27 -0
- data/test/defs/test_defs_au.rb +10 -0
- data/test/defs/test_defs_be.rb +25 -0
- data/test/defs/test_defs_br.rb +5 -5
- data/test/defs/test_defs_ca.rb +22 -2
- data/test/defs/test_defs_ch.rb +39 -0
- data/test/defs/test_defs_europe.rb +160 -10
- data/test/defs/test_defs_federal_reserve.rb +84 -0
- data/test/defs/test_defs_fi.rb +5 -0
- data/test/defs/test_defs_fr.rb +1 -1
- data/test/defs/test_defs_gb.rb +7 -2
- data/test/defs/test_defs_hr.rb +31 -0
- data/test/defs/test_defs_hu.rb +29 -0
- data/test/defs/test_defs_ie.rb +18 -3
- data/test/defs/test_defs_ma.rb +22 -0
- data/test/defs/test_defs_mx.rb +13 -0
- data/test/defs/test_defs_nerc.rb +23 -0
- data/test/defs/test_defs_north_america.rb +23 -2
- data/test/defs/test_defs_pt.rb +4 -3
- data/test/defs/test_defs_ro.rb +37 -0
- data/test/defs/test_defs_scandinavia.rb +5 -0
- data/test/defs/test_defs_sk.rb +28 -0
- data/test/defs/test_defs_us.rb +14 -0
- data/test/defs/test_defs_ve.rb +28 -0
- data/test/test_all_regions.rb +10 -0
- metadata +40 -6
data/lib/holidays.rb
CHANGED
@@ -17,7 +17,7 @@ require 'date'
|
|
17
17
|
# By region and sub regions. For example, return holidays in Germany
|
18
18
|
# and all its sub regions with <tt>:de_</tt>.
|
19
19
|
# [<tt>:region_sub</tt>]
|
20
|
-
# By sub region. Return national holidays in Spain plus holidays in Spain's
|
20
|
+
# By sub region. Return national holidays in Spain plus holidays in Spain's
|
21
21
|
# Valencia region with <tt>:es_v</tt>.
|
22
22
|
# [<tt>:any</tt>]
|
23
23
|
# Any region. Return holidays from any loaded region.
|
@@ -46,7 +46,7 @@ module Holidays
|
|
46
46
|
# Exception thrown when an unknown region is requested.
|
47
47
|
class UnknownRegionError < ArgumentError; end
|
48
48
|
|
49
|
-
VERSION = '1.0.
|
49
|
+
VERSION = '1.0.6'
|
50
50
|
|
51
51
|
@@regions = []
|
52
52
|
@@holidays_by_month = {}
|
@@ -62,7 +62,7 @@ module Holidays
|
|
62
62
|
# [<tt>date</tt>] A Date object.
|
63
63
|
# [<tt>:options</tt>] One or more region symbols, <tt>:informal</tt> and/or <tt>:observed</tt>.
|
64
64
|
#
|
65
|
-
# Returns an array of hashes or nil. See Holidays#between for the output
|
65
|
+
# Returns an array of hashes or nil. See Holidays#between for the output
|
66
66
|
# format.
|
67
67
|
#
|
68
68
|
# Also available via Date#holidays.
|
@@ -86,7 +86,7 @@ module Holidays
|
|
86
86
|
options.delete(:no_observed)
|
87
87
|
self.between(start_date, end_date, options).empty?
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
# Get all holidays occuring between two dates, inclusively.
|
91
91
|
#
|
92
92
|
# Returns an array of hashes or nil.
|
@@ -110,16 +110,16 @@ module Holidays
|
|
110
110
|
|
111
111
|
# get simple dates
|
112
112
|
if start_date.respond_to?(:to_date)
|
113
|
-
start_date = start_date.to_date
|
113
|
+
start_date = start_date.to_date
|
114
114
|
else
|
115
115
|
start_date = Date.civil(start_date.year, start_date.mon, start_date.mday)
|
116
|
-
end
|
116
|
+
end
|
117
117
|
|
118
118
|
if end_date.respond_to?(:to_date)
|
119
119
|
end_date = end_date.to_date
|
120
120
|
else
|
121
121
|
end_date = Date.civil(end_date.year, end_date.mon, end_date.mday)
|
122
|
-
end
|
122
|
+
end
|
123
123
|
|
124
124
|
regions, observed, informal = parse_options(options)
|
125
125
|
holidays = []
|
@@ -127,7 +127,7 @@ module Holidays
|
|
127
127
|
dates = {}
|
128
128
|
(start_date..end_date).each do |date|
|
129
129
|
# Always include month '0' for variable-month holidays
|
130
|
-
dates[date.year] = [0] unless dates[date.year]
|
130
|
+
dates[date.year] = [0] unless dates[date.year]
|
131
131
|
# TODO: test this, maybe should push then flatten
|
132
132
|
dates[date.year] << date.month unless dates[date.year].include?(date.month)
|
133
133
|
end
|
@@ -138,14 +138,14 @@ module Holidays
|
|
138
138
|
|
139
139
|
hbm.each do |h|
|
140
140
|
next unless in_region?(regions, h[:regions])
|
141
|
-
|
141
|
+
|
142
142
|
# Skip informal holidays unless they have been requested
|
143
143
|
next if h[:type] == :informal and not informal
|
144
|
-
|
144
|
+
|
145
145
|
if h[:function]
|
146
146
|
# Holiday definition requires a calculation
|
147
147
|
result = call_proc(h[:function], year)
|
148
|
-
|
148
|
+
|
149
149
|
# Procs may return either Date or an integer representing mday
|
150
150
|
if result.kind_of?(Date)
|
151
151
|
month = result.month
|
@@ -187,7 +187,7 @@ module Holidays
|
|
187
187
|
def self.merge_defs(regions, holidays) # :nodoc:
|
188
188
|
@@regions = @@regions | regions
|
189
189
|
@@regions.uniq!
|
190
|
-
|
190
|
+
|
191
191
|
holidays.each do |month, holiday_defs|
|
192
192
|
@@holidays_by_month[month] = [] unless @@holidays_by_month[month]
|
193
193
|
holiday_defs.each do |holiday_def|
|
@@ -198,15 +198,15 @@ module Holidays
|
|
198
198
|
if ex[:name] == holiday_def[:name] and ex[:wday] == holiday_def[:wday] and ex[:mday] == holiday_def[:mday] and ex[:week] == holiday_def[:week] and ex[:function_id] == holiday_def[:function_id] and ex[:type] == holiday_def[:type] and ex[:observed_id] == holiday_def[:observed_id]
|
199
199
|
# append regions
|
200
200
|
ex[:regions] << holiday_def[:regions]
|
201
|
-
|
201
|
+
|
202
202
|
# Should do this once we're done
|
203
203
|
ex[:regions].flatten!
|
204
204
|
ex[:regions].uniq!
|
205
205
|
exists = true
|
206
206
|
end
|
207
207
|
end
|
208
|
-
|
209
|
-
@@holidays_by_month[month] << holiday_def unless exists
|
208
|
+
|
209
|
+
@@holidays_by_month[month] << holiday_def unless exists
|
210
210
|
end
|
211
211
|
end
|
212
212
|
end
|
@@ -232,7 +232,7 @@ module Holidays
|
|
232
232
|
day = ((h + l - 7 * m + 114) % 31) + 1
|
233
233
|
Date.civil(year, month, day)
|
234
234
|
end
|
235
|
-
|
235
|
+
|
236
236
|
# A method to calculate the orthodox easter date, returns date in the Gregorian (western) calendar
|
237
237
|
# Safe until appr. 4100 AD, when one leap day will be removed.
|
238
238
|
# Returns a Date object.
|
@@ -251,12 +251,12 @@ module Holidays
|
|
251
251
|
# between the years 1583 and 1699 10 days are added to the julian day count
|
252
252
|
when (year >= 1583 and year <= 1699)
|
253
253
|
offset = 10
|
254
|
-
# 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).
|
254
|
+
# 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).
|
255
255
|
# Safe until 4100 AD, when one leap day will be removed.
|
256
|
-
when year >= 1700
|
256
|
+
when year >= 1700
|
257
257
|
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
|
258
258
|
end
|
259
|
-
# add offset to the julian day
|
259
|
+
# add offset to the julian day
|
260
260
|
return Date.jd(j_date.jd + offset)
|
261
261
|
end
|
262
262
|
|
@@ -278,7 +278,11 @@ module Holidays
|
|
278
278
|
# Move Boxing Day if it falls on a weekend, leaving room for Christmas.
|
279
279
|
# Used as a callback function.
|
280
280
|
def self.to_weekday_if_boxing_weekend(date)
|
281
|
-
|
281
|
+
if date.wday == 6 or date.wday == 0
|
282
|
+
date += 2
|
283
|
+
elsif date.wday == 1
|
284
|
+
date += 1
|
285
|
+
end
|
282
286
|
date
|
283
287
|
end
|
284
288
|
|
@@ -290,7 +294,7 @@ module Holidays
|
|
290
294
|
date -= 1 if date.wday == 6
|
291
295
|
date
|
292
296
|
end
|
293
|
-
|
297
|
+
|
294
298
|
# Returns an array of symbols all the available holiday definitions.
|
295
299
|
#
|
296
300
|
# Optional `full_path` param is used internally for loading all the definitions.
|
@@ -298,7 +302,12 @@ module Holidays
|
|
298
302
|
paths = Dir.glob(DEFINITION_PATH + '/*.rb')
|
299
303
|
full_path ? paths : paths.collect { |path| path.match(/([a-z_-]+)\.rb/i)[1].to_sym }
|
300
304
|
end
|
301
|
-
|
305
|
+
|
306
|
+
# Returns an array of symbols of all the available holiday regions.
|
307
|
+
def self.regions
|
308
|
+
@@regions
|
309
|
+
end
|
310
|
+
|
302
311
|
# Load all available holiday definitions
|
303
312
|
def self.load_all
|
304
313
|
self.available(true).each { |path| require path }
|
@@ -314,7 +323,7 @@ private
|
|
314
323
|
return regions, observed, informal
|
315
324
|
end
|
316
325
|
|
317
|
-
# Check regions against list of supported regions and return an array of
|
326
|
+
# Check regions against list of supported regions and return an array of
|
318
327
|
# symbols.
|
319
328
|
#
|
320
329
|
# If a wildcard region is found (e.g. <tt>:ca_</tt>) it is expanded into all
|
@@ -329,17 +338,31 @@ private
|
|
329
338
|
regions.delete_if do |reg|
|
330
339
|
if reg.to_s =~ /_$/
|
331
340
|
prefix = reg.to_s.split('_').first
|
332
|
-
|
341
|
+
unless @@regions.include?(prefix.to_sym)
|
342
|
+
begin
|
343
|
+
require "holidays/#{prefix}"
|
344
|
+
rescue LoadError
|
345
|
+
raise UnknownRegionError, "Could not load holidays/#{prefix}"
|
346
|
+
end
|
347
|
+
end
|
333
348
|
regions << @@regions.select { |dr| dr.to_s =~ Regexp.new("^#{reg}") }
|
334
349
|
true
|
335
350
|
end
|
336
351
|
end
|
337
352
|
|
338
353
|
regions.flatten!
|
339
|
-
|
354
|
+
|
340
355
|
require "holidays/north_america" if regions.include?(:us) # special case for north_america/US cross-linking
|
341
356
|
|
342
|
-
|
357
|
+
regions.each do |r|
|
358
|
+
unless r == :any or @@regions.include?(r)
|
359
|
+
begin
|
360
|
+
require "holidays/#{r.to_s}"
|
361
|
+
rescue LoadError => e
|
362
|
+
raise UnknownRegionError, "Could not load holidays/#{r}"
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
343
366
|
regions
|
344
367
|
end
|
345
368
|
|
@@ -350,7 +373,7 @@ private
|
|
350
373
|
# When requesting :ca, holidays in :ca but not its subregions should be returned.
|
351
374
|
def self.in_region?(requested, available) # :nodoc:
|
352
375
|
return true if requested.include?(:any)
|
353
|
-
|
376
|
+
|
354
377
|
# When an underscore is encountered, derive the parent regions
|
355
378
|
# symbol and include both in the requested array.
|
356
379
|
requested = requested.collect do |r|
|
@@ -369,16 +392,16 @@ private
|
|
369
392
|
# ==== Benchmarks
|
370
393
|
#
|
371
394
|
# Lookup Easter Sunday, with caching, by number of iterations:
|
372
|
-
#
|
395
|
+
#
|
373
396
|
# user system total real
|
374
397
|
# 0001 0.000000 0.000000 0.000000 ( 0.000000)
|
375
398
|
# 0010 0.000000 0.000000 0.000000 ( 0.000000)
|
376
399
|
# 0100 0.078000 0.000000 0.078000 ( 0.078000)
|
377
400
|
# 1000 0.641000 0.000000 0.641000 ( 0.641000)
|
378
401
|
# 5000 3.172000 0.015000 3.187000 ( 3.219000)
|
379
|
-
#
|
402
|
+
#
|
380
403
|
# Lookup Easter Sunday, without caching, by number of iterations:
|
381
|
-
#
|
404
|
+
#
|
382
405
|
# user system total real
|
383
406
|
# 0001 0.000000 0.000000 0.000000 ( 0.000000)
|
384
407
|
# 0010 0.016000 0.000000 0.016000 ( 0.016000)
|
@@ -435,7 +458,7 @@ class Date
|
|
435
458
|
holidays && !holidays.empty?
|
436
459
|
end
|
437
460
|
|
438
|
-
# Calculate day of the month based on the week number and the day of the
|
461
|
+
# Calculate day of the month based on the week number and the day of the
|
439
462
|
# week.
|
440
463
|
#
|
441
464
|
# ==== Parameters
|
@@ -476,11 +499,11 @@ class Date
|
|
476
499
|
if week > 0
|
477
500
|
return ((week - 1) * 7) + 1 + ((wday - Date.civil(year, month,(week-1)*7 + 1).wday) % 7)
|
478
501
|
end
|
479
|
-
|
502
|
+
|
480
503
|
days = MONTH_LENGTHS[month-1]
|
481
504
|
|
482
505
|
days = 29 if month == 2 and Date.leap?(year)
|
483
|
-
|
506
|
+
|
484
507
|
return days - ((Date.civil(year, month, days).wday - wday + 7) % 7) - (7 * (week.abs - 1))
|
485
508
|
end
|
486
|
-
end
|
509
|
+
end
|
data/lib/holidays/MANIFEST
CHANGED
@@ -1,34 +1,45 @@
|
|
1
1
|
==== Regional definitions
|
2
2
|
The following definition files are included in this installation:
|
3
3
|
|
4
|
-
* holidays/
|
4
|
+
* holidays/ar
|
5
5
|
* holidays/at
|
6
|
-
* holidays/nz
|
7
|
-
* holidays/nl
|
8
|
-
* holidays/dk
|
9
|
-
* holidays/cz
|
10
|
-
* holidays/scandinavia
|
11
|
-
* holidays/no
|
12
|
-
* holidays/pt
|
13
|
-
* holidays/nyse
|
14
|
-
* holidays/it
|
15
|
-
* holidays/united_nations
|
16
6
|
* holidays/au
|
17
|
-
* holidays/
|
18
|
-
* holidays/
|
19
|
-
* holidays/
|
20
|
-
* holidays/
|
21
|
-
* holidays/
|
22
|
-
* holidays/
|
23
|
-
* holidays/
|
7
|
+
* holidays/be
|
8
|
+
* holidays/br
|
9
|
+
* holidays/ca
|
10
|
+
* holidays/ch
|
11
|
+
* holidays/cz
|
12
|
+
* holidays/de
|
13
|
+
* holidays/dk
|
24
14
|
* holidays/el
|
15
|
+
* holidays/es
|
25
16
|
* holidays/europe
|
26
|
-
* holidays/
|
17
|
+
* holidays/federal_reserve
|
18
|
+
* holidays/fi
|
19
|
+
* holidays/fr
|
27
20
|
* holidays/gb
|
28
|
-
* holidays/
|
21
|
+
* holidays/hr
|
22
|
+
* holidays/hu
|
23
|
+
* holidays/ie
|
24
|
+
* holidays/is
|
25
|
+
* holidays/it
|
29
26
|
* holidays/jp
|
30
|
-
* holidays/
|
31
|
-
* holidays/
|
32
|
-
* holidays/
|
33
|
-
* holidays/
|
27
|
+
* holidays/li
|
28
|
+
* holidays/ma
|
29
|
+
* holidays/mx
|
30
|
+
* holidays/nerc
|
31
|
+
* holidays/nl
|
32
|
+
* holidays/no
|
33
|
+
* holidays/north_america
|
34
|
+
* holidays/nyse
|
35
|
+
* holidays/nz
|
34
36
|
* holidays/pl
|
37
|
+
* holidays/pt
|
38
|
+
* holidays/ro
|
39
|
+
* holidays/scandinavia
|
40
|
+
* holidays/se
|
41
|
+
* holidays/united_nations
|
42
|
+
* holidays/ups
|
43
|
+
* holidays/us
|
44
|
+
* holidays/ve
|
45
|
+
* holidays/za
|
data/lib/holidays/ar.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Holidays
|
3
|
+
# This file is generated by the Ruby Holidays gem.
|
4
|
+
#
|
5
|
+
# Definitions loaded: data/ar.yaml
|
6
|
+
#
|
7
|
+
# To use the definitions in this file, load it right after you load the
|
8
|
+
# Holiday gem:
|
9
|
+
#
|
10
|
+
# require 'holidays'
|
11
|
+
# require 'holidays/ar'
|
12
|
+
#
|
13
|
+
# All the definitions are available at https://github.com/alexdunae/holidays
|
14
|
+
module AR # :nodoc:
|
15
|
+
def self.defined_regions
|
16
|
+
[:ar]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.holidays_by_month
|
20
|
+
{
|
21
|
+
0 => [{:function => lambda { |year| Holidays.easter(year)-3 }, :function_id => "easter(year)-3", :name => "Jueves Santo", :regions => [:ar]},
|
22
|
+
{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Viernes Santo", :regions => [:ar]}],
|
23
|
+
1 => [{:mday => 1, :name => "Año Nuevo", :regions => [:ar]}],
|
24
|
+
3 => [{:mday => 24, :name => "Día Nacional de la Memoria por la Verdad y la Justicia", :regions => [:ar]}],
|
25
|
+
4 => [{:mday => 2, :name => "Día del Veterano y de los Caídos en la Guerra de Malvinas", :regions => [:ar]}],
|
26
|
+
5 => [{:mday => 1, :name => "Día del Trabajador", :regions => [:ar]},
|
27
|
+
{:mday => 25, :name => "Día de la Revolución de Mayo", :regions => [:ar]}],
|
28
|
+
6 => [{:mday => 20, :name => "Día de la Bandera", :regions => [:ar]}],
|
29
|
+
7 => [{:mday => 9, :name => "Día de la Independencia", :regions => [:ar]}],
|
30
|
+
8 => [{:wday => 1, :week => 3, :name => "Paso a la Inmortalidad del General José de San Martín", :regions => [:ar]}],
|
31
|
+
10 => [{:wday => 1, :week => 2, :name => "Día del Respeto a la Diversidad Cultural", :regions => [:ar]}],
|
32
|
+
11 => [{:wday => 1, :week => 4, :name => "Día de la Soberanía nacional", :regions => [:ar]}],
|
33
|
+
12 => [{:mday => 8, :name => "Inmaculada Concepción de María", :regions => [:ar]},
|
34
|
+
{:mday => 25, :name => "Navidad", :regions => [:ar]}]
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
Holidays.merge_defs(Holidays::AR.defined_regions, Holidays::AR.holidays_by_month)
|
data/lib/holidays/at.rb
CHANGED
@@ -23,12 +23,12 @@ module Holidays
|
|
23
23
|
{:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:at]},
|
24
24
|
{:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:at]}],
|
25
25
|
1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:at]},
|
26
|
-
{:mday => 6, :name => "Heilige Drei
|
26
|
+
{:mday => 6, :name => "Heilige Drei Könige", :regions => [:at]}],
|
27
27
|
5 => [{:mday => 1, :name => "Staatsfeiertag", :regions => [:at]}],
|
28
|
-
8 => [{:mday => 15, :name => "
|
28
|
+
8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:at]}],
|
29
29
|
10 => [{:mday => 26, :name => "Nationalfeiertag", :regions => [:at]}],
|
30
30
|
11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:at]}],
|
31
|
-
12 => [{:mday => 8, :name => "
|
31
|
+
12 => [{:mday => 8, :name => "Mariä Empfägnis", :regions => [:at]},
|
32
32
|
{:mday => 25, :name => "1. Weihnachtstag", :regions => [:at]},
|
33
33
|
{:mday => 26, :name => "2. Weihnachtstag", :regions => [:at]}]
|
34
34
|
}
|
data/lib/holidays/au.rb
CHANGED
@@ -13,13 +13,14 @@ module Holidays
|
|
13
13
|
# All the definitions are available at https://github.com/alexdunae/holidays
|
14
14
|
module AU # :nodoc:
|
15
15
|
def self.defined_regions
|
16
|
-
[:au, :au_tas, :au_wa, :au_vic, :au_qld, :au_nt, :au_act, :
|
16
|
+
[:au, :au_nsw, :au_tas, :au_wa, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_qld_brisbane]
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.holidays_by_month
|
20
20
|
{
|
21
21
|
0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Good Friday", :regions => [:au]},
|
22
22
|
{:function => lambda { |year| Holidays.easter(year)-1 }, :function_id => "easter(year)-1", :name => "Easter Saturday", :regions => [:au]},
|
23
|
+
{:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Easter Sunday", :regions => [:au_nsw]},
|
23
24
|
{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Easter Monday", :regions => [:au]},
|
24
25
|
{:function => lambda { |year| Holidays.easter(year)+2 }, :function_id => "easter(year)+2", :name => "Easter Monday", :regions => [:au_tas]}],
|
25
26
|
1 => [{:mday => 1, :name => "New Year's Day", :regions => [:au]},
|
@@ -28,19 +29,42 @@ module Holidays
|
|
28
29
|
{:wday => 1, :week => 2, :name => "Eight Hours Day", :regions => [:au_tas]},
|
29
30
|
{:wday => 1, :week => 2, :name => "Labour Day", :regions => [:au_vic]}],
|
30
31
|
4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:au]}],
|
31
|
-
5 => [{:
|
32
|
+
5 => [{:function => lambda { |year| Holidays.qld_labour_day_may(year) }, :function_id => "qld_labour_day_may(year)", :name => "Labour Day", :regions => [:au_qld]},
|
32
33
|
{:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]}],
|
33
34
|
6 => [{:wday => 1, :week => 1, :name => "Foundation Day", :regions => [:au_wa]},
|
34
|
-
{:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :
|
35
|
+
{:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_qld, :au_tas, :au_nt, :au_vic]},
|
35
36
|
{:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}],
|
36
37
|
8 => [{:wday => 3, :week => -3, :name => "Ekka", :regions => [:au_qld_brisbane]}],
|
37
|
-
10 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_act, :au_nsw, :au_sa]}
|
38
|
+
10 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_act, :au_nsw, :au_sa]},
|
39
|
+
{:function => lambda { |year| Holidays.qld_labour_day_october(year) }, :function_id => "qld_labour_day_october(year)", :name => "Labour Day", :regions => [:au_qld]},
|
40
|
+
{:function => lambda { |year| Holidays.qld_queens_bday_october(year) }, :function_id => "qld_queens_bday_october(year)", :name => "Queen's Birthday", :regions => [:au_qld]}],
|
38
41
|
12 => [{:mday => 25, :name => "Christmas Day", :regions => [:au]},
|
39
42
|
{:mday => 26, :name => "Boxing Day", :regions => [:au]}]
|
40
43
|
}
|
41
44
|
end
|
42
45
|
end
|
43
46
|
|
47
|
+
# http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
|
48
|
+
# celebrated twice in 2012
|
49
|
+
def self.qld_queens_bday_october(year)
|
50
|
+
year == 2012 ? 1 : nil
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
# http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
|
55
|
+
# changed from may to october after 2012
|
56
|
+
def self.qld_labour_day_may(year)
|
57
|
+
year <= 2012 ? Date.calculate_mday(year, 5, 1, 1) : nil
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
# http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
|
62
|
+
# changed from may to october after 2012
|
63
|
+
def self.qld_labour_day_october(year)
|
64
|
+
year <= 2012 ? nil : Date.calculate_mday(year, 10, 1, 1)
|
65
|
+
end
|
66
|
+
|
67
|
+
|
44
68
|
|
45
69
|
end
|
46
70
|
|