holidays 1.0.8 → 1.1.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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +19 -0
  4. data/Rakefile +1 -2
  5. data/data/au.yaml +81 -1
  6. data/data/ca.yaml +40 -3
  7. data/data/cr.yaml +63 -0
  8. data/data/federal_reserve.yaml +4 -28
  9. data/data/fedex.yaml +56 -0
  10. data/data/index.yaml +2 -0
  11. data/data/jp.yaml +8 -1
  12. data/lib/holidays.rb +219 -0
  13. data/lib/holidays/MANIFEST +2 -0
  14. data/lib/holidays/ar.rb +1 -1
  15. data/lib/holidays/at.rb +1 -1
  16. data/lib/holidays/au.rb +27 -4
  17. data/lib/holidays/be.rb +1 -1
  18. data/lib/holidays/br.rb +1 -1
  19. data/lib/holidays/ca.rb +6 -3
  20. data/lib/holidays/ch.rb +1 -1
  21. data/lib/holidays/cl.rb +1 -1
  22. data/lib/holidays/cr.rb +39 -0
  23. data/lib/holidays/cz.rb +1 -1
  24. data/lib/holidays/de.rb +2 -2
  25. data/lib/holidays/dk.rb +1 -1
  26. data/lib/holidays/ecb_target.rb +1 -1
  27. data/lib/holidays/el.rb +1 -1
  28. data/lib/holidays/es.rb +1 -1
  29. data/lib/holidays/europe.rb +75 -32
  30. data/lib/holidays/fed_ex.rb +36 -0
  31. data/lib/holidays/federal_reserve.rb +5 -8
  32. data/lib/holidays/fi.rb +1 -1
  33. data/lib/holidays/fr.rb +1 -1
  34. data/lib/holidays/gb.rb +1 -1
  35. data/lib/holidays/hr.rb +1 -1
  36. data/lib/holidays/hu.rb +1 -1
  37. data/lib/holidays/ie.rb +1 -1
  38. data/lib/holidays/is.rb +1 -1
  39. data/lib/holidays/it.rb +1 -1
  40. data/lib/holidays/jp.rb +3 -2
  41. data/lib/holidays/li.rb +1 -1
  42. data/lib/holidays/lt.rb +1 -1
  43. data/lib/holidays/ma.rb +1 -1
  44. data/lib/holidays/mx.rb +1 -1
  45. data/lib/holidays/nerc.rb +1 -1
  46. data/lib/holidays/nl.rb +1 -1
  47. data/lib/holidays/no.rb +1 -1
  48. data/lib/holidays/north_america.rb +8 -5
  49. data/lib/holidays/nyse.rb +1 -1
  50. data/lib/holidays/nz.rb +1 -1
  51. data/lib/holidays/pl.rb +1 -1
  52. data/lib/holidays/pt.rb +1 -1
  53. data/lib/holidays/ro.rb +1 -1
  54. data/lib/holidays/scandinavia.rb +18 -11
  55. data/lib/holidays/se.rb +1 -1
  56. data/lib/holidays/sg.rb +1 -1
  57. data/lib/holidays/si.rb +1 -1
  58. data/lib/holidays/sk.rb +1 -1
  59. data/lib/holidays/united_nations.rb +3 -3
  60. data/lib/holidays/ups.rb +1 -1
  61. data/lib/holidays/us.rb +1 -1
  62. data/lib/holidays/ve.rb +1 -1
  63. data/lib/holidays/version.rb +1 -1
  64. data/lib/holidays/vi.rb +1 -1
  65. data/lib/holidays/za.rb +1 -1
  66. data/test/data/test_custom_govt_holiday_defs.yaml +5 -0
  67. data/test/data/test_multiple_custom_holiday_defs.yaml +9 -0
  68. data/test/data/test_single_custom_holiday_defs.yaml +9 -0
  69. data/test/defs/test_defs_au.rb +32 -0
  70. data/test/defs/test_defs_ca.rb +25 -0
  71. data/test/defs/test_defs_cr.rb +22 -0
  72. data/test/defs/test_defs_de.rb +6 -6
  73. data/test/defs/test_defs_europe.rb +24 -0
  74. data/test/defs/test_defs_fed_ex.rb +21 -0
  75. data/test/defs/test_defs_federal_reserve.rb +2 -15
  76. data/test/defs/test_defs_jp.rb +1 -0
  77. data/test/defs/test_defs_north_america.rb +25 -0
  78. data/test/defs/test_defs_united_nations.rb +12 -0
  79. data/test/test_custom_holidays.rb +35 -0
  80. data/test/test_parse_definitions.rb +24 -0
  81. metadata +22 -3
  82. data/data/build_defs.rb +0 -157
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dcfe36fdf6e053184b4e01f9fb8379b2bb3e485d
4
- data.tar.gz: 35935e8eaf4daabcb40102eb025cb6c88dca4d47
3
+ metadata.gz: a6ab4b51615aa61fac469c01fb99d7d94ad6d876
4
+ data.tar.gz: 4ee8ff425142c2e74de1ca88784679af0a0c99a5
5
5
  SHA512:
