holidays 2.0.0 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1bc0c740698c7bcfadd4790786cb1608c2376473
4
- data.tar.gz: 2920fa5efbd181e979856a7d0af8e70cdc253d3d
3
+ metadata.gz: aa61e29b2f89d86de3786a510f1fad83961b834c
4
+ data.tar.gz: 7018c5e32b6f23c09daa46f0c8fe397c03e026b9
5
5
  SHA512:
6
- metadata.gz: 9622f1697699f8f9921fb74a5178f809b3f5b0598892d2d3fbb48bf47763cee2152aac30470d0c0c3ab2b917a5069c77f40a0c613be30435abe7fa878525e18c
7
- data.tar.gz: a18c5423a237e3431bd501fc61b0b2200d440e1d43bcb1093862dfc40a40e196b6101aafa4cd7c681632d95ed55b00cbce6a71d8066e234438a4b1d436cb4770
6
+ metadata.gz: 24d5aeae9b85a30eee244197d5f33486c240a8842510b58fa9938c7d5b440d122ebbd2ad7430ec2bceab7827ff066a0b5b1c7c8e698c55e9ba7f6de2a6296f4d
7
+ data.tar.gz: f628f94e2de462f34ff82eb8da002f6a97c16a2a1e185abce30e0a0c325f90ec12168e585778bd235b2e1f0f0dfd729b1c70e60f84ce699c7d63ae996f204c5d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Ruby Holidays Gem CHANGELOG
2
2
 
