ndr_support 5.6.1 → 5.7.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 +12 -12
- data/lib/ndr_support/daterange.rb +23 -4
- data/lib/ndr_support/string/conversions.rb +1 -1
- data/lib/ndr_support/version.rb +1 -1
- data/test/daterange_test.rb +38 -0
- data/test/string/conversions_test.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e06c6fad074bb00f7ba16334d194b9fcf369147688dbd1f22dcd1cca86e71073
|
4
|
+
data.tar.gz: 7ede15deb1aec6e6ee02d627437eb7c94810755dbcb717db9212c17c2f09ca3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3b03a27b86891d3cb52dcf3fab222cf3bd42b05cb859918142dd6791a6dc18e5ebba0075911d9d177e7451a5b447b0cf6324455641f913ebb86c78808cf5843
|
7
|
+
data.tar.gz: e5d89586818d5a50a1c3211086ce812d485e90b3080c46986be570ec32e7c740f6d5c312a8580ef727243c5910b60d5acd13f8e94276e0fa07dbf922879a9a85
|
data/CHANGELOG.md
CHANGED
data/code_safety.yml
CHANGED
@@ -16,8 +16,8 @@ file safety:
|
|
16
16
|
safe_revision: 0cfcfac5ddcd721a67dcd23f04cbf6bc2278b922
|
17
17
|
CHANGELOG.md:
|
18
18
|
comments:
|
19
|
-
reviewed_by:
|
20
|
-
safe_revision:
|
19
|
+
reviewed_by: ollietulloch
|
20
|
+
safe_revision: ce582c10aa4ddddcd22f907d6228cc7bb324a280
|
21
21
|
CODE_OF_CONDUCT.md:
|
22
22
|
comments:
|
23
23
|
reviewed_by: timgentry
|
@@ -68,8 +68,8 @@ file safety:
|
|
68
68
|
safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
|
69
69
|
lib/ndr_support/daterange.rb:
|
70
70
|
comments:
|
71
|
-
reviewed_by:
|
72
|
-
safe_revision:
|
71
|
+
reviewed_by: ollietulloch
|
72
|
+
safe_revision: 9a4b8e53f477725c2c2be5000b3c9e66f07d7389
|
73
73
|
lib/ndr_support/hash.rb:
|
74
74
|
comments:
|
75
75
|
reviewed_by: pauleves
|
@@ -132,8 +132,8 @@ file safety:
|
|
132
132
|
safe_revision: 60cc69774d5aff92252558feae9604544def7583
|
133
133
|
lib/ndr_support/string/conversions.rb:
|
134
134
|
comments:
|
135
|
-
reviewed_by:
|
136
|
-
safe_revision:
|
135
|
+
reviewed_by: ollietulloch
|
136
|
+
safe_revision: 9a4b8e53f477725c2c2be5000b3c9e66f07d7389
|
137
137
|
lib/ndr_support/tasks.rb:
|
138
138
|
comments:
|
139
139
|
reviewed_by: timgentry
|
@@ -160,8 +160,8 @@ file safety:
|
|
160
160
|
safe_revision: f7adf44fc2772e1926df37abfd9041d41c303328
|
161
161
|
lib/ndr_support/version.rb:
|
162
162
|
comments:
|
163
|
-
reviewed_by:
|
164
|
-
safe_revision:
|
163
|
+
reviewed_by: ollietulloch
|
164
|
+
safe_revision: ce582c10aa4ddddcd22f907d6228cc7bb324a280
|
165
165
|
lib/ndr_support/working_days.rb:
|
166
166
|
comments:
|
167
167
|
reviewed_by: josh.pencheon
|
@@ -184,8 +184,8 @@ file safety:
|
|
184
184
|
safe_revision: fe6c3beff445e3c84ed0c89f08e1ab10bfb00587
|
185
185
|
test/daterange_test.rb:
|
186
186
|
comments:
|
187
|
-
reviewed_by:
|
188
|
-
safe_revision:
|
187
|
+
reviewed_by: ollietulloch
|
188
|
+
safe_revision: 9a4b8e53f477725c2c2be5000b3c9e66f07d7389
|
189
189
|
test/hash_test.rb:
|
190
190
|
comments:
|
191
191
|
reviewed_by: timgentry
|
@@ -244,8 +244,8 @@ file safety:
|
|
244
244
|
safe_revision: 60cc69774d5aff92252558feae9604544def7583
|
245
245
|
test/string/conversions_test.rb:
|
246
246
|
comments:
|
247
|
-
reviewed_by:
|
248
|
-
safe_revision:
|
247
|
+
reviewed_by: ollietulloch
|
248
|
+
safe_revision: 9a4b8e53f477725c2c2be5000b3c9e66f07d7389
|
249
249
|
test/test_helper.rb:
|
250
250
|
comments:
|
251
251
|
reviewed_by: josh.pencheon
|
@@ -135,12 +135,12 @@ class Daterange
|
|
135
135
|
|
136
136
|
# Update our attribute values using a string representation of the date(s).
|
137
137
|
# +s+ consists of one or more dates separated with spaces.
|
138
|
-
# Each date can be in various formats, e.g. d/m/yyyy, ddmmyyyy, yyyy-mm-dd
|
139
|
-
# Each date can omit days or months, e.g. yyyy, dd/yyyy, yyyy-mm
|
138
|
+
# Each date can be in various formats, e.g. d/m/yyyy, ddmmyyyy, yyyy-mm-dd, dd-mon-yyyy
|
139
|
+
# Each date can omit days or months, e.g. yyyy, dd/yyyy, yyyy-mm, mon-yyyy
|
140
140
|
def source=(s)
|
141
141
|
@source = s
|
142
142
|
ss = s.upcase.sub(/TO/, ' ') # accept default _to_s format
|
143
|
-
if ss =~ /[
|
143
|
+
if ss =~ /[^\w0-9\-\/\. ]/i # only allow letters, digits, hyphen, slash, dot, space
|
144
144
|
@date1 = @date2 = nil
|
145
145
|
else
|
146
146
|
da = [] # temporary array of arrays of dates
|
@@ -184,7 +184,9 @@ class Daterange
|
|
184
184
|
# e.g year only or year/month only) and return an array of 1..3 integers
|
185
185
|
# representing the year, month and day
|
186
186
|
def date_string_parts(ds)
|
187
|
-
if ds =~
|
187
|
+
if ds =~ /\A(\d{1,2}[\/\.\-])?\w{3}[\/\.\-]\d{4}\z/i # dd[-/.]mon[-/.]yyyy or mon[-/.]yyyy
|
188
|
+
result = handle_three_char_months(ds)
|
189
|
+
elsif ds =~ /([\/\.\-])/ # find a slash or dot or hyphen
|
188
190
|
delimiter = $1
|
189
191
|
result = ds.split(delimiter)
|
190
192
|
elsif ds.length == 8 # ddmmyyyy
|
@@ -200,4 +202,21 @@ class Daterange
|
|
200
202
|
result.reverse! unless delimiter == '-' # change to YMD if not ISO format
|
201
203
|
result.collect(&:to_i)
|
202
204
|
end
|
205
|
+
|
206
|
+
def handle_three_char_months(datestring)
|
207
|
+
delimiter = datestring.match(%r{[\/\.\-]})[0]
|
208
|
+
components = datestring.split(delimiter)
|
209
|
+
|
210
|
+
if datestring =~ /\A\d{1,2}#{delimiter}\w{3}#{delimiter}\d{4}\z/i
|
211
|
+
month = abbreviated_month_index_for(components[1])
|
212
|
+
month.nil? ? [] : [components.first, month, components.last]
|
213
|
+
elsif datestring =~ /\A\w{3}#{delimiter}\d{4}\z/i
|
214
|
+
month = abbreviated_month_index_for(components.first)
|
215
|
+
month.nil? ? [] : [month, components.last]
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
def abbreviated_month_index_for(string)
|
220
|
+
Date::ABBR_MONTHNAMES.index(string.capitalize)
|
221
|
+
end
|
203
222
|
end
|
@@ -117,7 +117,7 @@ class String
|
|
117
117
|
year += 100 if year <= Ourdate.today.year % 100
|
118
118
|
year += 1900
|
119
119
|
elsif 9 == length && self =~ /\A\d{2}[^A-Z0-9][A-Z]{3}[^A-Z0-9]\d{2}\z/i
|
120
|
-
# dd/
|
120
|
+
# dd/mon/yy, rare case.
|
121
121
|
year += 100 if year <= Ourdate.today.year % 100
|
122
122
|
year += 1900
|
123
123
|
end
|
data/lib/ndr_support/version.rb
CHANGED
data/test/daterange_test.rb
CHANGED
@@ -226,4 +226,42 @@ class DaterangeTest < Minitest::Test
|
|
226
226
|
refute_equal dr1, nil
|
227
227
|
refute_equal dr1, 0
|
228
228
|
end
|
229
|
+
|
230
|
+
def test_three_char_months
|
231
|
+
dr1 = Daterange.new('01-APR-2020')
|
232
|
+
assert_equal '01.04.2020', dr1.date1.to_s
|
233
|
+
assert_equal '01.04.2020', dr1.date2.to_s
|
234
|
+
|
235
|
+
dr2 = Daterange.new('APR-2020')
|
236
|
+
assert_equal '01.04.2020', dr2.date1.to_s
|
237
|
+
assert_equal '30.04.2020', dr2.date2.to_s
|
238
|
+
|
239
|
+
dr3 = Daterange.new('JAN-2020 TO apr-2020')
|
240
|
+
assert_equal '01.01.2020', dr3.date1.to_s
|
241
|
+
assert_equal '30.04.2020', dr3.date2.to_s
|
242
|
+
|
243
|
+
dr4 = Daterange.new('20-JAN-2020 TO 12-Apr-2020')
|
244
|
+
assert_equal '20.01.2020', dr4.date1.to_s
|
245
|
+
assert_equal '12.04.2020', dr4.date2.to_s
|
246
|
+
|
247
|
+
dr5 = Daterange.new('01-BOB-2020')
|
248
|
+
assert_nil dr5.date1
|
249
|
+
assert_nil dr5.date2
|
250
|
+
|
251
|
+
dr6 = Daterange.new('01/APR/2020')
|
252
|
+
assert_equal '01.04.2020', dr6.date1.to_s
|
253
|
+
assert_equal '01.04.2020', dr6.date2.to_s
|
254
|
+
|
255
|
+
dr7 = Daterange.new('APR/2020')
|
256
|
+
assert_equal '01.04.2020', dr7.date1.to_s
|
257
|
+
assert_equal '30.04.2020', dr7.date2.to_s
|
258
|
+
|
259
|
+
dr8 = Daterange.new('JAN/2020 TO apr.2020')
|
260
|
+
assert_equal '01.01.2020', dr8.date1.to_s
|
261
|
+
assert_equal '30.04.2020', dr8.date2.to_s
|
262
|
+
|
263
|
+
dr9 = Daterange.new('20.JAN.2020 TO 12/Apr/2020')
|
264
|
+
assert_equal '20.01.2020', dr9.date1.to_s
|
265
|
+
assert_equal '12.04.2020', dr9.date2.to_s
|
266
|
+
end
|
229
267
|
end
|
@@ -311,7 +311,7 @@ class String::ConversionsTest < Minitest::Test
|
|
311
311
|
assert_equal Ourdate.build_datetime(2008, 05, 03), '03/05/08'.to_date
|
312
312
|
end
|
313
313
|
|
314
|
-
test 'inferred dd/
|
314
|
+
test 'inferred dd/mon/yy string to_date' do
|
315
315
|
# pre_epoch
|
316
316
|
assert_equal Ourdate.build_datetime(1945, 02, 13), '13/FEB/45'.to_date
|
317
317
|
assert_equal Ourdate.build_datetime(1945, 06, 03), '03/JUN/45'.to_date
|
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.7.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: 2020-
|
11
|
+
date: 2020-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|