6
- metadata.gz: c5b671008022b80ceaf7f385e7e44f95a5100f18fe401c3558777b1b988ef20e325033736b345037280e5b3206275074cea4ca8e7efe2dcbe0198fd399bc5902
7
- data.tar.gz: 7522fa306023cb3d48808cfc3a40cf9e82c56df7e3f967fe10be7e54363c1160aa449a3621d16d56e1e18e5ff621fe7af79cc7ad6d8a1230f54753117a0ef4bc
6
+ metadata.gz: e430c6651f9fd96b2c5ec24fccc1e3f8ac93d11e7726e5f6d4c9265296cfd2ad4bc41da5b629f93d883f0ef05f90471f5a37215585747d76d89be708ad78d259
7
+ data.tar.gz: e586b641f155808fbfd03ce5a0af6207a890aa55c7fbb514be390e6082110a894d1fa69f82af44ac999b80bca568298c18468227646ff46a49dbc3a8e86d33c9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Ruby Holidays Gem CHANGELOG
2
2
 
3
+ ## 1.1.0
4
+
5
+ * Add support to load custom holidays on the fly
6
+ * Add hobart & launceston show days (https://github.com/ghiculescu)
7
+ * Add Melbourne Cup day (https://github.com/ghiculescu)
8
+ * Add Hobart Regatte Day (https://github.com/ghiculescu)
9
+ * Add Costa Rican holidays (https://github.com/kevinwmerritt)
10
+ * Update Canadian Holidays (https://github.com/KevinBrowne)
11
+ * Add substitute holidays for Japan (https://github.com/YoshiyukiHirano)
12
+ * Fix USA Federal Reserve Holidays
13
+ * Add FedEx holidays (https://github.com/adamrunner)
14
+
3
15
  ## 1.0.7
4
16
 
5
17
  * Load parent region even when sub region is not explicitly defined (https://github.com/csage)
data/README.md CHANGED
@@ -53,6 +53,25 @@ Get informal holidays in February.
53
53
  Holidays.between(from, to, :informal)
54
54
  => [{:name => 'Valentine\'s Day',...}]
55
55
 
56
+ ### Loading Custom Definitions on the fly
57
+
58
+ Load custom definitions file on the fly and use them immediately.
59
+
60
+ Load custom 'Company Founding' holiday on June 1st:
61
+
62
+ Holidays.load_custom('/home/user/holiday_definitions/custom_holidays.yaml')
63
+
64
+ date = Date.civil(2013,6,1)
65
+
66
+ Holidays.on(date, :my_custom_region)
67
+ => [{:name => 'Company Founding',...}]
68
+
69
+ Custom definition files must match the format of the existing definition YAML files location in the 'data' directory.
70
+
71
+ Multiple files can also be passed:
72
+
73
+ Holidays.load_custom('/home/user/holidays/custom_holidays1.yaml', '/home/user/holidays/custom_holidays2.yaml')
74
+
56
75
  ### Extending Ruby's Date class
57
76
 
58
77
  Check which holidays occur in Iceland on January 1, 2008.
data/Rakefile CHANGED
@@ -5,7 +5,6 @@ require 'rake/testtask'
5
5
  require 'yaml'
6
6
  require 'fileutils'
7
7
  require 'holidays'
8
- require File.expand_path('data/build_defs')
9
8
 
10
9
  Rake::TestTask.new(:test) do |t|
11
10
  t.libs << 'test'
@@ -29,7 +28,7 @@ namespace :generate do
29
28
  puts "Building #{region} definition module:"
30
29
  files = files.collect { |f| "#{DATA_PATH}/#{f}" }.uniq
31
30
 
32
- module_src, test_src = parse_holiday_defs(region, files)
31
+ module_src, test_src = Holidays.parse_definition_files_and_return_source(region, files)
33
32
  File.open("lib/holidays/#{region.downcase.to_s}.rb","w") do |file|
34
33
  file.puts module_src
35
34
  end
data/data/au.yaml CHANGED
@@ -12,7 +12,7 @@ months:
12
12
  regions: [au]
13
13
  function: easter(year)-2
14
14
  - name: Easter Saturday
15
- regions: [au_nsw, au_vic, au_qld, au_nt, au_act, au_sa, au_qld_brisbane]
15
+ regions: [au_nsw, au_vic, au_qld, au_nt, au_act, au_sa, au_qld_brisbane, au_qld_cairns]
16
16
  function: easter(year)-1
17
17
  - name: Easter Sunday
18
18
  regions: [au_nsw]
@@ -32,6 +32,11 @@ months:
32
32
  regions: [au]
33
33
  mday: 26
34
34
  observed: to_monday_if_weekend
35
+ 2:
36
+ - name: Royal Hobart Regatta
37
+ regions: [au_tas_south]
38
+ week: 2
39
+ wday: 1
35
40
  3:
36
41
  - name: Labour Day
37
42
  regions: [au_wa]
@@ -71,11 +76,25 @@ months:
71
76
  regions: [au_qld]
72
77
  mday: 6
73
78
  type: informal
79
+ 7:
80
+ - name: Cairns Show
81
+ regions: [au_qld_cairns]
82
+ week: 3
83
+ wday: 5
74
84
  8:
75
85
  - name: Ekka
76
86
  regions: [au_qld_brisbane]
77
87
  week: -3
78
88
  wday: 3
89
+ 9:
90
+ - name: Queen's Birthday
91
+ regions: [au_wa]
92
+ week: -1
93
+ wday: 1
94
+ - name: "Family & Community Day"
95
+ regions: [au_act]
96
+ week: -1
97
+ wday: 1
79
98
  10:
80
99
  - name: Labour Day
81
100
  regions: [au_act, au_nsw, au_sa]
@@ -89,6 +108,21 @@ months:
89
108
  regions: [au_qld]
90
109
  function: qld_queens_bday_october(year)
91
110
  observed: to_monday_if_weekend
111
+ - name: Royal Hobart Show
112
+ regions: [au_tas_south]
113
+ function: hobart_show_day(year)
114
+ 11:
115
+ - name: G20 Day
116
+ regions: [au_qld_brisbane]
117
+ function: g20_day_2014_only(year)
118
+ - name: Recreation Day # http://www.timeanddate.com/holidays/australia/recreation-day
119
+ regions: [au_tas_north]
120
+ wday: 1
121
+ week: 1
122
+ - name: Melbourne Cup Day
123
+ regions: [au_vic]
124
+ week: 1
125
+ wday: 2
92
126
  12:
93
127
  - name: Christmas Day
94
128
  regions: [au]
@@ -117,6 +151,19 @@ methods:
117
151
  def self.qld_labour_day_october(year)
118
152
  year <= 2012 ? nil : Date.calculate_mday(year, 10, 1, 1)
119
153
  end
154
+ g20_day_2014_only: |
155
+ # http://www.justice.qld.gov.au/fair-and-safe-work/industrial-relations/public-holidays/dates
156
+ # G20 day in brisbane, in 2014, on november 14
157
+ def self.g20_day_2014_only(year)
158
+ year == 2014 ? 14 : nil
159
+ end
160
+ hobart_show_day: |
161
+ # http://worksafe.tas.gov.au/__data/assets/pdf_file/0008/287036/Public_Holidays_2014.pdf
162
+ # The Thursday before the fourth Saturday in October.
163
+ def self.hobart_show_day(year)
164
+ fourth_sat_in_oct = Date.civil(year, 10, Date.calculate_mday(year, 10, 4, :saturday))
165
+ fourth_sat_in_oct - 2 # the thursday before
166
+ end
120
167
  tests: |
121
168
  {Date.civil(2007,1,1) => 'New Year\'s Day',
122
169
  Date.civil(2007,1,26) => 'Australia Day',
@@ -153,5 +200,38 @@ tests: |
153
200
  assert_equal "Queen's Birthday", Date.civil(2012,10,1).holidays(:au_qld)[0][:name]
154
201
  assert_equal "Queen's Birthday", Date.civil(2013,6,10).holidays(:au_qld)[0][:name]
155
202
 
203
+ assert_equal "Queen's Birthday", Date.civil(2014, 9, 29).holidays(:au_wa)[0][:name]
204
+ assert_equal "Queen's Birthday", Date.civil(2015, 9, 28).holidays(:au_wa)[0][:name]
205
+ assert_equal "Queen's Birthday", Date.civil(2016, 9, 26).holidays(:au_wa)[0][:name]
206
+
207
+ assert_equal "Family & Community Day", Date.civil(2014, 9, 29).holidays(:au_act)[0][:name]
208
+ assert_equal "Family & Community Day", Date.civil(2015, 9, 28).holidays(:au_act)[0][:name]
209
+ assert_equal "Family & Community Day", Date.civil(2016, 9, 26).holidays(:au_act)[0][:name]
210
+
156
211
  assert_equal 'Australia Day', Date.civil(2014,1,26).holidays(:au_qld)[0][:name]
157
212
  assert_equal 'Australia Day', Date.civil(2014,1,27).holidays(:au_qld, :observed)[0][:name]
213
+
214
+ assert_equal 'Cairns Show', Date.civil(2014,7,18).holidays(:au_qld_cairns)[0][:name]
215
+ assert_equal 'Cairns Show', Date.civil(2013,7,19).holidays(:au_qld_cairns)[0][:name]
216
+
217
+ assert_equal 'Royal Hobart Show', Date.civil(2013, 10, 24).holidays(:au_tas_south)[0][:name]
218
+ assert_equal 'Royal Hobart Show', Date.civil(2014, 10, 23).holidays(:au_tas_south)[0][:name]
219
+ assert_equal 'Royal Hobart Show', Date.civil(2015, 10, 22).holidays(:au_tas_south)[0][:name]
220
+ assert_equal 'Royal Hobart Show', Date.civil(2016, 10, 20).holidays(:au_tas_south)[0][:name]
221
+
222
+ assert_equal 'Recreation Day', Date.civil(2013, 11, 4).holidays(:au_tas_north)[0][:name]
223
+ assert_equal 'Recreation Day', Date.civil(2014, 11, 3).holidays(:au_tas_north)[0][:name]
224
+ assert_equal 'Recreation Day', Date.civil(2015, 11, 2).holidays(:au_tas_north)[0][:name]
225
+ assert_equal 'Recreation Day', Date.civil(2016, 11, 7).holidays(:au_tas_north)[0][:name]
226
+
227
+ assert_equal 'G20 Day', Date.civil(2014,11,14).holidays(:au_qld_brisbane)[0][:name]
228
+ assert_equal [], Date.civil(2014,11,14).holidays(:au_qld)
229
+ assert_equal [], Date.civil(2015,11,14).holidays(:au_qld_brisbane)
230
+
231
+ assert_equal 'Melbourne Cup Day', Date.civil(2014,11,4).holidays(:au_vic)[0][:name]
232
+ assert_equal 'Melbourne Cup Day', Date.civil(2015,11,3).holidays(:au_vic)[0][:name]
233
+
234
+ assert_equal 'Royal Hobart Regatta', Date.civil(2012, 2, 13).holidays(:au_tas_south)[0][:name]
235
+ assert_equal 'Royal Hobart Regatta', Date.civil(2014, 2, 10).holidays(:au_tas_south)[0][:name]
236
+ assert_equal 'Royal Hobart Regatta', Date.civil(2015, 2, 9).holidays(:au_tas_south)[0][:name]
237
+ assert_equal 'Royal Hobart Regatta', Date.civil(2016, 2, 8).holidays(:au_tas_south)[0][:name]
data/data/ca.yaml CHANGED
@@ -1,5 +1,5 @@
1
1
  # Canadian holiday definitions for the Ruby Holiday gem.
2
- # Updated 2008-11-21.
2
+ # Updated 2014-11-12.
3
3
  ---
4
4
  months:
5
5
  0:
@@ -29,7 +29,15 @@ months:
29
29
  regions: [ca_mb]
30
30
  wday: 1
31
31
  week: 3
32
- - name: BC Family Day
32
+ - name: Nova Scotia Heritage Day # Ideally would be restricted to 2015 or later
33
+ regions: [ca_ns]
34
+ wday: 1
35
+ week: 3
36
+ - name: Islander Day
37
+ regions: [ca_pe]
38
+ wday: 1
39
+ week: 3
40
+ - name: BC Family Day # Ideally would be restricted to 2013 or later
33
41
  regions: [ca_bc]
34
42
  wday: 1
35
43
  week: 2
@@ -88,7 +96,11 @@ months:
88
96
  wday: 1
89
97
  - name: Civic Holiday
90
98
  week: 1
91
- regions: [ca_on]
99
+ regions: [ca_on, ca_nt, ca_nu, ca_pe] # Appears to be a holiday in Ontario by convention
100
+ wday: 1
101
+ - name: New Brunswick Day
102
+ week: 1
103
+ regions: [ca_nb]
92
104
  wday: 1
93
105
  - name: Discovery Day
94
106
  week: 3
@@ -147,8 +159,33 @@ tests: |
147
159
  assert_equal 'BC Family Day', Holidays.on(date, :ca_bc)[0][:name]
148
160
  end
149
161
 
162
+ # Nova Scotia Heritage Day
163
+ [ Date.civil(2015,2,16), Date.civil(2016,2,15) ].each do |date|
164
+ assert_equal 'Nova Scotia Heritage Day', Holidays.on(date, :ca_ns)[0][:name]
165
+ end
166
+
167
+ # Islander Day in PE
168
+ [ Date.civil(2013,2,18), Date.civil(2014,2,17) ].each do |date|
169
+ assert_equal 'Islander Day', Holidays.on(date, :ca_pe)[0][:name]
170
+ end
171
+
150
172
  # Victoria Day
151
173
  [Date.civil(2004,5,24), Date.civil(2005,5,23), Date.civil(2006,5,22),
152
174
  Date.civil(2007,5,21), Date.civil(2008,5,19)].each do |date|
153
175
  assert_equal 'Victoria Day', Holidays.on(date, :ca)[0][:name]
154
176
  end
177
+
178
+ # First Monday in August
179
+ [Date.civil(2013,8,5), Date.civil(2014,8,4), Date.civil(2015,8,3)].each do |date|
180
+ { :ca_bc => 'BC Day',
181
+ :ca_sk => 'Saskatchewan Day',
182
+ :ca_ab => 'Heritage Day',
183
+ :ca_ns => 'Natal Day',
184
+ :ca_on => 'Civic Holiday',
185
+ :ca_nt => 'Civic Holiday',
186
+ :ca_nu => 'Civic Holiday',
187
+ :ca_pe => 'Civic Holiday',
188
+ :ca_nb => 'New Brunswick Day' }.each do |region, name|
189
+ assert_equal name, Holidays.on(date, region)[0][:name]
190
+ end
191
+ end
data/data/cr.yaml ADDED
@@ -0,0 +1,63 @@
1
+ # Costa Rican holiday definitions for the Ruby Holiday gem.
2
+ #
3
+ #
4
+ # Updated: 2014-11-22.
5
+ #
6
+ # Sources:
7
+ # - http://en.wikipedia.org/wiki/Public_holidays_in_Costa_Rica
8
+ #
9
+ months:
10
+ 0:
11
+ - name: Jueves Santo
12
+ regions: [cr]
13
+ function: easter(year)-3
14
+ - name: Viernes Santo
15
+ regions: [cr]
16
+ function: easter(year)-2
17
+ 1:
18
+ - name: Año Nuevo
19
+ regions: [cr]
20
+ mday: 1
21
+ 4:
22
+ - name: Día de Juan Santamaría
23
+ regions: [cr]
24
+ mday: 11
25
+ 5:
26
+ - name: Día del Trabajador
27
+ regions: [cr]
28
+ mday: 1
29
+ 7:
30
+ - name: Día de la Anexión de Guanacaste
31
+ regions: [cr]
32
+ mday: 25
33
+ 8:
34
+ - name: Día de la Virgen de los Angeles
35
+ regions: [cr]
36
+ mday: 2
37
+ - name: Día de la Madre
38
+ regions: [cr]
39
+ mday: 15
40
+ 9:
41
+ - name: Día de la Independencia
42
+ regions: [cr]
43
+ mday: 15
44
+ 10:
45
+ - name: Día de las Culturas
46
+ regions: [cr]
47
+ mday: 12
48
+ 12:
49
+ - name: Navidad
50
+ regions: [cr]
51
+ mday: 25
52
+ tests: |
53
+ {Date.civil(2015,1,1) => 'Año Nuevo',
54
+ Date.civil(2015,4,11) => 'Día de Juan Santamaría',
55
+ Date.civil(2015,5,1) => 'Día del Trabajador',
56
+ Date.civil(2015,7,25) => 'Día de la Anexión de Guanacaste',
57
+ Date.civil(2015,8,2) => 'Día de la Virgen de los Angeles',
58
+ Date.civil(2015,8,15) => 'Día de la Madre',
59
+ Date.civil(2015,9,15) => 'Día de la Independencia',
60
+ Date.civil(2015,10,12) => 'Día de las Culturas',
61
+ Date.civil(2016,12,25) => 'Navidad'}.each do |date, name|
62
+ assert_equal name, (Holidays.on(date, :cr)[0] || {})[:name]
63
+ end
@@ -1,15 +1,11 @@
1
1
  # Federal reserve holidays definition for the Ruby Holiday gem.
2
2
  #
3
- # Updated: 2012-08-17
3
+ # Updated: 2015-03-16
4
4
  #
5
5
  # Sources:
6
- # -
6
+ # - http://www.federalreserve.gov/aboutthefed/k8.htm
7
7
  ---
8
8
  months:
9
- 0:
10
- - name: Good Friday
11
- function: easter(year)-2
12
- regions: [federal_reserve]
13
9
  1:
14
10
  - name: New Year's Day
15
11
  regions: [federal_reserve]
@@ -57,17 +53,10 @@ months:
57
53
  wday: 4
58
54
  regions: [federal_reserve]
59
55
  12:
60
- - name: Christmas Eve
61
- regions: [federal_reserve]
62
- mday: 24
63
- observed: to_monday_if_sunday
64
56
  - name: Christmas Day
65
57
  regions: [federal_reserve]
66
58
  mday: 25
67
59
  observed: to_monday_if_sunday
68
- - name: New Year's Eve
69
- regions: [federal_reserve]
70
- mday: 31
71
60
  methods:
72
61
  us_inauguration_day: |
73
62
  # January 20, every fourth year, following Presidential election
@@ -80,72 +69,59 @@ tests: |
80
69
  {Date.civil(2012,1,2) => "New Year's Day",
81
70
  Date.civil(2012,1,16) => "Birthday of Martin Luther King, Jr",
82
71
  Date.civil(2012,2,20) => "Washington's Birthday",
83
- Date.civil(2012,4,6) => "Good Friday",
84
72
  Date.civil(2012,5,28) => "Memorial Day",
85
73
  Date.civil(2012,7,4) => "Independence Day",
86
74
  Date.civil(2012,9,3) => "Labor Day",
87
75
  Date.civil(2012,10,8) => "Columbus Day",
88
76
  Date.civil(2012,11,12) => "Veterans Day",
89
77
  Date.civil(2012,11,22) => "Thanksgiving Day",
90
- Date.civil(2012,12,24) => "Christmas Eve",
91
78
  Date.civil(2012,12,25) => "Christmas Day",
92
- Date.civil(2012,12,31) => "New Year's Eve",
93
79
 
94
80
  Date.civil(2013,1,1) => "New Year's Day",
95
81
  Date.civil(2013,1,21) => "Birthday of Martin Luther King, Jr",
96
82
  Date.civil(2013,2,18) => "Washington's Birthday",
97
- Date.civil(2013,3,29) => "Good Friday",
98
83
  Date.civil(2013,5,27) => "Memorial Day",
99
84
  Date.civil(2013,7,4) => "Independence Day",
100
85
  Date.civil(2013,9,2) => "Labor Day",
101
86
  Date.civil(2013,10,14) => "Columbus Day",
102
87
  Date.civil(2013,11,11) => "Veterans Day",
103
88
  Date.civil(2013,11,28) => "Thanksgiving Day",
104
- Date.civil(2013,12,24) => "Christmas Eve",
105
89
  Date.civil(2013,12,25) => "Christmas Day",
106
- Date.civil(2013,12,31) => "New Year's Eve",
107
90
 
108
91
  Date.civil(2014,1,1) => "New Year's Day",
109
92
  Date.civil(2014,1,20) => "Birthday of Martin Luther King, Jr",
110
93
  Date.civil(2014,2,17) => "Washington's Birthday",
111
- Date.civil(2014,4,18) => "Good Friday",
112
94
  Date.civil(2014,5,26) => "Memorial Day",
113
95
  Date.civil(2014,7,4) => "Independence Day",
114
96
  Date.civil(2014,9,1) => "Labor Day",
115
97
  Date.civil(2014,10,13) => "Columbus Day",
116
98
  Date.civil(2014,11,11) => "Veterans Day",
117
99
  Date.civil(2014,11,27) => "Thanksgiving Day",
118
- Date.civil(2014,12,24) => "Christmas Eve",
119
100
  Date.civil(2014,12,25) => "Christmas Day",
120
- Date.civil(2014,12,31) => "New Year's Eve",
121
101
 
122
102
  Date.civil(2015,1,1) => "New Year's Day",
123
103
  Date.civil(2015,1,19) => "Birthday of Martin Luther King, Jr",
124
104
  Date.civil(2015,2,16) => "Washington's Birthday",
125
- Date.civil(2015,4,3) => "Good Friday",
126
105
  Date.civil(2015,5,25) => "Memorial Day",
127
106
  Date.civil(2015,7,4) => "Independence Day",
128
107
  Date.civil(2015,9,7) => "Labor Day",
129
108
  Date.civil(2015,10,12) => "Columbus Day",
130
109
  Date.civil(2015,11,11) => "Veterans Day",
131
110
  Date.civil(2015,11,26) => "Thanksgiving Day",
132
- Date.civil(2015,12,24) => "Christmas Eve",
133
111
  Date.civil(2015,12,25) => "Christmas Day",
134
- Date.civil(2015,12,31) => "New Year's Eve",
135
112
 
136
113
  Date.civil(2016,1,1) => "New Year's Day",
137
114
  Date.civil(2016,1,18) => "Birthday of Martin Luther King, Jr",
138
115
  Date.civil(2016,2,15) => "Washington's Birthday",
139
- Date.civil(2016,3,25) => "Good Friday",
140
116
  Date.civil(2016,5,30) => "Memorial Day",
141
117
  Date.civil(2016,7,4) => "Independence Day",
142
118
  Date.civil(2016,9,5) => "Labor Day",
143
119
  Date.civil(2016,10,10) => "Columbus Day",
144
120
  Date.civil(2016,11,11) => "Veterans Day",
145
121
  Date.civil(2016,11,24) => "Thanksgiving Day",
146
- Date.civil(2016,12,24) => "Christmas Eve",
147
122
  Date.civil(2016,12,26) => "Christmas Day",
148
- Date.civil(2016,12,31) => "New Year's Eve",
123
+
124
+ Date.civil(2017,1, 20) => "Inauguration Day",
149
125
  }.each do |date, name|
150
126
  assert_equal name, (Holidays.on(date, :federal_reserve, :observed)[0] || {})[:name]
151
127
  end
data/data/fedex.yaml ADDED
@@ -0,0 +1,56 @@
1
+ # FedEx holiday definitions for the Ruby Holiday gem.
2
+ #
3
+ # By Adam Runner
4
+ #
5
+ # Updated: 2015-03-09.
6
+ # Source: http://www.fedex.com/us/service-guide/holiday-schedule.html
7
+ ---
8
+ months:
9
+ 1:
10
+ - name: New Year's Day
11
+ regions: [fedex]
12
+ mday: 1
13
+ observed: to_weekday_if_weekend
14
+ 5:
15
+ - name: Memorial Day
16
+ week: -1
17
+ regions: [fedex]
18
+ wday: 1
19
+ 7:
20
+ - name: Independence Day
21
+ regions: [fedex]
22
+ mday: 4
23
+ observed: to_weekday_if_weekend
24
+ 9:
25
+ - name: Labor Day
26
+ week: 1
27
+ regions: [fedex]
28
+ wday: 1
29
+ 11:
30
+ - name: Thanksgiving
31
+ week: 4
32
+ regions: [fedex]
33
+ wday: 4
34
+ - name: Day After Thanksgiving
35
+ week: 4
36
+ regions: [fedex]
37
+ wday: 5
38
+ 12:
39
+ - name: Christmas Day
40
+ regions: [fedex]
41
+ mday: 25
42
+ observed: to_weekday_if_weekend
43
+ - name: New Year's Eve
44
+ regions: [fedex]
45
+ mday: 31
46
+ tests: |
47
+ {Date.civil(2015,1,1) => 'New Year\'s Day',
48
+ Date.civil(2015,5,25) => 'Memorial Day',
49
+ Date.civil(2015,7,4) => 'Independence Day',
50
+ Date.civil(2015,9,7) => 'Labor Day',
51
+ Date.civil(2015,11,26) => 'Thanksgiving',
52
+ Date.civil(2015,11,27) => 'Day After Thanksgiving',
53
+ Date.civil(2015,12,25) => 'Christmas Day',
54
+ Date.civil(2015,12,31) => 'New Year\'s Eve',}.each do |date, name|
55
+ assert_equal name, (Holidays.on(date, :ups)[0] || {})[:name]
56
+ end