3
+ ## 2.1.0
4
+
5
+ * Updated Slovak holiday definitions (https://github.com/guitarman)
6
+ * Fix Japanese non-Monday substitute holidays (https://github.com/shuhei)
7
+ * Fixed typo in Slovak holiday definitions (https://github.com/martinsabo)
8
+ * Updated New Zealand definitions to reflect new weekend-to-monday rules (https://github.com/SebastianEdwards)
9
+ * Fix Australian definitions (https://github.com/ghiculescu)
10
+
3
11
  ## 2.0.0
4
12
 
5
13
  * Add test coverage
data/README.md CHANGED
@@ -12,7 +12,7 @@ To install the gem from RubyGems:
12
12
 
13
13
  gem install holidays
14
14
 
15
- The Holidays gem is tested on Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.0, REE and JRuby.
15
+ The Holidays gem is tested on Ruby 1.9.2, 1.9.3, 2.0.0, 2.1.0, 2.2.0 and JRuby.
16
16
 
17
17
  ## Time zones
18
18
 
@@ -104,6 +104,8 @@ If you are checking holidays regularly you can cache your results for improved p
104
104
 
105
105
  Holidays for the regions specified within the dates specified will be pre-calculated.
106
106
 
107
+ See the [original pull request](https://github.com/alexdunae/holidays/pull/36) for more details.
108
+
107
109
  ### How to contribute
108
110
 
109
111
  To make changes to any of the definitions, edit the YAML files only.
data/data/au.yaml CHANGED
@@ -15,14 +15,11 @@ months:
15
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
- regions: [au_nsw]
18
+ regions: [au_nsw, au_vic]
19
19
  function: easter(year)
20
20
  - name: Easter Monday
21
21
  regions: [au]
22
22
  function: easter(year)+1
23
- - name: Easter Monday
24
- regions: [au_tas]
25
- function: easter(year)+2
26
23
  1:
27
24
  - name: New Year's Day
28
25
  regions: [au]
@@ -50,10 +47,20 @@ months:
50
47
  regions: [au_vic]
51
48
  week: 2
52
49
  wday: 1
50
+ - name: March Public Holiday
51
+ regions: [au_sa]
52
+ function: march_pub_hol_sa(year)
53
53
  4:
54
54
  - name: ANZAC Day
55
55
  regions: [au]
56
56
  mday: 25
57
+ - name: ANZAC Day
58
+ regions: [au_nsw, au_vic, au_qld, au_nt, au_act, au_sa, au_tas]
59
+ mday: 25
60
+ observed: to_monday_if_sunday
61
+ - name: ANZAC Day
62
+ regions: [au_wa]
63
+ mday: 25
57
64
  observed: to_monday_if_weekend
58
65
  5:
59
66
  - name: Labour Day
@@ -63,6 +70,9 @@ months:
63
70
  regions: [au_nt]
64
71
  week: 1
65
72
  wday: 1
73
+ - name: May Public Holiday
74
+ regions: [au_sa]
75
+ function: may_pub_hol_sa(year)
66
76
  6:
67
77
  - name: Foundation Day
68
78
  regions: [au_wa]
@@ -164,6 +174,26 @@ methods:
164
174
  fourth_sat_in_oct = Date.civil(year, 10, Date.calculate_mday(year, 10, 4, :saturday))
165
175
  fourth_sat_in_oct - 2 # the thursday before
166
176
  end
177
+ march_pub_hol_sa: |
178
+ # http://www.safework.sa.gov.au/show_page.jsp?id=2483#.VQ9Mfmb8-8E
179
+ # The Holidays Act 1910 provides for the third Monday in May to be a public holiday. Since 2006 this public holiday has been observed on the second Monday in March through the issuing of a special Proclamation by the Governor.
180
+ def self.march_pub_hol_sa(year)
181
+ if year < 2006
182
+ nil
183
+ else
184
+ Date.civil(year, 3, Date.calculate_mday(year, 3, :second, :monday))
185
+ end
186
+ end
187
+ may_pub_hol_sa: |
188
+ # http://www.safework.sa.gov.au/show_page.jsp?id=2483#.VQ9Mfmb8-8E
189
+ # The Holidays Act 1910 provides for the third Monday in May to be a public holiday. Since 2006 this public holiday has been observed on the second Monday in March through the issuing of a special Proclamation by the Governor.
190
+ def self.may_pub_hol_sa(year)
191
+ if year >= 2006
192
+ nil
193
+ else
194
+ Date.civil(year, 5, Date.calculate_mday(year, 5, :third, :monday))
195
+ end
196
+ end
167
197
  tests: |
168
198
  {Date.civil(2007,1,1) => 'New Year\'s Day',
169
199
  Date.civil(2007,1,26) => 'Australia Day',
@@ -234,4 +264,18 @@ tests: |
234
264
  assert_equal 'Royal Hobart Regatta', Date.civil(2012, 2, 13).holidays(:au_tas_south)[0][:name]
235
265
  assert_equal 'Royal Hobart Regatta', Date.civil(2014, 2, 10).holidays(:au_tas_south)[0][:name]
236
266
  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]
267
+ assert_equal 'Royal Hobart Regatta', Date.civil(2016, 2, 8).holidays(:au_tas_south)[0][:name]
268
+
269
+ assert_equal "May Public Holiday", Date.civil(2005, 5, 16).holidays(:au_sa)[0][:name]
270
+ assert_equal [], Date.civil(2014, 5, 19).holidays(:au_sa)
271
+
272
+ assert_equal [], Date.civil(2005, 3, 14).holidays(:au_sa)
273
+ assert_equal "March Public Holiday", Date.civil(2014, 3, 10).holidays(:au_sa)[0][:name]
274
+ assert_equal "March Public Holiday", Date.civil(2015, 3, 9).holidays(:au_sa)[0][:name]
275
+ assert_equal "March Public Holiday", Date.civil(2016, 3, 14).holidays(:au_sa)[0][:name]
276
+ assert_equal "March Public Holiday", Date.civil(2017, 3, 13).holidays(:au_sa)[0][:name]
277
+
278
+ assert_equal "ANZAC Day", Date.civil(2015, 4, 25).holidays(:au_qld)[0][:name]
279
+ assert_equal "ANZAC Day", Date.civil(2015, 4, 25).holidays(:au_wa)[0][:name]
280
+ assert_equal [], Date.civil(2015, 4, 27).holidays(:au_qld, :observed)
281
+ assert_equal "ANZAC Day", Date.civil(2015, 4, 27).holidays(:au_wa, :observed)[0][:name]
data/data/jp.yaml CHANGED
@@ -9,6 +9,7 @@
9
9
  # CHANGES:
10
10
  # 2010-12-25: Initial version by Tatsuki Sugiura <sugi@nemui.org>
11
11
  # 2014-11-09: Added substitute holiday by Yoshiyuki Hirano <yoshiyuki.hirano@henteco-labs.com>
12
+ # 2015-05-10: Non-Monday substitute holidays by Shuhei Kagawa <shuhei.kagawa@gmail.com>
12
13
  #
13
14
  ---
14
15
  months:
@@ -57,6 +58,9 @@ months:
57
58
  - name: 振替休日
58
59
  regions: [jp]
59
60
  function: jp_substitute_holiday(year, 5, 3)
61
+ - name: 振替休日
62
+ regions: [jp]
63
+ function: jp_substitute_holiday(year, 5, 4)
60
64
  - name: 振替休日
61
65
  regions: [jp]
62
66
  function: jp_substitute_holiday(year, 5, 5)
@@ -165,7 +169,14 @@ methods:
165
169
  jp_substitute_holiday: |
166
170
  def self.jp_substitute_holiday(*date)
167
171
  date = date[0].kind_of?(Date) ? date.first : Date.civil(*date)
168
- date.wday == 0 ? date+1 : nil
172
+ date.wday == 0 ? Holidays.jp_next_weekday(date+1) : nil
173
+ end
174
+ jp_next_weekday(date): |
175
+ def self.jp_next_weekday(date)
176
+ is_holiday = Holidays::JP.holidays_by_month[date.month].any? do |holiday|
177
+ holiday[:mday] == date.day
178
+ end
179
+ date.wday == 0 || is_holiday ? Holidays.jp_next_weekday(date+1) : date
169
180
  end
170
181
  tests: |
171
182
  {Date.civil(2008,1,1) => '元日',
@@ -183,6 +194,9 @@ tests: |
183
194
  Date.civil(2010,3,22) => '振替休日',
184
195
  Date.civil(2008,11,24) => '振替休日',
185
196
  Date.civil(2012,1,2) => '振替休日',
197
+ Date.civil(2013,5,6) => '振替休日',
198
+ Date.civil(2014,5,6) => '振替休日',
199
+ Date.civil(2015,5,6) => '振替休日'
186
200
  }.each do |date, name|
187
201
  assert_equal name, (Holidays.on(date, :jp, :informal)[0] || {})[:name]
188
202
  end
data/data/nz.yaml CHANGED
@@ -46,6 +46,7 @@ months:
46
46
  - name: Waitangi Day
47
47
  regions: [nz]
48
48
  mday: 6
49
+ observed: to_monday_if_weekend
49
50
  3:
50
51
  - name: Otago Anniversary Day
51
52
  regions: [nz_ot]
@@ -59,6 +60,7 @@ months:
59
60
  - name: ANZAC Day
60
61
  regions: [nz]
61
62
  mday: 25
63
+ observed: to_monday_if_weekend
62
64
  6:
63
65
  - name: Queen's Birthday
64
66
  regions: [nz]
@@ -117,6 +119,14 @@ tests: |
117
119
  Date.civil(2007,12,26) => 'Boxing Day'}.each do |date, name|
118
120
  assert_equal name, (Holidays.on(date, :nz, :informal)[0] || {})[:name]
119
121
  end
122
+ assert_equal 'ANZAC Day', Date.civil(2015, 4, 25).holidays(:nz)[0][:name]
123
+ assert_equal 'ANZAC Day', Date.civil(2015, 4, 27).holidays(:nz, :observed)[0][:name]
124
+ assert_equal 'ANZAC Day', Date.civil(2016, 4, 25).holidays(:nz)[0][:name]
125
+ assert_equal 'ANZAC Day', Date.civil(2016, 4, 25).holidays(:nz, :observed)[0][:name]
126
+ assert_equal 'Waitangi Day', Date.civil(2015, 2, 6).holidays(:nz)[0][:name]
127
+ assert_equal 'Waitangi Day', Date.civil(2015, 2, 6).holidays(:nz, :observed)[0][:name]
128
+ assert_equal 'Waitangi Day', Date.civil(2016, 2, 6).holidays(:nz)[0][:name]
129
+ assert_equal 'Waitangi Day', Date.civil(2016, 2, 8).holidays(:nz, :observed)[0][:name]
120
130
  methods:
121
131
  closest_monday: |
122
132
  def self.closest_monday(date)
@@ -138,4 +148,4 @@ methods:
138
148
  next_week: |
139
149
  def self.next_week(date)
140
150
  date + 7
141
- end
151
+ end
data/data/sk.yaml CHANGED
@@ -3,9 +3,9 @@
3
3
  # Updated: 2013-12-26.
4
4
  # Sources:
5
5
  # - http://sk.wikipedia.org/wiki/Slovensk%C3%A9_%C5%A1t%C3%A1tne_sviatky
6
- ---
6
+ ---
7
7
  months:
8
- 0:
8
+ 0:
9
9
  - name: Veľkonočný pondelok
10
10
  regions: [sk]
11
11
  function: easter(year)+1
@@ -16,11 +16,14 @@ months:
16
16
  - name: Nový rok
17
17
  regions: [sk]
18
18
  mday: 1
19
+ - name: Zjavenie Pána (Traja králi)
20
+ regions: [sk]
21
+ mday: 6
19
22
  5:
20
23
  - name: Sviatok práce
21
24
  regions: [sk]
22
25
  mday: 1
23
- - name: Deň víťazstva
26
+ - name: Deň víťazstva nad fašizmom
24
27
  regions: [sk]
25
28
  mday: 8
26
29
  7:
@@ -52,15 +55,16 @@ months:
52
55
  - name: 1. sviatok vianočný
53
56
  regions: [sk]
54
57
  mday: 25
55
- - name: 2. sviatek vianočný
58
+ - name: 2. sviatok vianočný
56
59
  regions: [sk]
57
60
  mday: 26
58
61
  tests: |
59
62
  {Date.civil(2013,1,1) => 'Nový rok',
63
+ Date.civil(2013,1,6) => 'Zjavenie Pána (Traja králi)',
60
64
  Date.civil(2013,3,29) => 'Veľký piatok',
61
65
  Date.civil(2013,4,1) => 'Veľkonočný pondelok',
62
66
  Date.civil(2013,5,1) => 'Sviatok práce',
63
- Date.civil(2013,5,8) => 'Deň víťazstva',
67
+ Date.civil(2013,5,8) => 'Deň víťazstva nad fašizmom',
64
68
  Date.civil(2013,7,5) => 'Sviatok svätého Cyrila a svätého Metoda',
65
69
  Date.civil(2013,8,29) => 'Výročie Slovenského národného povstania',
66
70
  Date.civil(2013,9,1) => 'Deň Ústavy Slovenskej republiky',
@@ -69,6 +73,6 @@ tests: |
69
73
  Date.civil(2013,11,17) => 'Deň boja za slobodu a demokraciu',
70
74
  Date.civil(2013,12,24) => 'Štedrý deň',
71
75
  Date.civil(2013,12,25) => '1. sviatok vianočný',
72
- Date.civil(2013,12,26) => '2. sviatek vianočný'}.each do |date, name|
76
+ Date.civil(2013,12,26) => '2. sviatok vianočný'}.each do |date, name|
73
77
  assert_equal name, (Holidays.on(date, :sk, :informal)[0] || {})[:name]
74
78
  end
data/lib/holidays/au.rb CHANGED
@@ -13,25 +13,28 @@ 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_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_qld_brisbane, :au_qld_cairns, :au_tas, :au_tas_south, :au_wa, :au_tas_north]
16
+ [:au, :au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_qld_brisbane, :au_qld_cairns, :au_tas_south, :au_wa, :au_tas, :au_tas_north]
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_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_qld_brisbane, :au_qld_cairns]},
23
- {:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Easter Sunday", :regions => [:au_nsw]},
24
- {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Easter Monday", :regions => [:au]},
25
- {:function => lambda { |year| Holidays.easter(year)+2 }, :function_id => "easter(year)+2", :name => "Easter Monday", :regions => [:au_tas]}],
23
+ {:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Easter Sunday", :regions => [:au_nsw, :au_vic]},
24
+ {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Easter Monday", :regions => [:au]}],
26
25
  1 => [{:mday => 1, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "New Year's Day", :regions => [:au]},
27
26
  {:mday => 26, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "Australia Day", :regions => [:au]}],
28
27
  2 => [{:wday => 1, :week => 2, :name => "Royal Hobart Regatta", :regions => [:au_tas_south]}],
29
28
  3 => [{:wday => 1, :week => 1, :name => "Labour Day", :regions => [:au_wa]},
30
29
  {:wday => 1, :week => 2, :name => "Eight Hours Day", :regions => [:au_tas]},
31
- {:wday => 1, :week => 2, :name => "Labour Day", :regions => [:au_vic]}],
32
- 4 => [{:mday => 25, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "ANZAC Day", :regions => [:au]}],
30
+ {:wday => 1, :week => 2, :name => "Labour Day", :regions => [:au_vic]},
31
+ {:function => lambda { |year| Holidays.march_pub_hol_sa(year) }, :function_id => "march_pub_hol_sa(year)", :name => "March Public Holiday", :regions => [:au_sa]}],
32
+ 4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:au]},
33
+ {:mday => 25, :observed => lambda { |date| Holidays.to_monday_if_sunday(date) }, :observed_id => "to_monday_if_sunday", :name => "ANZAC Day", :regions => [:au_nsw, :au_vic, :au_qld, :au_nt, :au_act, :au_sa, :au_tas]},
34
+ {:mday => 25, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "ANZAC Day", :regions => [:au_wa]}],
33
35
  5 => [{:function => lambda { |year| Holidays.qld_labour_day_may(year) }, :function_id => "qld_labour_day_may(year)", :name => "Labour Day", :regions => [:au_qld]},
34
- {:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]}],
36
+ {:wday => 1, :week => 1, :name => "May Day", :regions => [:au_nt]},
37
+ {:function => lambda { |year| Holidays.may_pub_hol_sa(year) }, :function_id => "may_pub_hol_sa(year)", :name => "May Public Holiday", :regions => [:au_sa]}],
35
38
  6 => [{:wday => 1, :week => 1, :name => "Foundation Day", :regions => [:au_wa]},
36
39
  {:wday => 1, :week => 2, :name => "Queen's Birthday", :regions => [:au_act, :au_nsw, :au_sa, :au_qld, :au_tas, :au_nt, :au_vic]},
37
40
  {:mday => 6, :type => :informal, :name => "Queensland Day", :regions => [:au_qld]}],
