holidays 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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