working_hours 1.1.4 → 1.2.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 +5 -5
- data/.travis.yml +19 -23
- data/CHANGELOG.md +11 -1
- data/README.md +2 -2
- data/gemfiles/{Gemfile.activesupport-4.2.x → Gemfile.activesupport-4.x} +0 -0
- data/gemfiles/{Gemfile.activesupport-3.2.x → Gemfile.activesupport-5.x} +1 -1
- data/gemfiles/{Gemfile.activesupport-4.0.x → Gemfile.activesupport-6.x} +1 -1
- data/gemfiles/{Gemfile.activesupport-head → Gemfile.activesupport-edge} +0 -0
- data/lib/working_hours/computation.rb +4 -0
- data/lib/working_hours/version.rb +1 -1
- data/spec/working_hours/computation_spec.rb +20 -0
- data/working_hours.gemspec +1 -1
- metadata +9 -12
- data/gemfiles/Gemfile.activesupport-4.1.x +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1c6ba325dcb5811a04a8eb5102e65b6d48e291a7d4a581baaf6f5e63b5394cf1
|
4
|
+
data.tar.gz: 302e9f7a199ac7db4049e288f141c7dad3674e6618f99a2c4380af14e316b121
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5ff45d737ba62afd04c0322d4010e6bac9cad0954a1fadcbd38564540367f32e2e8da8f78529921f755a46663cd1dbabf4562ec6d02235d8c1d0ddcc047316b
|
7
|
+
data.tar.gz: 686a39afbad5ff340de57db83173dd75dd6c2b5b0ec244e25fbc2263b2eb7f90764f7cb8a95aed53a689507c19b4ba337a987ee00eac33bdce0c9fc903865772
|
data/.travis.yml
CHANGED
@@ -1,29 +1,25 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
- ruby-head
|
9
|
-
- jruby-1.7.23
|
10
|
-
- jruby-9.0.4.0
|
11
|
-
- jruby-head
|
12
|
-
before_install:
|
13
|
-
- bundler --version || gem install bundler
|
14
|
-
env: JRUBY_OPTS=--2.0
|
3
|
+
- 2.4.9
|
4
|
+
- 2.5.7
|
5
|
+
- 2.6.5
|
6
|
+
- 2.7.0
|
7
|
+
- jruby-9.2.11.0
|
15
8
|
gemfile:
|
16
|
-
- gemfiles/Gemfile.activesupport-
|
17
|
-
- gemfiles/Gemfile.activesupport-
|
18
|
-
- gemfiles/Gemfile.activesupport-
|
19
|
-
|
20
|
-
- gemfiles/Gemfile.activesupport-edge
|
21
|
-
matrix:
|
9
|
+
- gemfiles/Gemfile.activesupport-4.x
|
10
|
+
- gemfiles/Gemfile.activesupport-5.x
|
11
|
+
- gemfiles/Gemfile.activesupport-6.x
|
12
|
+
jobs:
|
22
13
|
exclude:
|
23
|
-
- rvm: 2.4.
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
14
|
+
- rvm: 2.4.9
|
15
|
+
gemfile: gemfiles/Gemfile.activesupport-6.x
|
16
|
+
- rvm: 2.7.0
|
17
|
+
gemfile: gemfiles/Gemfile.activesupport-4.x
|
18
|
+
include:
|
28
19
|
- rvm: ruby-head
|
20
|
+
gemfile: gemfiles/Gemfile.activesupport-edge
|
29
21
|
- rvm: jruby-head
|
22
|
+
gemfile: gemfiles/Gemfile.activesupport-edge
|
23
|
+
allow_failures:
|
24
|
+
- gemfile: gemfiles/Gemfile.activesupport-edge
|
25
|
+
fast_finish: true
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
# Unreleased
|
2
2
|
|
3
|
-
[Compare master with v1.
|
3
|
+
[Compare master with v1.2.0](https://github.com/intrepidd/working_hours/compare/v1.2.0...master)
|
4
|
+
|
5
|
+
# v1.2.0
|
6
|
+
* Drop support for ruby 2.0, 2.1, 2.2 and 2.3
|
7
|
+
* Drop support for jruby 1.7 and 9.0
|
8
|
+
* Drop support for ActiveSupport 3.x
|
9
|
+
* Add support for jruby 9.2
|
10
|
+
* Add support for ruby 2.5, 2.6 and 2.7
|
11
|
+
* Add support for ActiveSupport 5.x and 6.x
|
12
|
+
* Fix day computations when origin is a holiday or a non worked day - [#39](https://github.com/Intrepidd/working_hours/pull/39)
|
13
|
+
|
4
14
|
|
5
15
|
# v1.1.4
|
6
16
|
* Fix thread safety - [#36](https://github.com/Intrepidd/working_hours/pull/36)
|
data/README.md
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
A modern ruby gem allowing to do time calculation with working hours.
|
6
6
|
|
7
7
|
Compatible and tested with:
|
8
|
-
- Ruby `2.
|
9
|
-
- ActiveSupport `
|
8
|
+
- Ruby `2.4`, `2.5`, `2.6`, `2.7`, JRuby `9.2`
|
9
|
+
- ActiveSupport `4.x`, `5.x`, `6.x`
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
File without changes
|
File without changes
|
@@ -5,8 +5,12 @@ module WorkingHours
|
|
5
5
|
module Computation
|
6
6
|
|
7
7
|
def add_days origin, days, config: nil
|
8
|
+
return origin if days.zero?
|
9
|
+
|
8
10
|
config ||= wh_config
|
9
11
|
time = in_config_zone(origin, config: config)
|
12
|
+
time += (days <=> 0).day until working_day?(time, config: config)
|
13
|
+
|
10
14
|
while days > 0
|
11
15
|
time += 1.day
|
12
16
|
days -= 1 if working_day?(time, config: config)
|
@@ -32,12 +32,26 @@ describe WorkingHours::Computation do
|
|
32
32
|
expect(add_days(time, 1)).to eq(Date.new(2014, 4, 9)) # Wednesday
|
33
33
|
end
|
34
34
|
|
35
|
+
it 'skips non worked days when origin is not worked' do
|
36
|
+
time = Date.new(2014, 4, 8) # Tuesday
|
37
|
+
WorkingHours::Config.working_hours = {mon: {'09:00' => '17:00'}, wed: {'09:00' => '17:00'}, thu: {'09:00' => '17:00'}, sun: {'09:00' => '17:00'}}
|
38
|
+
expect(add_days(time, 1)).to eq(Date.new(2014, 4, 10)) # Thursday
|
39
|
+
expect(add_days(time, -1)).to eq(Date.new(2014, 4, 6)) # Sunday
|
40
|
+
end
|
41
|
+
|
35
42
|
it 'skips holidays' do
|
36
43
|
time = Date.new(2014, 4, 7) # Monday
|
37
44
|
WorkingHours::Config.holidays = [Date.new(2014, 4, 8)] # Tuesday
|
38
45
|
expect(add_days(time, 1)).to eq(Date.new(2014, 4, 9)) # Wednesday
|
39
46
|
end
|
40
47
|
|
48
|
+
it 'skips holidays when origin is holiday' do
|
49
|
+
time = Date.new(2014, 4, 9) # Wednesday
|
50
|
+
WorkingHours::Config.holidays = [time] # Wednesday
|
51
|
+
expect(add_days(time, 1)).to eq(Date.new(2014, 4, 11)) # Friday
|
52
|
+
expect(add_days(time, -1)).to eq(Date.new(2014, 4, 7)) # Monday
|
53
|
+
end
|
54
|
+
|
41
55
|
it 'skips holidays and non worked days' do
|
42
56
|
time = Date.new(2014, 4, 7) # Monday
|
43
57
|
WorkingHours::Config.holidays = [Date.new(2014, 4, 9)] # Wednesday
|
@@ -45,6 +59,12 @@ describe WorkingHours::Computation do
|
|
45
59
|
expect(add_days(time, 3)).to eq(Date.new(2014, 4, 21))
|
46
60
|
end
|
47
61
|
|
62
|
+
it 'returns the original value when adding 0 days' do
|
63
|
+
time = Date.new(2014, 4, 7)
|
64
|
+
WorkingHours::Config.holidays = [time]
|
65
|
+
expect(add_days(time, 0)).to eq(time)
|
66
|
+
end
|
67
|
+
|
48
68
|
it 'accepts time given from any time zone' do
|
49
69
|
time = Time.utc(1991, 11, 14, 21, 0, 0) # Thursday 21 pm UTC
|
50
70
|
WorkingHours::Config.time_zone = 'Tokyo' # But we are at tokyo, so it's already Friday 6 am
|
data/working_hours.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency 'activesupport', '>= 3.2'
|
22
22
|
spec.add_dependency 'tzinfo'
|
23
23
|
|
24
|
-
spec.add_development_dependency 'bundler', '
|
24
|
+
spec.add_development_dependency 'bundler', '>= 1.5'
|
25
25
|
spec.add_development_dependency 'rake'
|
26
26
|
spec.add_development_dependency 'rspec', '~> 3.2'
|
27
27
|
spec.add_development_dependency 'timecop'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: working_hours
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrien Jarthon
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -43,14 +43,14 @@ dependencies:
|
|
43
43
|
name: bundler
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '1.5'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '1.5'
|
56
56
|
- !ruby/object:Gem::Dependency
|
@@ -111,11 +111,10 @@ files:
|
|
111
111
|
- LICENSE.txt
|
112
112
|
- README.md
|
113
113
|
- Rakefile
|
114
|
-
- gemfiles/Gemfile.activesupport-
|
115
|
-
- gemfiles/Gemfile.activesupport-
|
116
|
-
- gemfiles/Gemfile.activesupport-
|
117
|
-
- gemfiles/Gemfile.activesupport-
|
118
|
-
- gemfiles/Gemfile.activesupport-head
|
114
|
+
- gemfiles/Gemfile.activesupport-4.x
|
115
|
+
- gemfiles/Gemfile.activesupport-5.x
|
116
|
+
- gemfiles/Gemfile.activesupport-6.x
|
117
|
+
- gemfiles/Gemfile.activesupport-edge
|
119
118
|
- lib/working_hours.rb
|
120
119
|
- lib/working_hours/computation.rb
|
121
120
|
- lib/working_hours/config.rb
|
@@ -153,8 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
152
|
- !ruby/object:Gem::Version
|
154
153
|
version: '0'
|
155
154
|
requirements: []
|
156
|
-
|
157
|
-
rubygems_version: 2.5.1
|
155
|
+
rubygems_version: 3.0.8
|
158
156
|
signing_key:
|
159
157
|
specification_version: 4
|
160
158
|
summary: time calculation with working hours
|
@@ -167,4 +165,3 @@ test_files:
|
|
167
165
|
- spec/working_hours/duration_proxy_spec.rb
|
168
166
|
- spec/working_hours/duration_spec.rb
|
169
167
|
- spec/working_hours_spec.rb
|
170
|
-
has_rdoc:
|