@@ -88,6 +91,28 @@ def self.hobart_show_day(year)
88
91
  end
89
92
 
90
93
 
94
+ # http://www.safework.sa.gov.au/show_page.jsp?id=2483#.VQ9Mfmb8-8E
95
+ # The Holidays Act 1910 provides for the third Monday in May to be a public holiday. Since 2006 this public holiday has been observed on the second Monday in March through the issuing of a special Proclamation by the Governor.
96
+ def self.march_pub_hol_sa(year)
97
+ if year < 2006
98
+ nil
99
+ else
100
+ Date.civil(year, 3, Date.calculate_mday(year, 3, :second, :monday))
101
+ end
102
+ end
103
+
104
+
105
+ # http://www.safework.sa.gov.au/show_page.jsp?id=2483#.VQ9Mfmb8-8E
106
+ # The Holidays Act 1910 provides for the third Monday in May to be a public holiday. Since 2006 this public holiday has been observed on the second Monday in March through the issuing of a special Proclamation by the Governor.
107
+ def self.may_pub_hol_sa(year)
108
+ if year >= 2006
109
+ nil
110
+ else
111
+ Date.civil(year, 5, Date.calculate_mday(year, 5, :third, :monday))
112
+ end
113
+ end
114
+
115
+
91
116
 
