ndr_support 5.8.0 → 5.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/code_safety.yml +17 -17
- data/lib/ndr_support/concerns/working_days.rb +9 -0
- data/lib/ndr_support/daterange.rb +13 -3
- data/lib/ndr_support/ourdate/build_datetime.rb +36 -0
- data/lib/ndr_support/ourdate.rb +1 -32
- data/lib/ndr_support/version.rb +1 -1
- data/test/daterange_test.rb +6 -0
- data/test/threat_scanner_test.rb +2 -0
- metadata +4 -4
- data/lib/ndr_support/integer/julian_date_conversions.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34884f8080512729d26a5b99ee45bcde3abf4761557539f5d2dd3c7e29744e8f
|
4
|
+
data.tar.gz: 6e82d6aba23372b53d809f3ab245a507100874cb41f000897a488c7cab197287
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cc130d188abf756e32c59ad3f077bc696b17c0bbbb233e1c9f0f60f8cc8c111a719a605eea7be216af4ac91100335ca324cef32067b550c420b4440e41b37c8
|
7
|
+
data.tar.gz: 34dd278940652be4ac9b840c47a4bb80c1ae6379eb46f3d4c700b178f7ccd02a448d301bf79edbaeefa0866a0ef98b04b58f3dddd922540960cc233803f5083a
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
*no unreleased changes*
|
3
3
|
|
4
|
+
## 5.8.4 / 2021-12-27
|
5
|
+
## Fixed
|
6
|
+
* Support 2023 public holidays
|
7
|
+
|
8
|
+
## 5.8.3 / 2021-11-25
|
9
|
+
## Fixed
|
10
|
+
* remove circular dependencies between Ourdate and Daterange
|
11
|
+
|
12
|
+
## 5.8.2 / 2021-10-11
|
13
|
+
## Fixed
|
14
|
+
* fix issue with blank date causing error for dateranges
|
15
|
+
|
16
|
+
## 5.8.1 / 2021-10-11
|
17
|
+
### Patched
|
18
|
+
* Added fix for failing threat scanner tests (#22)
|
19
|
+
|
4
20
|
## 5.8.0 / 2021-04-19
|
5
21
|
## Added
|
6
22
|
|
data/code_safety.yml
CHANGED
@@ -22,8 +22,8 @@ file safety:
|
|
22
22
|
safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
|
23
23
|
CHANGELOG.md:
|
24
24
|
comments:
|
25
|
-
reviewed_by:
|
26
|
-
safe_revision:
|
25
|
+
reviewed_by: brian.shand
|
26
|
+
safe_revision: 3c246b08d80a424d160914a6597197b8925826ec
|
27
27
|
CODE_OF_CONDUCT.md:
|
28
28
|
comments:
|
29
29
|
reviewed_by: timgentry
|
@@ -66,16 +66,16 @@ file safety:
|
|
66
66
|
safe_revision: 4a4ed24d2cfe7e1736baadf4cf6e0fece6823be1
|
67
67
|
lib/ndr_support/concerns/working_days.rb:
|
68
68
|
comments:
|
69
|
-
reviewed_by:
|
70
|
-
safe_revision:
|
69
|
+
reviewed_by: brian.shand
|
70
|
+
safe_revision: 42b82bdc466503800c021263899cdbbe444b78b0
|
71
71
|
lib/ndr_support/date_and_time_extensions.rb:
|
72
72
|
comments:
|
73
73
|
reviewed_by: josh.pencheon
|
74
74
|
safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
|
75
75
|
lib/ndr_support/daterange.rb:
|
76
76
|
comments:
|
77
|
-
reviewed_by:
|
78
|
-
safe_revision:
|
77
|
+
reviewed_by: brian.shand
|
78
|
+
safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
|
79
79
|
lib/ndr_support/hash.rb:
|
80
80
|
comments:
|
81
81
|
reviewed_by: pauleves
|
@@ -84,10 +84,6 @@ file safety:
|
|
84
84
|
comments:
|
85
85
|
reviewed_by: josh.pencheon
|
86
86
|
safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
|
87
|
-
lib/ndr_support/integer/julian_date_conversions.rb:
|
88
|
-
comments:
|
89
|
-
reviewed_by: ollietulloch
|
90
|
-
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
91
87
|
lib/ndr_support/integer/rounding.rb:
|
92
88
|
comments:
|
93
89
|
reviewed_by: josh.pencheon
|
@@ -106,8 +102,12 @@ file safety:
|
|
106
102
|
safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
|
107
103
|
lib/ndr_support/ourdate.rb:
|
108
104
|
comments:
|
109
|
-
reviewed_by:
|
110
|
-
safe_revision:
|
105
|
+
reviewed_by: brian.shand
|
106
|
+
safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
|
107
|
+
lib/ndr_support/ourdate/build_datetime.rb:
|
108
|
+
comments:
|
109
|
+
reviewed_by: brian.shand
|
110
|
+
safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
|
111
111
|
lib/ndr_support/ourtime.rb:
|
112
112
|
comments:
|
113
113
|
reviewed_by: ollietulloch
|
@@ -166,8 +166,8 @@ file safety:
|
|
166
166
|
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
167
167
|
lib/ndr_support/version.rb:
|
168
168
|
comments:
|
169
|
-
reviewed_by:
|
170
|
-
safe_revision:
|
169
|
+
reviewed_by: brian.shand
|
170
|
+
safe_revision: 3c246b08d80a424d160914a6597197b8925826ec
|
171
171
|
lib/ndr_support/working_days.rb:
|
172
172
|
comments:
|
173
173
|
reviewed_by: josh.pencheon
|
@@ -191,7 +191,7 @@ file safety:
|
|
191
191
|
test/daterange_test.rb:
|
192
192
|
comments:
|
193
193
|
reviewed_by: ollietulloch
|
194
|
-
safe_revision:
|
194
|
+
safe_revision: ccca1dc67e3742efb154e01e01243e7b38180936
|
195
195
|
test/hash_test.rb:
|
196
196
|
comments:
|
197
197
|
reviewed_by: timgentry
|
@@ -258,8 +258,8 @@ file safety:
|
|
258
258
|
safe_revision: 34ae80f2952f0bfd18688541862774cbaaa6c5f5
|
259
259
|
test/threat_scanner_test.rb:
|
260
260
|
comments:
|
261
|
-
reviewed_by:
|
262
|
-
safe_revision:
|
261
|
+
reviewed_by: ollietulloch
|
262
|
+
safe_revision: fbb6ef9804040aa2e38257d9f5c487bde18a490d
|
263
263
|
test/utf8_encoding/control_characters_test.rb:
|
264
264
|
comments:
|
265
265
|
reviewed_by: timgentry
|
@@ -107,6 +107,15 @@ module WorkingDays
|
|
107
107
|
'2022-08-29', # Monday - Summer bank holiday
|
108
108
|
'2022-12-26', # Monday - Boxing Day
|
109
109
|
'2022-12-27', # Tuesday - Christmas Day (substitute day)
|
110
|
+
# 2023
|
111
|
+
'2023-01-02', # Monday - New Year’s Day (substitute day)
|
112
|
+
'2023-04-07', # Friday - Good Friday
|
113
|
+
'2023-04-10', # Monday - Easter Monday
|
114
|
+
'2023-05-01', # Monday - Early May bank holiday
|
115
|
+
'2023-05-29', # Monday - Spring bank holiday
|
116
|
+
'2023-08-28', # Monday - Summer bank holiday
|
117
|
+
'2023-12-25', # Monday - Boxing Day
|
118
|
+
'2023-12-26', # Tuesday - Christmas Day (substitute day)
|
110
119
|
].map { |str| Date.parse(str) }
|
111
120
|
|
112
121
|
def self.check_lookup
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'active_support/core_ext/enumerable'
|
2
2
|
require 'active_support/time'
|
3
|
-
require 'ndr_support/
|
3
|
+
require 'ndr_support/ourdate/build_datetime'
|
4
4
|
|
5
5
|
# Our "vague date" class, which can represent a single date or a date range.
|
6
6
|
class Daterange
|
@@ -43,11 +43,18 @@ class Daterange
|
|
43
43
|
@date2 = nil
|
44
44
|
@source = nil
|
45
45
|
end
|
46
|
-
raise WrongDateOrderError, 'Invalid date range order' if do_not_sort_dates
|
46
|
+
raise WrongDateOrderError, 'Invalid date range order' if wrong_date_order?(do_not_sort_dates)
|
47
47
|
|
48
48
|
self.freeze
|
49
49
|
end
|
50
50
|
|
51
|
+
def wrong_date_order?(do_not_sort_dates)
|
52
|
+
return false unless do_not_sort_dates
|
53
|
+
return false unless @date1.present? && @date2.present?
|
54
|
+
|
55
|
+
@date1 > @date2
|
56
|
+
end
|
57
|
+
|
51
58
|
# If we have a valid date range, return a string representation of it
|
52
59
|
# TODO: possibly add support for to_s(format) e.g. to_s(:short)
|
53
60
|
def to_s
|
@@ -181,7 +188,10 @@ class Daterange
|
|
181
188
|
j1 = j2 = Date.new(parts[0], parts[1], parts[2]).jd
|
182
189
|
end
|
183
190
|
|
184
|
-
[j1
|
191
|
+
[j1, j2].collect do |jd|
|
192
|
+
date = Date.jd(jd) # Julian date number to Ruby Date
|
193
|
+
Ourdate.build_datetime(date.year, date.month, date.day)
|
194
|
+
end
|
185
195
|
rescue
|
186
196
|
nil
|
187
197
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'active_support/time'
|
3
|
+
|
4
|
+
class Ourdate
|
5
|
+
# Construct a daylight saving time safe datetime, with arguments
|
6
|
+
#--
|
7
|
+
# FIXME: Note that the arguments should be numbers, not strings -- it works
|
8
|
+
# with strings arguments only after the 1970 epoch; before, it returns nil.
|
9
|
+
#++
|
10
|
+
def self.build_datetime(year, month = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0)
|
11
|
+
return nil if year.nil?
|
12
|
+
|
13
|
+
if ActiveRecord::Base.default_timezone == :local
|
14
|
+
# Time.local_time(year, month, day, hour, min, sec, usec).to_datetime
|
15
|
+
# Behave like oracle_adapter.rb
|
16
|
+
seconds = sec + Rational(usec, 10**6)
|
17
|
+
time_array = [year, month, day, hour, min, seconds]
|
18
|
+
begin
|
19
|
+
#--
|
20
|
+
# TODO: Fails unit tests unless we .to_datetime here
|
21
|
+
# but the risk is we lose the usec component unnecesssarily.
|
22
|
+
# Investigate removing .to_datetime below.
|
23
|
+
#++
|
24
|
+
Time.send(ActiveRecord::Base.default_timezone, *time_array).to_datetime
|
25
|
+
rescue
|
26
|
+
zone_offset = ActiveRecord::Base.default_timezone == :local ? DateTime.now.offset : 0
|
27
|
+
# Append zero calendar reform start to account for dates skipped by calendar reform
|
28
|
+
DateTime.new(*time_array[0..5] << zone_offset << 0) rescue nil
|
29
|
+
end
|
30
|
+
else
|
31
|
+
# Only supports fake GMT time -- needs improvement
|
32
|
+
# Maybe use Time.zone.local or Time.local_time(year, month, day)
|
33
|
+
Time.utc(year, month, day, hour, min, sec, usec).to_datetime
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/ndr_support/ourdate.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
require 'active_support/time'
|
3
|
+
require 'ndr_support/ourdate/build_datetime'
|
3
4
|
require 'ndr_support/date_and_time_extensions'
|
4
5
|
require 'ndr_support/daterange'
|
5
6
|
|
@@ -25,38 +26,6 @@ class Ourdate
|
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
28
|
-
# Construct a daylight saving time safe datetime, with arguments
|
29
|
-
#--
|
30
|
-
# FIXME: Note that the arguments should be numbers, not strings -- it works
|
31
|
-
# with strings arguments only after the 1970 epoch; before, it returns nil.
|
32
|
-
#++
|
33
|
-
def self.build_datetime(year, month = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0)
|
34
|
-
return nil if year.nil?
|
35
|
-
|
36
|
-
if ActiveRecord::Base.default_timezone == :local
|
37
|
-
# Time.local_time(year, month, day, hour, min, sec, usec).to_datetime
|
38
|
-
# Behave like oracle_adapter.rb
|
39
|
-
seconds = sec + Rational(usec, 10**6)
|
40
|
-
time_array = [year, month, day, hour, min, seconds]
|
41
|
-
begin
|
42
|
-
#--
|
43
|
-
# TODO: Fails unit tests unless we .to_datetime here
|
44
|
-
# but the risk is we lose the usec component unnecesssarily.
|
45
|
-
# Investigate removing .to_datetime below.
|
46
|
-
#++
|
47
|
-
Time.send(ActiveRecord::Base.default_timezone, *time_array).to_datetime
|
48
|
-
rescue
|
49
|
-
zone_offset = ActiveRecord::Base.default_timezone == :local ? DateTime.now.offset : 0
|
50
|
-
# Append zero calendar reform start to account for dates skipped by calendar reform
|
51
|
-
DateTime.new(*time_array[0..5] << zone_offset << 0) rescue nil
|
52
|
-
end
|
53
|
-
else
|
54
|
-
# Only supports fake GMT time -- needs improvement
|
55
|
-
# Maybe use Time.zone.local or Time.local_time(year, month, day)
|
56
|
-
Time.utc(year, month, day, hour, min, sec, usec).to_datetime
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
29
|
def initialize(x = nil)
|
61
30
|
if x.is_a?(Date)
|
62
31
|
@thedate = x
|
data/lib/ndr_support/version.rb
CHANGED
data/test/daterange_test.rb
CHANGED
@@ -31,6 +31,12 @@ class DaterangeTest < Minitest::Test
|
|
31
31
|
assert_equal(dr.to_s, dr2.to_s)
|
32
32
|
end
|
33
33
|
|
34
|
+
def test_blank_does_not_trigger_error_and_returns_nil_in_dates
|
35
|
+
dr = Daterange.new('', do_not_sort_dates: true)
|
36
|
+
assert_nil dr.date1
|
37
|
+
assert_nil dr.date2
|
38
|
+
end
|
39
|
+
|
34
40
|
def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_true
|
35
41
|
d = Time.zone.today
|
36
42
|
Daterange.new(d, d + 1, do_not_sort_dates: true)
|
data/test/threat_scanner_test.rb
CHANGED
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.8.
|
4
|
+
version: 5.8.4
|
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: 2021-
|
11
|
+
date: 2021-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -249,12 +249,12 @@ files:
|
|
249
249
|
- lib/ndr_support/daterange.rb
|
250
250
|
- lib/ndr_support/hash.rb
|
251
251
|
- lib/ndr_support/integer/calculations.rb
|
252
|
-
- lib/ndr_support/integer/julian_date_conversions.rb
|
253
252
|
- lib/ndr_support/integer/rounding.rb
|
254
253
|
- lib/ndr_support/integer/working_days.rb
|
255
254
|
- lib/ndr_support/nil.rb
|
256
255
|
- lib/ndr_support/obfuscator.rb
|
257
256
|
- lib/ndr_support/ourdate.rb
|
257
|
+
- lib/ndr_support/ourdate/build_datetime.rb
|
258
258
|
- lib/ndr_support/ourtime.rb
|
259
259
|
- lib/ndr_support/password.rb
|
260
260
|
- lib/ndr_support/password/constants.rb
|
@@ -316,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
316
|
- !ruby/object:Gem::Version
|
317
317
|
version: '0'
|
318
318
|
requirements: []
|
319
|
-
rubygems_version: 3.
|
319
|
+
rubygems_version: 3.1.6
|
320
320
|
signing_key:
|
321
321
|
specification_version: 4
|
322
322
|
summary: NDR Support library
|