ri_state_holidays 0.1.0 → 0.1.2
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 +7 -0
- data/README.md +6 -0
- data/lib/ri_state_holidays.rb +12 -7
- data/ri_state_holidays.gemspec +4 -4
- data/spec/ri_state_holidays_spec.rb +25 -20
- data/spec/spec_helper.rb +1 -1
- metadata +17 -29
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 27b0452f71bc567689c0bbd5b433bce3ea18be15
|
|
4
|
+
data.tar.gz: 08398f9a809ad09a951adb311c7ded5c6ef1127a
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: a38ef1249b1c85e69699c4bfd03d55923080564596098a904bcef0629241b1aa5f4eb67651903993c2f6d07d43daba265b95192ea0551812d9e4966852a3895f
|
|
7
|
+
data.tar.gz: fa84791c444292cc3a15d0bd10174201e15588124abd027bb71f0d333fa4b04182e687072f9c993d88741164bb78c7734ef3ddd4c93de607fb1c19aea081d329
|
data/README.md
CHANGED
|
@@ -5,3 +5,9 @@ Calculate Rhode Island state holidays and observances
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
7
7
|
RiStateHolidays.holiday? Date.today [true or false]
|
|
8
|
+
|
|
9
|
+
## Sources
|
|
10
|
+
|
|
11
|
+
* http://sos.ri.gov/library/stateholidays/
|
|
12
|
+
* http://www.hr.ri.gov/
|
|
13
|
+
* http://webserver.rilin.state.ri.us/Statutes/TITLE25/25-1/25-1-1.HTM
|
data/lib/ri_state_holidays.rb
CHANGED
|
@@ -34,9 +34,6 @@ module RiStateHolidays
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
private
|
|
38
|
-
|
|
39
|
-
|
|
40
37
|
def self.between(start_date, end_date, *options)
|
|
41
38
|
# remove the timezone
|
|
42
39
|
start_date = start_date.new_offset(0) + start_date.offset if start_date.respond_to?(:new_offset)
|
|
@@ -143,12 +140,14 @@ module RiStateHolidays
|
|
|
143
140
|
]
|
|
144
141
|
}
|
|
145
142
|
end
|
|
143
|
+
private_class_method :get_holidays_by_month
|
|
146
144
|
|
|
147
145
|
|
|
148
146
|
# January 20, every fourth year, following Presidential election
|
|
149
147
|
def self.us_inauguration_day(year)
|
|
150
148
|
year % 4 == 1 ? 20 : nil
|
|
151
149
|
end
|
|
150
|
+
private_class_method :us_inauguration_day
|
|
152
151
|
|
|
153
152
|
|
|
154
153
|
# Return the Tuesday after the first Monday
|
|
@@ -168,13 +167,15 @@ module RiStateHolidays
|
|
|
168
167
|
|
|
169
168
|
return nil
|
|
170
169
|
end
|
|
170
|
+
private_class_method :us_election_day
|
|
171
171
|
|
|
172
172
|
|
|
173
173
|
def self.to_weekday_if_weekend(date)
|
|
174
174
|
date += 1 if date.wday == 0
|
|
175
|
-
date
|
|
175
|
+
date += 2 if date.wday == 6
|
|
176
176
|
date
|
|
177
177
|
end
|
|
178
|
+
private_class_method :to_weekday_if_weekend
|
|
178
179
|
|
|
179
180
|
|
|
180
181
|
def self.calculate_mday(year, month, week, wday)
|
|
@@ -191,18 +192,22 @@ module RiStateHolidays
|
|
|
191
192
|
if week > 0
|
|
192
193
|
return ((week - 1) * 7) + 1 + ((wday - Date.civil(year, month,(week-1)*7 + 1).wday) % 7)
|
|
193
194
|
end
|
|
194
|
-
|
|
195
|
+
|
|
195
196
|
days = MONTH_LENGTHS[month-1]
|
|
196
197
|
|
|
197
198
|
days = 29 if month == 2 and Date.leap?(year)
|
|
198
|
-
|
|
199
|
+
|
|
199
200
|
return days - ((Date.civil(year, month, days).wday - wday + 7) % 7) - (7 * (week.abs - 1))
|
|
200
201
|
end
|
|
202
|
+
private_class_method :calculate_mday
|
|
203
|
+
|
|
201
204
|
|
|
202
205
|
def self.call_proc(function, year) # :nodoc:
|
|
203
206
|
proc_key = Digest::MD5.hexdigest("#{function.to_s}_#{year.to_s}")
|
|
204
207
|
function.call(year)
|
|
205
208
|
end
|
|
209
|
+
private_class_method :call_proc
|
|
210
|
+
|
|
206
211
|
|
|
207
212
|
def self.parse_options(options)
|
|
208
213
|
regions = [:us_ri]
|
|
@@ -210,6 +215,6 @@ module RiStateHolidays
|
|
|
210
215
|
informal = nil
|
|
211
216
|
return regions, observed, informal
|
|
212
217
|
end
|
|
213
|
-
|
|
218
|
+
private_class_method :parse_options
|
|
214
219
|
|
|
215
220
|
end
|
data/ri_state_holidays.gemspec
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |gem|
|
|
4
|
-
gem.authors = ["
|
|
5
|
-
gem.email = ["
|
|
4
|
+
gem.authors = ["Joe Alba"]
|
|
5
|
+
gem.email = ["joe@joealba.com"]
|
|
6
6
|
gem.description = %q{Calculate Rhode Island state holidays}
|
|
7
7
|
gem.summary = %q{Based off the Holidays Ruby gem -- but without altering the Date class}
|
|
8
8
|
gem.homepage = ""
|
|
@@ -13,8 +13,8 @@ Gem::Specification.new do |gem|
|
|
|
13
13
|
gem.name = "ri_state_holidays"
|
|
14
14
|
gem.require_paths = ["lib"]
|
|
15
15
|
|
|
16
|
-
gem.version = '0.1.
|
|
16
|
+
gem.version = '0.1.2'
|
|
17
17
|
|
|
18
|
-
gem.add_development_dependency "rspec"
|
|
18
|
+
gem.add_development_dependency "rspec", ">= 3.0.0"
|
|
19
19
|
gem.add_development_dependency "rake"
|
|
20
20
|
end
|
|
@@ -4,19 +4,19 @@ describe RiStateHolidays do
|
|
|
4
4
|
|
|
5
5
|
describe "easy day-of-month holidays" do
|
|
6
6
|
it "knows New Years Day" do
|
|
7
|
-
RiStateHolidays.holiday?(Date.new(2013, 1, 1)).
|
|
7
|
+
expect(RiStateHolidays.holiday?(Date.new(2013, 1, 1))).to eq(true)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
it "knows Independence Day" do
|
|
11
|
-
RiStateHolidays.holiday?(Date.new(2012, 7, 4)).
|
|
11
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 7, 4))).to eq(true)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it "knows Christmas" do
|
|
15
|
-
RiStateHolidays.holiday?(Date.new(2012, 12, 25)).
|
|
15
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 12, 25))).to eq(true)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it "knows a non-holiday" do
|
|
19
|
-
RiStateHolidays.holiday?(Date.new(2012, 2, 28)).
|
|
19
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 2, 28))).to eq(false)
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
@@ -24,43 +24,48 @@ describe RiStateHolidays do
|
|
|
24
24
|
describe "observed holidays" do
|
|
25
25
|
# When any legal holiday falls on a Sunday, the day following it is a full holiday.
|
|
26
26
|
it "observed New Years from a Sunday" do
|
|
27
|
-
RiStateHolidays.holiday?(Date.new(2012, 1, 2)).
|
|
27
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 1, 2))).to eq(true)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it "observed Veterans Day from a Sunday" do
|
|
31
|
-
RiStateHolidays.holiday?(Date.new(2012, 11, 12)).
|
|
31
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 11, 12))).to eq(true)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'observed a Saturday holiday on the following Monday, not the previous Friday' do
|
|
35
|
+
expect(RiStateHolidays.holiday?(Date.new(2015, 7, 3))).to eq(false)
|
|
36
|
+
expect(RiStateHolidays.holiday?(Date.new(2015, 7, 6))).to eq(true)
|
|
32
37
|
end
|
|
33
38
|
end
|
|
34
39
|
|
|
35
40
|
|
|
36
41
|
describe "calculated holidays" do
|
|
37
42
|
it "knows Veteran's Day" do
|
|
38
|
-
RiStateHolidays.holiday?(Date.new(2013, 11, 11)).
|
|
39
|
-
RiStateHolidays.holiday?(Date.new(2014, 11, 11)).
|
|
43
|
+
expect(RiStateHolidays.holiday?(Date.new(2013, 11, 11))).to eq(true)
|
|
44
|
+
expect(RiStateHolidays.holiday?(Date.new(2014, 11, 11))).to eq(true)
|
|
40
45
|
end
|
|
41
46
|
|
|
42
47
|
it "knows Victory Day" do
|
|
43
|
-
RiStateHolidays.holiday?(Date.new(2012, 8, 13)).
|
|
44
|
-
RiStateHolidays.holiday?(Date.new(2013, 8, 12)).
|
|
45
|
-
RiStateHolidays.holiday?(Date.new(2014, 8, 11)).
|
|
48
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 8, 13))).to eq(true)
|
|
49
|
+
expect(RiStateHolidays.holiday?(Date.new(2013, 8, 12))).to eq(true)
|
|
50
|
+
expect(RiStateHolidays.holiday?(Date.new(2014, 8, 11))).to eq(true)
|
|
46
51
|
end
|
|
47
52
|
|
|
48
53
|
it "knows Labor Day" do
|
|
49
|
-
RiStateHolidays.holiday?(Date.new(2012, 9, 3)).
|
|
50
|
-
RiStateHolidays.holiday?(Date.new(2013, 9, 2)).
|
|
51
|
-
RiStateHolidays.holiday?(Date.new(2014, 9, 1)).
|
|
54
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 9, 3))).to eq(true)
|
|
55
|
+
expect(RiStateHolidays.holiday?(Date.new(2013, 9, 2))).to eq(true)
|
|
56
|
+
expect(RiStateHolidays.holiday?(Date.new(2014, 9, 1))).to eq(true)
|
|
52
57
|
end
|
|
53
58
|
|
|
54
59
|
it "knows election day" do
|
|
55
|
-
RiStateHolidays.holiday?(Date.new(2012, 11, 6)).
|
|
56
|
-
RiStateHolidays.holiday?(Date.new(2013, 11, 5)).
|
|
57
|
-
RiStateHolidays.holiday?(Date.new(2014, 11, 4)).
|
|
60
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 11, 6))).to eq(true)
|
|
61
|
+
expect(RiStateHolidays.holiday?(Date.new(2013, 11, 5))).to eq(false)
|
|
62
|
+
expect(RiStateHolidays.holiday?(Date.new(2014, 11, 4))).to eq(true)
|
|
58
63
|
end
|
|
59
64
|
|
|
60
65
|
it "knows Thanksgiving" do
|
|
61
|
-
RiStateHolidays.holiday?(Date.new(2012, 11, 22)).
|
|
62
|
-
RiStateHolidays.holiday?(Date.new(2013, 11, 28)).
|
|
63
|
-
RiStateHolidays.holiday?(Date.new(2014, 11, 27)).
|
|
66
|
+
expect(RiStateHolidays.holiday?(Date.new(2012, 11, 22))).to eq(true)
|
|
67
|
+
expect(RiStateHolidays.holiday?(Date.new(2013, 11, 28))).to eq(true)
|
|
68
|
+
expect(RiStateHolidays.holiday?(Date.new(2014, 11, 27))).to eq(true)
|
|
64
69
|
end
|
|
65
70
|
end
|
|
66
71
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,58 +1,53 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ri_state_holidays
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.1.2
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
|
-
-
|
|
7
|
+
- Joe Alba
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2015-11-10 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: rspec
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
16
|
requirements:
|
|
19
|
-
- -
|
|
17
|
+
- - ">="
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
|
-
version:
|
|
19
|
+
version: 3.0.0
|
|
22
20
|
type: :development
|
|
23
21
|
prerelease: false
|
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
23
|
requirements:
|
|
27
|
-
- -
|
|
24
|
+
- - ">="
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
|
-
version:
|
|
26
|
+
version: 3.0.0
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
|
31
28
|
name: rake
|
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
30
|
requirements:
|
|
35
|
-
- -
|
|
31
|
+
- - ">="
|
|
36
32
|
- !ruby/object:Gem::Version
|
|
37
33
|
version: '0'
|
|
38
34
|
type: :development
|
|
39
35
|
prerelease: false
|
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
37
|
requirements:
|
|
43
|
-
- -
|
|
38
|
+
- - ">="
|
|
44
39
|
- !ruby/object:Gem::Version
|
|
45
40
|
version: '0'
|
|
46
41
|
description: Calculate Rhode Island state holidays
|
|
47
42
|
email:
|
|
48
|
-
-
|
|
43
|
+
- joe@joealba.com
|
|
49
44
|
executables:
|
|
50
45
|
- ri_state_holiday
|
|
51
46
|
extensions: []
|
|
52
47
|
extra_rdoc_files: []
|
|
53
48
|
files:
|
|
54
|
-
- .gitignore
|
|
55
|
-
- .rspec
|
|
49
|
+
- ".gitignore"
|
|
50
|
+
- ".rspec"
|
|
56
51
|
- Gemfile
|
|
57
52
|
- LICENSE
|
|
58
53
|
- README.md
|
|
@@ -64,33 +59,26 @@ files:
|
|
|
64
59
|
- spec/spec_helper.rb
|
|
65
60
|
homepage: ''
|
|
66
61
|
licenses: []
|
|
62
|
+
metadata: {}
|
|
67
63
|
post_install_message:
|
|
68
64
|
rdoc_options: []
|
|
69
65
|
require_paths:
|
|
70
66
|
- lib
|
|
71
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
72
|
-
none: false
|
|
73
68
|
requirements:
|
|
74
|
-
- -
|
|
69
|
+
- - ">="
|
|
75
70
|
- !ruby/object:Gem::Version
|
|
76
71
|
version: '0'
|
|
77
|
-
segments:
|
|
78
|
-
- 0
|
|
79
|
-
hash: 2455822407572811696
|
|
80
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
|
-
none: false
|
|
82
73
|
requirements:
|
|
83
|
-
- -
|
|
74
|
+
- - ">="
|
|
84
75
|
- !ruby/object:Gem::Version
|
|
85
76
|
version: '0'
|
|
86
|
-
segments:
|
|
87
|
-
- 0
|
|
88
|
-
hash: 2455822407572811696
|
|
89
77
|
requirements: []
|
|
90
78
|
rubyforge_project:
|
|
91
|
-
rubygems_version:
|
|
79
|
+
rubygems_version: 2.4.8
|
|
92
80
|
signing_key:
|
|
93
|
-
specification_version:
|
|
81
|
+
specification_version: 4
|
|
94
82
|
summary: Based off the Holidays Ruby gem -- but without altering the Date class
|
|
95
83
|
test_files:
|
|
96
84
|
- spec/ri_state_holidays_spec.rb
|