92
117
  end
93
118
 
@@ -173,6 +173,7 @@ module Holidays
173
173
  {:mday => 1, :name => "Anul nou", :regions => [:ro]},
174
174
  {:mday => 2, :name => "Anul nou", :regions => [:ro]},
175
175
  {:mday => 1, :name => "Nový rok", :regions => [:sk]},
176
+ {:mday => 6, :name => "Zjavenie Pána (Traja králi)", :regions => [:sk]},
176
177
  {:mday => 1, :name => "novo leto", :regions => [:si]}],
177
178
  5 => [{:mday => 1, :name => "Staatsfeiertag", :regions => [:at]},
178
179
  {:mday => 1, :name => "Fête du travail", :regions => [:be]},
@@ -210,7 +211,7 @@ module Holidays
210
211
  {:mday => 1, :name => "Dia do Trabalhador", :regions => [:pt]},
211
212
  {:mday => 1, :name => "Ziua muncii", :regions => [:ro]},
212
213
  {:mday => 1, :name => "Sviatok práce", :regions => [:sk]},
213
- {:mday => 8, :name => "Deň víťazstva", :regions => [:sk]},
214
+ {:mday => 8, :name => "Deň víťazstva nas fašizmom", :regions => [:sk]},
214
215
  {:mday => 1, :name => "praznik dela", :regions => [:si]},
215
216
  {:mday => 2, :name => "praznik dela", :regions => [:si]}],
