ndr_support 5.5.1 → 5.6.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 +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
|