us_bank_holidays 0.0.3 → 0.0.4
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 +4 -4
- data/lib/us_bank_holidays/holiday_year.rb +72 -41
- data/lib/us_bank_holidays/version.rb +1 -1
- data/spec/functional/holiday_year_spec.rb +27 -1
- metadata +23 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4921197ea42b26e8e08bf2f4059f034c805e214
|
4
|
+
data.tar.gz: d40a2bbb91cce5c533a7f0056e833ba9bf09ebfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b90aab66fb070972ce928c186233c2ca82066b371691b728cec75b8e4c94a7f9c6c5b09dd4e7bdad9dd37ff4c907f223b789c58acfb299801786801ba92945b7
|
7
|
+
data.tar.gz: 4a944a80069321f13677993dc3a3ff4b386b8dc93c740d657f0b6aa012ae98c8679a5dbed74094b8e6e1f6a2689692cb7e832f60019ee86e1547b40db5759569
|
@@ -19,35 +19,8 @@ module UsBankHolidays
|
|
19
19
|
def initialize(year)
|
20
20
|
@year = year
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
# Third Monday of January
|
26
|
-
@mlk_day = ::UsBankHolidays::Month.new(year, 1).mondays[2]
|
27
|
-
|
28
|
-
# Third Monday of February
|
29
|
-
@washingtons_birthday = ::UsBankHolidays::Month.new(year, 2).mondays[2]
|
30
|
-
|
31
|
-
# Last Monday of May
|
32
|
-
@memorial_day = ::UsBankHolidays::Month.new(year, 5).mondays.last
|
33
|
-
|
34
|
-
# 4'th of July
|
35
|
-
@independence_day = roll_nominal(Date.new(year, 7, 4))
|
36
|
-
|
37
|
-
# First Monday of September
|
38
|
-
@labor_day = ::UsBankHolidays::Month.new(year, 9).mondays.first
|
39
|
-
|
40
|
-
# Second Monday of October
|
41
|
-
@columbus_day = ::UsBankHolidays::Month.new(year, 10).mondays[1]
|
42
|
-
|
43
|
-
# November 11
|
44
|
-
@veterans_day = roll_nominal(Date.new(year, 11, 11))
|
45
|
-
|
46
|
-
# Fourth Thursday of November
|
47
|
-
@thanksgiving = ::UsBankHolidays::Month.new(year, 11).thursdays[3]
|
48
|
-
|
49
|
-
# December 25
|
50
|
-
@christmas = roll_nominal(Date.new(year, 12, 25))
|
22
|
+
init_fixed_holidays
|
23
|
+
init_rolled_holidays
|
51
24
|
|
52
25
|
end
|
53
26
|
|
@@ -74,20 +47,78 @@ module UsBankHolidays
|
|
74
47
|
end
|
75
48
|
end
|
76
49
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
50
|
+
{
|
51
|
+
:january => 1,
|
52
|
+
:february => 2,
|
53
|
+
:march => 3,
|
54
|
+
:april => 4,
|
55
|
+
:may => 5,
|
56
|
+
:june => 6,
|
57
|
+
:july => 7,
|
58
|
+
:august => 8,
|
59
|
+
:september => 9,
|
60
|
+
:october => 10,
|
61
|
+
:november => 11,
|
62
|
+
:december => 12
|
63
|
+
}.each do |month_name, month_index|
|
64
|
+
# Create a method that returns an instance of UsBankHolidays::Month for
|
65
|
+
# the needed month
|
66
|
+
define_method(month_name) do
|
67
|
+
::UsBankHolidays::Month.new(year, month_index)
|
87
68
|
end
|
88
69
|
end
|
89
|
-
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
# These holidays are always fixed
|
74
|
+
def init_fixed_holidays
|
75
|
+
# Third Monday of January
|
76
|
+
@mlk_day = january.mondays[2]
|
77
|
+
|
78
|
+
# Third Monday of February
|
79
|
+
@washingtons_birthday = february.mondays[2]
|
80
|
+
|
81
|
+
# Last Monday of May
|
82
|
+
@memorial_day = may.mondays.last
|
83
|
+
|
84
|
+
# First Monday of September
|
85
|
+
@labor_day = september.mondays.first
|
86
|
+
|
87
|
+
# Second Monday of October
|
88
|
+
@columbus_day = october.mondays[1]
|
89
|
+
|
90
|
+
# Fourth Thursday of November
|
91
|
+
@thanksgiving = november.thursdays[3]
|
92
|
+
end
|
93
|
+
|
94
|
+
# These holidays are potentially rolled if they come on a weekend.
|
95
|
+
def init_rolled_holidays
|
96
|
+
# First of the year, rolls either forward or back.
|
97
|
+
@new_years_day = roll_nominal(Date.new(year, 1, 1))
|
98
|
+
|
99
|
+
# 4'th of July
|
100
|
+
@independence_day = roll_nominal(Date.new(year, 7, 4))
|
101
|
+
|
102
|
+
# November 11
|
103
|
+
@veterans_day = roll_nominal(Date.new(year, 11, 11))
|
104
|
+
|
105
|
+
# December 25
|
106
|
+
@christmas = roll_nominal(Date.new(year, 12, 25))
|
107
|
+
end
|
108
|
+
|
109
|
+
# Figures out where to roll the given nominal date. If it's a Saturday, assumes
|
110
|
+
# it's the day before (Friday), if Sunday it's the date after (Monday), otherwise
|
111
|
+
# just returns self.
|
112
|
+
def roll_nominal(nominal)
|
113
|
+
if nominal.saturday?
|
114
|
+
nominal - 1
|
115
|
+
elsif nominal.sunday?
|
116
|
+
nominal + 1
|
117
|
+
else
|
118
|
+
nominal
|
119
|
+
end
|
120
|
+
end
|
90
121
|
|
91
122
|
end
|
92
123
|
|
93
|
-
end
|
124
|
+
end
|
@@ -20,4 +20,30 @@ describe UsBankHolidays::HolidayYear do
|
|
20
20
|
it 'should declare Dec. 31 a bank holiday if it falls on a Friday' do
|
21
21
|
UsBankHolidays::HolidayYear.new(2021).bank_holidays.last.should == Date.new(2021, 12, 31)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
|
+
context 'Months' do
|
25
|
+
let(:year) { UsBankHolidays::HolidayYear.new(2014) }
|
26
|
+
|
27
|
+
{
|
28
|
+
:january => 1,
|
29
|
+
:february => 2,
|
30
|
+
:march => 3,
|
31
|
+
:april => 4,
|
32
|
+
:may => 5,
|
33
|
+
:june => 6,
|
34
|
+
:july => 7,
|
35
|
+
:august => 8,
|
36
|
+
:september => 9,
|
37
|
+
:october => 10,
|
38
|
+
:november => 11,
|
39
|
+
:december => 12
|
40
|
+
}.each do |month_name, month_index|
|
41
|
+
it "should respond to '#{month_name}' and return the right month" do
|
42
|
+
year.respond_to?(month_name).should be_true
|
43
|
+
month = year.send(month_name)
|
44
|
+
month.year.should == 2014
|
45
|
+
month.month.should == month_index
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,71 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: us_bank_holidays
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arthur Shagall
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
|
-
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
|
-
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
23
|
requirements:
|
22
24
|
- - ~>
|
23
25
|
- !ruby/object:Gem::Version
|
24
26
|
version: '1.3'
|
25
|
-
prerelease: false
|
26
|
-
type: :development
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
29
|
requirement: !ruby/object:Gem::Requirement
|
35
30
|
requirements:
|
36
31
|
- - '>='
|
37
32
|
- !ruby/object:Gem::Version
|
38
33
|
version: '0'
|
39
|
-
prerelease: false
|
40
34
|
type: :development
|
41
|
-
|
42
|
-
name: rspec
|
35
|
+
prerelease: false
|
43
36
|
version_requirements: !ruby/object:Gem::Requirement
|
44
37
|
requirements:
|
45
38
|
- - '>='
|
46
39
|
- !ruby/object:Gem::Version
|
47
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
44
|
requirements:
|
50
45
|
- - '>='
|
51
46
|
- !ruby/object:Gem::Version
|
52
47
|
version: '0'
|
53
|
-
prerelease: false
|
54
48
|
type: :development
|
55
|
-
|
56
|
-
name: simplecov
|
49
|
+
prerelease: false
|
57
50
|
version_requirements: !ruby/object:Gem::Requirement
|
58
51
|
requirements:
|
59
52
|
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
62
57
|
requirement: !ruby/object:Gem::Requirement
|
63
58
|
requirements:
|
64
59
|
- - '>='
|
65
60
|
- !ruby/object:Gem::Version
|
66
61
|
version: '0'
|
67
|
-
prerelease: false
|
68
62
|
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
69
|
description: Simplify working with US bank holidays.
|
70
70
|
email:
|
71
71
|
- arthur.shagall@gmail.com
|
@@ -91,7 +91,7 @@ homepage: https://github.com/albertosaurus/us_bank_holidays
|
|
91
91
|
licenses:
|
92
92
|
- MIT
|
93
93
|
metadata: {}
|
94
|
-
post_install_message:
|
94
|
+
post_install_message:
|
95
95
|
rdoc_options: []
|
96
96
|
require_paths:
|
97
97
|
- lib
|
@@ -106,9 +106,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
|
-
rubyforge_project:
|
110
|
-
rubygems_version: 2.2.
|
111
|
-
signing_key:
|
109
|
+
rubyforge_project:
|
110
|
+
rubygems_version: 2.2.2
|
111
|
+
signing_key:
|
112
112
|
specification_version: 4
|
113
113
|
summary: Patches Date to add methods to make dealing with US bank holidays simpler.
|
114
114
|
test_files:
|