216
217
  8 => [{:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:at]},
@@ -343,7 +344,7 @@ module Holidays
343
344
  {:mday => 26, :name => "Sărbătoarea Nașterii Domnului", :regions => [:ro]},
344
345
  {:mday => 24, :name => "Štedrý deň", :regions => [:sk]},
345
346
  {:mday => 25, :name => "1. sviatok vianočný", :regions => [:sk]},
346
- {:mday => 26, :name => "2. sviatek vianočný", :regions => [:sk]},
347
+ {:mday => 26, :name => "2. sviatok vianočný", :regions => [:sk]},
347
348
  {:mday => 25, :name => "božič", :regions => [:si]},
348
349
  {:mday => 26, :name => "dan samostojnosti in enotnosti", :regions => [:si]}],
349
350
  7 => [{:mday => 21, :name => "Fête nationale", :regions => [:be]},
data/lib/holidays/jp.rb CHANGED
@@ -31,6 +31,7 @@ module Holidays
31
31
  {:mday => 4, :name => "みどりの日", :regions => [:jp]},
32
32
  {:mday => 5, :name => "こどもの日", :regions => [:jp]},
33
33
  {:function => lambda { |year| Holidays.jp_substitute_holiday(year, 5, 3) }, :function_id => "jp_substitute_holiday(year, 5, 3)", :name => "振替休日", :regions => [:jp]},
34
+ {:function => lambda { |year| Holidays.jp_substitute_holiday(year, 5, 4) }, :function_id => "jp_substitute_holiday(year, 5, 4)", :name => "振替休日", :regions => [:jp]},
34
35
  {:function => lambda { |year| Holidays.jp_substitute_holiday(year, 5, 5) }, :function_id => "jp_substitute_holiday(year, 5, 5)", :name => "振替休日", :regions => [:jp]}],
