work_days 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 +7 -0
- data/.travis.yml +10 -0
- data/Gemfile +0 -1
- data/README.md +8 -4
- data/lib/work_days/calculation_methods.rb +10 -0
- data/lib/work_days/version.rb +1 -1
- data/spec/lib/work_days/calculation_methods_spec.rb +18 -0
- data/work_days.gemspec +4 -3
- metadata +19 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 76a33459c3f10963229fca52b563cfafee50e726
|
4
|
+
data.tar.gz: 000a737240d1f3ac3aa37b47b7d8a5157e93308d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c4dc00162f2b032eedc4040a4e734e62633c94645d615da225439e99b4f8ca5db0b441ea32de9fb39bee2bceb6164ca9eb633acf16ee5e07364b585032d8a2f
|
7
|
+
data.tar.gz: 1e635eba2a16e13d621c948c8ac78c8dbdb2e2bca1e1e5d250e932a157fb31861b84f406c1ade7b22bc38733e53acc0661cf7fe1498c8d57cef3f728dced236d
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -18,13 +18,13 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
Use your own custom work schedule by creating a class implementing
|
21
|
+
Use your own custom work schedule by creating a class implementing
|
22
22
|
your custom holiday methods and including the WorkDays::CalculationMethods module
|
23
|
-
(and optionally the WorkDays::HolidayMethods module for a few of the presets).
|
23
|
+
(and optionally the WorkDays::HolidayMethods module for a few of the presets).
|
24
24
|
|
25
25
|
class SampleSchedule
|
26
|
-
WorkDays::CalculationMethods
|
27
|
-
WorkDays::HolidayMethods
|
26
|
+
include WorkDays::CalculationMethods
|
27
|
+
include WorkDays::HolidayMethods
|
28
28
|
|
29
29
|
def observed_holidays
|
30
30
|
[:new_years_day, :christmas_day]
|
@@ -53,6 +53,10 @@ on the WorkDays module (as long as you set the WorkDays.work_schedule).
|
|
53
53
|
* Returns an array of the work days between the start and end dates.
|
54
54
|
* work_days_in_month(date)
|
55
55
|
* Returns an array of the work days for the year and month of the passed in date.
|
56
|
+
* holiday?(date)
|
57
|
+
* Returns true for any date that is an observed holiday.
|
58
|
+
* holidays_in_range(start_date, end_date)
|
59
|
+
* Returns an array of the holidays between the start and end dates.
|
56
60
|
|
57
61
|
## Contributing
|
58
62
|
|
@@ -32,6 +32,16 @@ module WorkDays::CalculationMethods
|
|
32
32
|
working_days
|
33
33
|
end
|
34
34
|
|
35
|
+
def holidays_in_range(start, stop)
|
36
|
+
holidays = []
|
37
|
+
|
38
|
+
(start.to_date..stop.to_date).each do |date|
|
39
|
+
holidays << date if holiday?(date)
|
40
|
+
end
|
41
|
+
|
42
|
+
holidays
|
43
|
+
end
|
44
|
+
|
35
45
|
def work_days_in_month(date)
|
36
46
|
start_date = Date.new(date.year, date.month, 1)
|
37
47
|
end_date = Date.new(date.year, date.month, -1)
|
data/lib/work_days/version.rb
CHANGED
@@ -105,6 +105,24 @@ describe WorkDays::CalculationMethods, :type => :holiday_helpers do
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
+
context "#holidays_in_range" do
|
109
|
+
let(:start_date) {random_date}
|
110
|
+
let(:end_date) {start_date + rand(45)}
|
111
|
+
|
112
|
+
it "should return an array of the observed holidays between two dates" do
|
113
|
+
valid_holidays = []
|
114
|
+
|
115
|
+
(start_date..end_date).each do |date|
|
116
|
+
holiday = random_boolean
|
117
|
+
|
118
|
+
valid_holidays << date if holiday
|
119
|
+
subject.should_receive(:holiday?).with(date).and_return(holiday)
|
120
|
+
end
|
121
|
+
|
122
|
+
subject.holidays_in_range(start_date, end_date).should eq(valid_holidays)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
108
126
|
context "#work_days_in_month" do
|
109
127
|
let(:date) {random_date}
|
110
128
|
let(:range_start_date) {Date.new(date.year, date.month, 1)}
|
data/work_days.gemspec
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
require File.expand_path('../lib/work_days/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
+
gem.license = 'MIT'
|
5
6
|
gem.authors = ["Robert Jackson"]
|
6
|
-
gem.email = ["
|
7
|
-
gem.description = %q{Calculate the number of
|
7
|
+
gem.email = ["robert.w.jackson@me.com"]
|
8
|
+
gem.description = %q{Calculate the number of work days in a given period. Also, add convenience methods to Range, Date, DateTime, and Time.}
|
8
9
|
gem.summary = %q{Simple business day calculations.}
|
9
10
|
gem.homepage = "https://github.com/rjackson/work_days"
|
10
11
|
|
@@ -15,5 +16,5 @@ Gem::Specification.new do |gem|
|
|
15
16
|
gem.require_paths = ["lib"]
|
16
17
|
gem.version = WorkDays::VERSION
|
17
18
|
|
18
|
-
gem.add_development_dependency 'rspec'
|
19
|
+
gem.add_development_dependency 'rspec', '~> 2.14'
|
19
20
|
end
|
metadata
CHANGED
@@ -1,42 +1,40 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: work_days
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Robert Jackson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-04-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
|
-
prerelease: false
|
17
15
|
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
22
|
-
none: false
|
19
|
+
version: '2.14'
|
23
20
|
type: :development
|
21
|
+
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
23
|
requirements:
|
26
|
-
- -
|
24
|
+
- - "~>"
|
27
25
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
29
|
-
|
30
|
-
description: Calculate the number of business days in a given period. Also, add convenience
|
26
|
+
version: '2.14'
|
27
|
+
description: Calculate the number of work days in a given period. Also, add convenience
|
31
28
|
methods to Range, Date, DateTime, and Time.
|
32
29
|
email:
|
33
|
-
-
|
30
|
+
- robert.w.jackson@me.com
|
34
31
|
executables: []
|
35
32
|
extensions: []
|
36
33
|
extra_rdoc_files: []
|
37
34
|
files:
|
38
|
-
- .gitignore
|
39
|
-
- .rspec
|
35
|
+
- ".gitignore"
|
36
|
+
- ".rspec"
|
37
|
+
- ".travis.yml"
|
40
38
|
- Gemfile
|
41
39
|
- Guardfile
|
42
40
|
- LICENSE
|
@@ -67,28 +65,28 @@ files:
|
|
67
65
|
- spec/support/work_day_proxy.rb
|
68
66
|
- work_days.gemspec
|
69
67
|
homepage: https://github.com/rjackson/work_days
|
70
|
-
licenses:
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata: {}
|
71
71
|
post_install_message:
|
72
72
|
rdoc_options: []
|
73
73
|
require_paths:
|
74
74
|
- lib
|
75
75
|
required_ruby_version: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
|
-
- -
|
77
|
+
- - ">="
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '0'
|
80
|
-
none: false
|
81
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
81
|
requirements:
|
83
|
-
- -
|
82
|
+
- - ">="
|
84
83
|
- !ruby/object:Gem::Version
|
85
84
|
version: '0'
|
86
|
-
none: false
|
87
85
|
requirements: []
|
88
86
|
rubyforge_project:
|
89
|
-
rubygems_version:
|
87
|
+
rubygems_version: 2.2.0
|
90
88
|
signing_key:
|
91
|
-
specification_version:
|
89
|
+
specification_version: 4
|
92
90
|
summary: Simple business day calculations.
|
93
91
|
test_files:
|
94
92
|
- spec/lib/work_days/calculation_methods_spec.rb
|