ndr_support 5.5.1 → 5.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/code_safety.yml +18 -6
- data/lib/ndr_support/concerns/working_days.rb +12 -9
- data/lib/ndr_support/date_and_time_extensions.rb +1 -3
- data/lib/ndr_support/integer/working_days.rb +11 -0
- data/lib/ndr_support/version.rb +1 -1
- data/lib/ndr_support/working_days.rb +5 -0
- data/ndr_support.gemspec +1 -1
- data/test/integer/working_days_test.rb +14 -0
- metadata +10 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d599151cea4c34a89c568436565e71f11e34d489ed9b6e29aacc009dda5095a4
|
4
|
+
data.tar.gz: 47bc41f2159defce848c6150b4c72032252d6b88088ae38ac354abcf71b9f6e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7d2e904ba474818b94832adc0d2d5eb0844c1dc4d34cb31f2e8f7c717bd183069c8b014227c809f069960d974245cfd511ea0674b07b55f29645e4a2a592b90
|
7
|
+
data.tar.gz: '08f269ba7631cea9a4257a72bad295d8539c0ff6055ab96fcca6a3734d55b7a132213a39e3048cdd81ee437ce6e470b4f79967e84279da782f7eee8c461ef540'
|
data/CHANGELOG.md
CHANGED
data/code_safety.yml
CHANGED
@@ -17,7 +17,7 @@ file safety:
|
|
17
17
|
CHANGELOG.md:
|
18
18
|
comments:
|
19
19
|
reviewed_by: josh.pencheon
|
20
|
-
safe_revision:
|
20
|
+
safe_revision: 1f67d8d27b697d51069ea9d3df27ae44db86c694
|
21
21
|
CODE_OF_CONDUCT.md:
|
22
22
|
comments:
|
23
23
|
reviewed_by: timgentry
|
@@ -60,12 +60,12 @@ file safety:
|
|
60
60
|
safe_revision: 4a4ed24d2cfe7e1736baadf4cf6e0fece6823be1
|
61
61
|
lib/ndr_support/concerns/working_days.rb:
|
62
62
|
comments:
|
63
|
-
reviewed_by:
|
64
|
-
safe_revision:
|
63
|
+
reviewed_by: josh.pencheon
|
64
|
+
safe_revision: a5afad784e1e28a76e3907f5d742dc221ce8a235
|
65
65
|
lib/ndr_support/date_and_time_extensions.rb:
|
66
66
|
comments:
|
67
67
|
reviewed_by: josh.pencheon
|
68
|
-
safe_revision:
|
68
|
+
safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
|
69
69
|
lib/ndr_support/daterange.rb:
|
70
70
|
comments:
|
71
71
|
reviewed_by: brian.shand
|
@@ -86,6 +86,10 @@ file safety:
|
|
86
86
|
comments:
|
87
87
|
reviewed_by: josh.pencheon
|
88
88
|
safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
|
89
|
+
lib/ndr_support/integer/working_days.rb:
|
90
|
+
comments:
|
91
|
+
reviewed_by: josh.pencheon
|
92
|
+
safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
|
89
93
|
lib/ndr_support/nil.rb:
|
90
94
|
comments:
|
91
95
|
reviewed_by: pauleves
|
@@ -157,7 +161,11 @@ file safety:
|
|
157
161
|
lib/ndr_support/version.rb:
|
158
162
|
comments:
|
159
163
|
reviewed_by: josh.pencheon
|
160
|
-
safe_revision:
|
164
|
+
safe_revision: 1f67d8d27b697d51069ea9d3df27ae44db86c694
|
165
|
+
lib/ndr_support/working_days.rb:
|
166
|
+
comments:
|
167
|
+
reviewed_by: josh.pencheon
|
168
|
+
safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
|
161
169
|
lib/ndr_support/yaml/serialization_migration.rb:
|
162
170
|
comments:
|
163
171
|
reviewed_by: timgentry
|
@@ -165,7 +173,7 @@ file safety:
|
|
165
173
|
ndr_support.gemspec:
|
166
174
|
comments:
|
167
175
|
reviewed_by: josh.pencheon
|
168
|
-
safe_revision:
|
176
|
+
safe_revision: c685e94ddb1cf2814eb145e87a4c8bc6bced59fb
|
169
177
|
test/array_test.rb:
|
170
178
|
comments:
|
171
179
|
reviewed_by: timgentry
|
@@ -190,6 +198,10 @@ file safety:
|
|
190
198
|
comments:
|
191
199
|
reviewed_by: josh.pencheon
|
192
200
|
safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
|
201
|
+
test/integer/working_days_test.rb:
|
202
|
+
comments:
|
203
|
+
reviewed_by: josh.pencheon
|
204
|
+
safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
|
193
205
|
test/nil_test.rb:
|
194
206
|
comments:
|
195
207
|
reviewed_by: timgentry
|
@@ -3,6 +3,8 @@ require 'active_support/time'
|
|
3
3
|
# This module contains logic for #working_days_until, #weekday?, and #public_holiday?.
|
4
4
|
module WorkingDays
|
5
5
|
WEEK_DAYS = 1..5
|
6
|
+
|
7
|
+
# TODO: could we use https://github.com/alphagov/gds-api-adapters ?
|
6
8
|
HOLIDAYS = [ # Sourced from https://www.gov.uk/bank-holidays
|
7
9
|
# 2012
|
8
10
|
'2012-01-02', # Monday - New Year's Day (substitute day)
|
@@ -100,7 +102,7 @@ module WorkingDays
|
|
100
102
|
def working_days_until(other)
|
101
103
|
return -other.working_days_until(self) if other < self
|
102
104
|
|
103
|
-
|
105
|
+
count_whole_days_to(other) do |day|
|
104
106
|
day.weekday? && !day.public_holiday?
|
105
107
|
end
|
106
108
|
end
|
@@ -109,7 +111,7 @@ module WorkingDays
|
|
109
111
|
# `other`. Returns negative number if `other` is earlier.
|
110
112
|
def weekdays_until(other)
|
111
113
|
return -other.weekdays_until(self) if other < self
|
112
|
-
|
114
|
+
count_whole_days_to(other, &:weekday?)
|
113
115
|
end
|
114
116
|
|
115
117
|
# Is this a weekday?
|
@@ -124,14 +126,15 @@ module WorkingDays
|
|
124
126
|
|
125
127
|
private
|
126
128
|
|
127
|
-
def
|
128
|
-
|
129
|
-
|
130
|
-
next_day = days.last + 1.day
|
131
|
-
next_day <= other ? days.push(next_day) : break
|
132
|
-
end
|
129
|
+
def count_whole_days_to(other, &block)
|
130
|
+
day = self + 1.day
|
131
|
+
count = 0
|
133
132
|
|
134
|
-
|
133
|
+
while day <= other
|
134
|
+
count += 1 if block.call(day)
|
135
|
+
day += 1.day
|
135
136
|
end
|
137
|
+
|
138
|
+
count
|
136
139
|
end
|
137
140
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Mixin for working_days
|
2
|
+
class Integer
|
3
|
+
# Returns a date of the number of working days since a given date
|
4
|
+
def working_days_since(date)
|
5
|
+
times do
|
6
|
+
date = date.next
|
7
|
+
date = date.next while date.public_holiday? || !date.weekday?
|
8
|
+
end
|
9
|
+
date
|
10
|
+
end
|
11
|
+
end
|
data/lib/ndr_support/version.rb
CHANGED
data/ndr_support.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency 'minitest', '>= 5.0.0'
|
33
33
|
spec.add_development_dependency 'mocha', '~> 1.1'
|
34
34
|
|
35
|
-
spec.add_development_dependency 'ndr_dev_support', '~>
|
35
|
+
spec.add_development_dependency 'ndr_dev_support', '~> 5.4', '>= 5.4.5'
|
36
36
|
spec.add_development_dependency 'guard'
|
37
37
|
spec.add_development_dependency 'listen', '< 3.1' # Bundle 1.12 should be (but isn't) resolving Ruby 2.1 issue
|
38
38
|
spec.add_development_dependency 'guard-rubocop'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# This tests our Integer working days extension
|
4
|
+
class Integer::WorkingDaysTest < Minitest::Test
|
5
|
+
test 'Integer should be extended with #working_days_since' do
|
6
|
+
assert 1.respond_to?(:working_days_since)
|
7
|
+
end
|
8
|
+
|
9
|
+
test 'Integer#working_days_since should behave correctly' do
|
10
|
+
assert_equal Date.new(2019, 12, 23), 1.working_days_since(Date.new(2019, 12, 20))
|
11
|
+
assert_equal Date.new(2019, 12, 27), 3.working_days_since(Date.new(2019, 12, 20))
|
12
|
+
assert_equal Date.new(2019, 12, 30), 4.working_days_since(Date.new(2019, 12, 20))
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ndr_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NCRS Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -112,20 +112,20 @@ dependencies:
|
|
112
112
|
requirements:
|
113
113
|
- - "~>"
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: '
|
115
|
+
version: '5.4'
|
116
116
|
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version:
|
118
|
+
version: 5.4.5
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: '
|
125
|
+
version: '5.4'
|
126
126
|
- - ">="
|
127
127
|
- !ruby/object:Gem::Version
|
128
|
-
version:
|
128
|
+
version: 5.4.5
|
129
129
|
- !ruby/object:Gem::Dependency
|
130
130
|
name: guard
|
131
131
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,6 +251,7 @@ files:
|
|
251
251
|
- lib/ndr_support/integer/calculations.rb
|
252
252
|
- lib/ndr_support/integer/julian_date_conversions.rb
|
253
253
|
- lib/ndr_support/integer/rounding.rb
|
254
|
+
- lib/ndr_support/integer/working_days.rb
|
254
255
|
- lib/ndr_support/nil.rb
|
255
256
|
- lib/ndr_support/obfuscator.rb
|
256
257
|
- lib/ndr_support/ourdate.rb
|
@@ -269,6 +270,7 @@ files:
|
|
269
270
|
- lib/ndr_support/utf8_encoding/force_binary.rb
|
270
271
|
- lib/ndr_support/utf8_encoding/object_support.rb
|
271
272
|
- lib/ndr_support/version.rb
|
273
|
+
- lib/ndr_support/working_days.rb
|
272
274
|
- lib/ndr_support/yaml/serialization_migration.rb
|
273
275
|
- ndr_support.gemspec
|
274
276
|
- test/array_test.rb
|
@@ -277,6 +279,7 @@ files:
|
|
277
279
|
- test/hash_test.rb
|
278
280
|
- test/integer/calculations_test.rb
|
279
281
|
- test/integer/rounding_test.rb
|
282
|
+
- test/integer/working_days_test.rb
|
280
283
|
- test/nil_test.rb
|
281
284
|
- test/obfuscator_test.rb
|
282
285
|
- test/ourdate_test.rb
|
@@ -324,6 +327,7 @@ test_files:
|
|
324
327
|
- test/hash_test.rb
|
325
328
|
- test/integer/calculations_test.rb
|
326
329
|
- test/integer/rounding_test.rb
|
330
|
+
- test/integer/working_days_test.rb
|
327
331
|
- test/nil_test.rb
|
328
332
|
- test/obfuscator_test.rb
|
329
333
|
- test/ourdate_test.rb
|