35
36
  7 => [{:wday => 1, :week => 3, :name => "海の日", :regions => [:jp]},
36
37
  {:function => lambda { |year| Holidays.jp_substitute_holiday(year, 7, Date.calculate_mday(year, 7, 3, 1)) }, :function_id => "jp_substitute_holiday(year, 7, Date.calculate_mday(year, 7, 3, 1))", :name => "振替休日", :regions => [:jp]}],
@@ -104,7 +105,15 @@ end
104
105
 
105
106
  def self.jp_substitute_holiday(*date)
106
107
  date = date[0].kind_of?(Date) ? date.first : Date.civil(*date)
107
- date.wday == 0 ? date+1 : nil
108
+ date.wday == 0 ? Holidays.jp_next_weekday(date+1) : nil
109
+ end
110
+
111
+
112
+ def self.jp_next_weekday(date)
113
+ is_holiday = Holidays::JP.holidays_by_month[date.month].any? do |holiday|
114
+ holiday[:mday] == date.day
115
+ end
116
+ date.wday == 0 || is_holiday ? Holidays.jp_next_weekday(date+1) : date
108
117
  end
109
118
 
110
119
 
data/lib/holidays/nz.rb CHANGED
@@ -28,10 +28,10 @@ module Holidays
28
28
  {:mday => 29, :observed => lambda { |date| Holidays.closest_monday(date) }, :observed_id => "closest_monday", :name => "Auckland Anniversary Day", :regions => [:nz_ak]},
29
29
  {:mday => 29, :observed => lambda { |date| Holidays.closest_monday(date) }, :observed_id => "closest_monday", :name => "Northland Anniversary Day", :regions => [:nz_nl]}],
30
30
  2 => [{:mday => 1, :observed => lambda { |date| Holidays.closest_monday(date) }, :observed_id => "closest_monday", :name => "Nelson Anniversary Day", :regions => [:nz_ak]},
31
- {:mday => 6, :name => "Waitangi Day", :regions => [:nz]}],
31
+ {:mday => 6, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "Waitangi Day", :regions => [:nz]}],
32
32
  3 => [{:mday => 23, :observed => lambda { |date| Holidays.closest_monday(date) }, :observed_id => "closest_monday", :name => "Otago Anniversary Day", :regions => [:nz_ot]},
33
33
  {:wday => 1, :week => 2, :name => "Taranaki Anniversary Day", :regions => [:nz_ak]}],
34
- 4 => [{:mday => 25, :name => "ANZAC Day", :regions => [:nz]}],
34
+ 4 => [{:mday => 25, :observed => lambda { |date| Holidays.to_monday_if_weekend(date) }, :observed_id => "to_monday_if_weekend", :name => "ANZAC Day", :regions => [:nz]}],
35
35
  6 => [{:wday => 1, :week => 1, :name => "Queen's Birthday", :regions => [:nz]}],
36
36
  9 => [{:wday => 1, :week => 4, :name => "Dominion Day", :regions => [:nz_sc]}],
37
37
  10 => [{:wday => 1, :week => 1, :observed => lambda { |date| Holidays.previous_friday(date) }, :observed_id => "previous_friday", :name => "Hawke's bay Anniversary Day", :regions => [:nz_hb]},
@@ -68,6 +68,7 @@ def self.next_week(date)
68
68
  end
69
69
 
70
70
 
71
+
71
72
  end
72
73
 
73
74
  Holidays.merge_defs(Holidays::NZ.defined_regions, Holidays::NZ.holidays_by_month)
data/lib/holidays/sk.rb CHANGED
@@ -20,9 +20,10 @@ module Holidays
20
20
  {
21
21
  0 => [{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Veľkonočný pondelok", :regions => [:sk]},
22
22
  {:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Veľký piatok", :regions => [:sk]}],
23
- 1 => [{:mday => 1, :name => "Nový rok", :regions => [:sk]}],
23
+ 1 => [{:mday => 1, :name => "Nový rok", :regions => [:sk]},
24
+ {:mday => 6, :name => "Zjavenie Pána (Traja králi)", :regions => [:sk]}],
24
25
  5 => [{:mday => 1, :name => "Sviatok práce", :regions => [:sk]},
25
- {:mday => 8, :name => "Deň víťazstva", :regions => [:sk]}],
26
+ {:mday => 8, :name => "Deň víťazstva nad fašizmom", :regions => [:sk]}],
26
27
  7 => [{:mday => 5, :name => "Sviatok svätého Cyrila a svätého Metoda", :regions => [:sk]}],
27
28
  8 => [{:mday => 29, :name => "Výročie Slovenského národného povstania", :regions => [:sk]}],
28
29
  9 => [{:mday => 1, :name => "Deň Ústavy Slovenskej republiky", :regions => [:sk]},
@@ -31,7 +32,7 @@ module Holidays
31
32
  {:mday => 17, :name => "Deň boja za slobodu a demokraciu", :regions => [:sk]}],
32
33
  12 => [{:mday => 24, :name => "Štedrý deň", :regions => [:sk]},
33
34
  {:mday => 25, :name => "1. sviatok vianočný", :regions => [:sk]},
34
- {:mday => 26, :name => "2. sviatek vianočný", :regions => [:sk]}]
35
+ {:mday => 26, :name => "2. sviatok vianočný", :regions => [:sk]}]
35
36
  }
36
37
  end
37
38
  end
@@ -1,3 +1,3 @@
1
1
  module Holidays
2
- VERSION = '2.0.0'
2
+ VERSION = '2.1.0'
3
3
  end
@@ -77,5 +77,19 @@ assert_equal 'Royal Hobart Regatta', Date.civil(2012, 2, 13).holidays(:au_tas_so
77
77
  assert_equal 'Royal Hobart Regatta', Date.civil(2014, 2, 10).holidays(:au_tas_south)[0][:name]
78
78
  assert_equal 'Royal Hobart Regatta', Date.civil(2015, 2, 9).holidays(:au_tas_south)[0][:name]
79
79
  assert_equal 'Royal Hobart Regatta', Date.civil(2016, 2, 8).holidays(:au_tas_south)[0][:name]
80
+
81
+ assert_equal "May Public Holiday", Date.civil(2005, 5, 16).holidays(:au_sa)[0][:name]
82
+ assert_equal [], Date.civil(2014, 5, 19).holidays(:au_sa)
83
+
84
+ assert_equal [], Date.civil(2005, 3, 14).holidays(:au_sa)
85
+ assert_equal "March Public Holiday", Date.civil(2014, 3, 10).holidays(:au_sa)[0][:name]
86
+ assert_equal "March Public Holiday", Date.civil(2015, 3, 9).holidays(:au_sa)[0][:name]
87
+ assert_equal "March Public Holiday", Date.civil(2016, 3, 14).holidays(:au_sa)[0][:name]
88
+ assert_equal "March Public Holiday", Date.civil(2017, 3, 13).holidays(:au_sa)[0][:name]
89
+
90
+ assert_equal "ANZAC Day", Date.civil(2015, 4, 25).holidays(:au_qld)[0][:name]
91
+ assert_equal "ANZAC Day", Date.civil(2015, 4, 25).holidays(:au_wa)[0][:name]
92
+ assert_equal [], Date.civil(2015, 4, 27).holidays(:au_qld, :observed)
93
+ assert_equal "ANZAC Day", Date.civil(2015, 4, 27).holidays(:au_wa, :observed)[0][:name]
80
94
  end
81
95
  end
@@ -669,10 +669,11 @@ end
669
669
 
670
670
 
671
671
  {Date.civil(2013,1,1) => 'Nový rok',
672
+ Date.civil(2013,1,6) => 'Zjavenie Pána (Traja králi)',
672
673
  Date.civil(2013,3,29) => 'Veľký piatok',
673
674
  Date.civil(2013,4,1) => 'Veľkonočný pondelok',
674
675
  Date.civil(2013,5,1) => 'Sviatok práce',
675
- Date.civil(2013,5,8) => 'Deň víťazstva',
676
+ Date.civil(2013,5,8) => 'Deň víťazstva nad fašizmom',
676
677
  Date.civil(2013,7,5) => 'Sviatok svätého Cyrila a svätého Metoda',
677
678
  Date.civil(2013,8,29) => 'Výročie Slovenského národného povstania',
678
679
  Date.civil(2013,9,1) => 'Deň Ústavy Slovenskej republiky',
@@ -681,7 +682,7 @@ end
681
682
  Date.civil(2013,11,17) => 'Deň boja za slobodu a demokraciu',
682
683
  Date.civil(2013,12,24) => 'Štedrý deň',
683
684
  Date.civil(2013,12,25) => '1. sviatok vianočný',
684
- Date.civil(2013,12,26) => '2. sviatek vianočný'}.each do |date, name|
685
+ Date.civil(2013,12,26) => '2. sviatok vianočný'}.each do |date, name|
685
686
  assert_equal name, (Holidays.on(date, :sk, :informal)[0] || {})[:name]
686
687
  end
687
688
 
@@ -22,6 +22,9 @@ class JpDefinitionTests < Test::Unit::TestCase # :nodoc:
22
22
  Date.civil(2010,3,22) => '振替休日',
23
23
  Date.civil(2008,11,24) => '振替休日',
24
24
  Date.civil(2012,1,2) => '振替休日',
25
+ Date.civil(2013,5,6) => '振替休日',
26
+ Date.civil(2014,5,6) => '振替休日',
27
+ Date.civil(2015,5,6) => '振替休日'
25
28
  }.each do |date, name|
26
29
  assert_equal name, (Holidays.on(date, :jp, :informal)[0] || {})[:name]
27
30
  end
@@ -17,6 +17,14 @@ class NzDefinitionTests < Test::Unit::TestCase # :nodoc:
17
17
  Date.civil(2007,12,26) => 'Boxing Day'}.each do |date, name|
18
18
  assert_equal name, (Holidays.on(date, :nz, :informal)[0] || {})[:name]
19
19
  end
20
+ assert_equal 'ANZAC Day', Date.civil(2015, 4, 25).holidays(:nz)[0][:name]
21
+ assert_equal 'ANZAC Day', Date.civil(2015, 4, 27).holidays(:nz, :observed)[0][:name]
22
+ assert_equal 'ANZAC Day', Date.civil(2016, 4, 25).holidays(:nz)[0][:name]
23
+ assert_equal 'ANZAC Day', Date.civil(2016, 4, 25).holidays(:nz, :observed)[0][:name]
24
+ assert_equal 'Waitangi Day', Date.civil(2015, 2, 6).holidays(:nz)[0][:name]
25
+ assert_equal 'Waitangi Day', Date.civil(2015, 2, 6).holidays(:nz, :observed)[0][:name]
26
+ assert_equal 'Waitangi Day', Date.civil(2016, 2, 6).holidays(:nz)[0][:name]
27
+ assert_equal 'Waitangi Day', Date.civil(2016, 2, 8).holidays(:nz, :observed)[0][:name]
20
28
 
21
29
  end
22
30
  end
@@ -8,10 +8,11 @@ class SkDefinitionTests < Test::Unit::TestCase # :nodoc:
8
8
 
9
9
  def test_sk
10
10
  {Date.civil(2013,1,1) => 'Nový rok',
11
+ Date.civil(2013,1,6) => 'Zjavenie Pána (Traja králi)',
11
12
  Date.civil(2013,3,29) => 'Veľký piatok',
12
13
  Date.civil(2013,4,1) => 'Veľkonočný pondelok',
13
14
  Date.civil(2013,5,1) => 'Sviatok práce',
14
- Date.civil(2013,5,8) => 'Deň víťazstva',
15
+ Date.civil(2013,5,8) => 'Deň víťazstva nad fašizmom',
15
16
  Date.civil(2013,7,5) => 'Sviatok svätého Cyrila a svätého Metoda',
16
17
  Date.civil(2013,8,29) => 'Výročie Slovenského národného povstania',
17
18
  Date.civil(2013,9,1) => 'Deň Ústavy Slovenskej republiky',
@@ -20,7 +21,7 @@ class SkDefinitionTests < Test::Unit::TestCase # :nodoc:
20
21
  Date.civil(2013,11,17) => 'Deň boja za slobodu a demokraciu',
21
22
  Date.civil(2013,12,24) => 'Štedrý deň',
22
23
  Date.civil(2013,12,25) => '1. sviatok vianočný',
23
- Date.civil(2013,12,26) => '2. sviatek vianočný'}.each do |date, name|
24
+ Date.civil(2013,12,26) => '2. sviatok vianočný'}.each do |date, name|
24
25
  assert_equal name, (Holidays.on(date, :sk, :informal)[0] || {})[:name]
25
26
  end
26
27
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holidays
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dunae
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-06 00:00:00.000000000 Z
11
+ date: 2015-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler