dotiw 5.3.0 → 5.3.3
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 +12 -0
- data/README.markdown +22 -0
- data/lib/dotiw/action_view/helpers/date_helper.rb +16 -4
- data/lib/dotiw/methods.rb +16 -3
- data/lib/dotiw/version.rb +1 -1
- data/spec/lib/dotiw_spec.rb +150 -34
- 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: 156f786ed11b28af2e890b6612fb07fb09bd462dc818a5bb8bb9075a518044d7
|
4
|
+
data.tar.gz: ca01c5a48869011c7c1fe9f08cf8c6ad953920b4ea5bc4dd26e21850131b6363
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 807d4628412b8d810c072ea5cf4e10ed2cb7e280bdeaeb1b65906f1e203bd1155c5a7457d21d4c8c8c112a5a7d0a9b9b9a3c9ff5f1100d6ff0a255f64380a1f3
|
7
|
+
data.tar.gz: 78c14c9c5ea09eb378a380fe686672e925665fdebd9f75096a5cdecc1f9d8497d9cf7839a8cad4dd9d84e4938441e1380c076ecb3ccbf0a24359aa70993da9a2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## 5.3.3 (2022/04/25)
|
2
|
+
|
3
|
+
* [#128](https://github.com/radar/distance_of_time_in_words/pull/128): Adds support for numeric values for both the `from_time` and `to_time` arguments in the `#distance_of_time_in_words` helper - [@bjedrocha](https://github.com/bjedrocha).
|
4
|
+
|
5
|
+
## 5.3.2 (2021/11/08)
|
6
|
+
|
7
|
+
* [#126](https://github.com/radar/distance_of_time_in_words/pull/126): Fixes `#distance_of_time_in_words_to_now` with `vague: true` when supplied without `include_seconds` argument - [@mozcomp](https://github.com/mozcomp).
|
8
|
+
|
9
|
+
## 5.3.1 (2021/03/26)
|
10
|
+
|
11
|
+
* [#124](https://github.com/radar/distance_of_time_in_words/pull/124): Fixes compact formatting for distance_of_time_in_words - [@rposborne](https://github.com/rposborne).
|
12
|
+
|
1
13
|
## 5.3.0 (2021/03/18)
|
2
14
|
|
3
15
|
* [#115](https://github.com/radar/distance_of_time_in_words/pull/115): Use constants for time durations (2x faster, 3.5x less memory) - [@krzysiek1507](https://github.com/krzysiek1507).
|
data/README.markdown
CHANGED
@@ -58,6 +58,22 @@ Better than "about 1 year", am I right? Of course I am.
|
|
58
58
|
=> "1 second"
|
59
59
|
```
|
60
60
|
|
61
|
+
It also supports numeric arguments like the original Rails version:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
>> distance_of_time_in_words(0, 150)
|
65
|
+
=> "2 minutes and 30 seconds"
|
66
|
+
```
|
67
|
+
|
68
|
+
as an alternative to:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
>> distance_of_time_in_words(Time.now, Time.now + 2.5.minutes)
|
72
|
+
=> "2 minutes and 30 seconds"
|
73
|
+
```
|
74
|
+
|
75
|
+
This is useful if you're just interested in "stringifying" the length of time. Alternatively, you can use the `#distance_of_time` helper as described [below](#distance\_of\_time).
|
76
|
+
|
61
77
|
The third argument for this method is whether or not to include seconds. By default this is `false` (because in Rails' `distance_of_time_in_words` it is), you can turn it on though by passing `true` as the third argument:
|
62
78
|
|
63
79
|
```ruby
|
@@ -67,6 +83,8 @@ The third argument for this method is whether or not to include seconds. By defa
|
|
67
83
|
|
68
84
|
Yes this could just be merged into the options hash but I'm leaving it here to ensure "backwards-compatibility", because that's just an insanely radical thing to do. \m/
|
69
85
|
|
86
|
+
Alternatively this can be included in the options hash as `include_seconds: true` removing this argument altogether.
|
87
|
+
|
70
88
|
The last argument is an optional options hash that can be used to manipulate behavior and (which uses `to_sentence`).
|
71
89
|
|
72
90
|
Don't like having to pass in `Time.now` all the time? Then use `time_ago_in_words` or `distance_of_time_in_words_to_now` which also will *rock your
|
@@ -99,6 +117,10 @@ This will also be passed to `to_sentence`.
|
|
99
117
|
|
100
118
|
Specify this if you want it to use the old `distance_of_time_in_words`. The value can be anything except `nil` or `false`.
|
101
119
|
|
120
|
+
#### :include_seconds
|
121
|
+
|
122
|
+
As described above this option is the equivalent to the third argument whether to include seconds.
|
123
|
+
|
102
124
|
#### :accumulate_on
|
103
125
|
|
104
126
|
Specifies the maximum output unit which will accumulate all the surplus. Say you set it to seconds and your time difference is of 2 minutes then the output would be 120 seconds.
|
@@ -9,15 +9,17 @@ module ActionView
|
|
9
9
|
include DOTIW::Methods
|
10
10
|
|
11
11
|
def distance_of_time_in_words(from_time, to_time = 0, include_seconds_or_options = {}, options = {})
|
12
|
-
|
12
|
+
options = merge_options(include_seconds_or_options, options)
|
13
|
+
return _distance_of_time_in_words(from_time, to_time, options.except(:vague)) if options[:vague]
|
13
14
|
|
14
|
-
DOTIW::Methods.distance_of_time_in_words(from_time, to_time,
|
15
|
+
DOTIW::Methods.distance_of_time_in_words(from_time, to_time, options.except(:vague))
|
15
16
|
end
|
16
17
|
|
17
18
|
def distance_of_time_in_words_to_now(to_time = 0, include_seconds_or_options = {}, options = {})
|
18
|
-
|
19
|
+
options = merge_options(include_seconds_or_options, options)
|
20
|
+
return _distance_of_time_in_words(Time.now, to_time, options.except(:vague)) if options[:vague]
|
19
21
|
|
20
|
-
DOTIW::Methods.distance_of_time_in_words(Time.now, to_time,
|
22
|
+
DOTIW::Methods.distance_of_time_in_words(Time.now, to_time, options.except(:vague))
|
21
23
|
end
|
22
24
|
|
23
25
|
def distance_of_time_in_percent(from_time, current_time, to_time, options = {})
|
@@ -27,6 +29,16 @@ module ActionView
|
|
27
29
|
result = ((current_time - from_time) / distance) * 100
|
28
30
|
number_with_precision(result, options).to_s + '%'
|
29
31
|
end
|
32
|
+
|
33
|
+
private
|
34
|
+
def merge_options(include_seconds_or_options, options)
|
35
|
+
if include_seconds_or_options.is_a?(Hash)
|
36
|
+
options.merge(include_seconds_or_options)
|
37
|
+
else
|
38
|
+
options.merge(include_seconds: !!include_seconds_or_options)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
30
42
|
end
|
31
43
|
end
|
32
44
|
end
|
data/lib/dotiw/methods.rb
CHANGED
@@ -20,7 +20,9 @@ module DOTIW
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def distance_of_time_in_words(from_time, to_time = 0, include_seconds_or_options = {}, options = {})
|
23
|
-
|
23
|
+
from_time = normalize_distance_of_time_argument_to_time(from_time)
|
24
|
+
to_time = normalize_distance_of_time_argument_to_time(to_time)
|
25
|
+
from_time, to_time = to_time, from_time if from_time > to_time
|
24
26
|
|
25
27
|
if include_seconds_or_options.is_a?(Hash)
|
26
28
|
options = include_seconds_or_options
|
@@ -28,7 +30,8 @@ module DOTIW
|
|
28
30
|
options = options.dup
|
29
31
|
options[:include_seconds] ||= !!include_seconds_or_options
|
30
32
|
end
|
31
|
-
|
33
|
+
|
34
|
+
return distance_of_time(to_time.to_i, options) if from_time.to_i == 0
|
32
35
|
|
33
36
|
options = options_with_scope(options)
|
34
37
|
hash = distance_of_time_in_words_hash(from_time, to_time, options)
|
@@ -41,6 +44,16 @@ module DOTIW
|
|
41
44
|
|
42
45
|
private
|
43
46
|
|
47
|
+
def normalize_distance_of_time_argument_to_time(value)
|
48
|
+
if value.is_a?(Numeric)
|
49
|
+
Time.at(value)
|
50
|
+
elsif value.respond_to?(:to_time)
|
51
|
+
value.to_time
|
52
|
+
else
|
53
|
+
raise ArgumentError, "#{value.inspect} can't be converted to a Time value"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
44
57
|
def options_with_scope(options)
|
45
58
|
if options.key?(:compact)
|
46
59
|
options.merge(scope: DOTIW::DEFAULT_I18N_SCOPE_COMPACT)
|
@@ -102,7 +115,7 @@ module DOTIW
|
|
102
115
|
default: :'support.array.last_word_connector',
|
103
116
|
locale: options[:locale]
|
104
117
|
|
105
|
-
output.to_sentence(options.except(:accumulate_on))
|
118
|
+
output.to_sentence(options.except(:accumulate_on, :compact))
|
106
119
|
end
|
107
120
|
end
|
108
121
|
end
|
data/lib/dotiw/version.rb
CHANGED
data/spec/lib/dotiw_spec.rb
CHANGED
@@ -101,11 +101,6 @@ describe 'A better distance_of_time_in_words' do
|
|
101
101
|
expect(DOTIW.languages.map(&:to_s).sort).to eq languages.sort
|
102
102
|
end
|
103
103
|
|
104
|
-
it 'raises ArgumentError when nil is passed for time' do
|
105
|
-
expect { distance_of_time_in_words(nil) }.to raise_error(ArgumentError)
|
106
|
-
expect { distance_of_time_in_words(nil, nil) }.to raise_error(ArgumentError)
|
107
|
-
end
|
108
|
-
|
109
104
|
DOTIW.languages.each do |lang|
|
110
105
|
context lang do
|
111
106
|
YAML.safe_load(
|
@@ -135,32 +130,33 @@ describe 'A better distance_of_time_in_words' do
|
|
135
130
|
end
|
136
131
|
|
137
132
|
[
|
138
|
-
[START_TIME, START_TIME + 5.days + 3.minutes, '5 days and 3 minutes'],
|
139
|
-
[START_TIME, START_TIME + 1.minute, '1 minute'],
|
140
|
-
[START_TIME, START_TIME + 3.years, '3 years'],
|
141
|
-
[START_TIME, START_TIME + 10.years, '10 years'],
|
142
|
-
[START_TIME, START_TIME + 8.months, '8 months'],
|
143
|
-
[START_TIME, START_TIME + 3.hour, '3 hours'],
|
144
|
-
[START_TIME, START_TIME + 13.months, '1 year and 1 month'],
|
133
|
+
[START_TIME, START_TIME + 5.days + 3.minutes, '5 days and 3 minutes', '5d3m'],
|
134
|
+
[START_TIME, START_TIME + 1.minute, '1 minute', '1m'],
|
135
|
+
[START_TIME, START_TIME + 3.years, '3 years', '3y'],
|
136
|
+
[START_TIME, START_TIME + 10.years, '10 years', '10y'],
|
137
|
+
[START_TIME, START_TIME + 8.months, '8 months', '8mo'],
|
138
|
+
[START_TIME, START_TIME + 3.hour, '3 hours', '3h'],
|
139
|
+
[START_TIME, START_TIME + 13.months, '1 year and 1 month', '1y1mo'],
|
145
140
|
# Any numeric sequence is merely coincidental.
|
146
141
|
[START_TIME, START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
|
147
|
-
'1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes, and 7 seconds'],
|
148
|
-
['2009-3-16'.to_time, '2008-4-14'.to_time, '11 months and 2 days'],
|
149
|
-
['2009-3-16'.to_time + 1.minute, '2008-4-14'.to_time, '11 months, 2 days, and 1 minute'],
|
150
|
-
['2009-4-14'.to_time, '2008-3-16'.to_time, '1 year, 4 weeks, and 1 day'],
|
151
|
-
['2009-2-01'.to_time, '2009-3-01'.to_time, '1 month'],
|
152
|
-
['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month'],
|
153
|
-
[Date.parse('31.03.2015').to_time, Time.parse('01.03.2016'), '10 months, 4 weeks, and 2 days'],
|
154
|
-
[Date.new(2014, 1, 31), Date.new(2014, 3, 1), '4 weeks and 1 day'],
|
155
|
-
['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month'],
|
156
|
-
['2014-1-31'.to_time, '2014-3-01'.to_time, '4 weeks and 1 day'],
|
157
|
-
['2014-1-31'.to_time, '2014-3-02'.to_time, '4 weeks and 2 days'],
|
158
|
-
['2016-1-31'.to_time, '2016-3-01'.to_time, '4 weeks and 2 days'],
|
159
|
-
['2016-1-31'.to_time, '2016-3-02'.to_time, '1 month']
|
160
|
-
].each do |start, finish, output|
|
142
|
+
'1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes, and 7 seconds', '1y2mo3w4d5h6m7s'],
|
143
|
+
['2009-3-16'.to_time, '2008-4-14'.to_time, '11 months and 2 days', '11mo2d'],
|
144
|
+
['2009-3-16'.to_time + 1.minute, '2008-4-14'.to_time, '11 months, 2 days, and 1 minute', '11mo2d1m'],
|
145
|
+
['2009-4-14'.to_time, '2008-3-16'.to_time, '1 year, 4 weeks, and 1 day', '1y4w1d'],
|
146
|
+
['2009-2-01'.to_time, '2009-3-01'.to_time, '1 month', '1mo'],
|
147
|
+
['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month', '1mo'],
|
148
|
+
[Date.parse('31.03.2015').to_time, Time.parse('01.03.2016'), '10 months, 4 weeks, and 2 days', '10mo4w2d'],
|
149
|
+
[Date.new(2014, 1, 31), Date.new(2014, 3, 1), '4 weeks and 1 day', '4w1d'],
|
150
|
+
['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month', '1mo'],
|
151
|
+
['2014-1-31'.to_time, '2014-3-01'.to_time, '4 weeks and 1 day', '4w1d'],
|
152
|
+
['2014-1-31'.to_time, '2014-3-02'.to_time, '4 weeks and 2 days', '4w2d'],
|
153
|
+
['2016-1-31'.to_time, '2016-3-01'.to_time, '4 weeks and 2 days', '4w2d'],
|
154
|
+
['2016-1-31'.to_time, '2016-3-02'.to_time, '1 month', '1mo']
|
155
|
+
].each do |start, finish, output, compact_result|
|
161
156
|
it "should be #{output}" do
|
162
157
|
expect(distance_of_time_in_words(start, finish, true)).to eq(output)
|
163
158
|
expect(distance_of_time_in_words(finish, start, true)).to eq(output)
|
159
|
+
expect(distance_of_time_in_words(start, finish, true, compact: true)).to eq(compact_result)
|
164
160
|
end
|
165
161
|
end
|
166
162
|
|
@@ -240,6 +236,38 @@ describe 'A better distance_of_time_in_words' do
|
|
240
236
|
end
|
241
237
|
end
|
242
238
|
end
|
239
|
+
|
240
|
+
describe 'with mixed inputs' do
|
241
|
+
# Further backwards compatability with the original rails
|
242
|
+
# distance_of_time_in_words helper.
|
243
|
+
[
|
244
|
+
[0, 2.5.minutes.to_i, '2 minutes and 30 seconds'],
|
245
|
+
[10.minutes.to_i, 0, '10 minutes'],
|
246
|
+
[0, 24.weeks.to_i, '5 months, 2 weeks, and 1 day'],
|
247
|
+
[0, 0, 'less than 1 second'],
|
248
|
+
].each do |start, finish, output|
|
249
|
+
it "should be #{output}" do
|
250
|
+
expect(distance_of_time_in_words(start, finish)).to eq(output)
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
context "of which one or both can't be converted to a Time value" do
|
255
|
+
let(:invalid_inputs) do
|
256
|
+
[
|
257
|
+
[nil, 5.minutes],
|
258
|
+
[nil, double(:does_not_respond_to_time)],
|
259
|
+
[nil],
|
260
|
+
[nil, nil],
|
261
|
+
]
|
262
|
+
end
|
263
|
+
|
264
|
+
it "should raise an ArgumentError" do
|
265
|
+
invalid_inputs.each do |start, finish|
|
266
|
+
expect { distance_of_time_in_words(start, finish) }.to raise_error(ArgumentError)
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
243
271
|
end
|
244
272
|
|
245
273
|
describe 'with output options' do
|
@@ -319,7 +347,34 @@ describe 'A better distance_of_time_in_words' do
|
|
319
347
|
end
|
320
348
|
|
321
349
|
if defined?(ActionView)
|
322
|
-
describe 'ActionView' do
|
350
|
+
describe 'ActionView without include seconds argument' do
|
351
|
+
[
|
352
|
+
[START_TIME,
|
353
|
+
START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
|
354
|
+
{ vague: true },
|
355
|
+
'about 1 year'],
|
356
|
+
[START_TIME,
|
357
|
+
START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
|
358
|
+
{ vague: 'Yes please' },
|
359
|
+
'about 1 year'],
|
360
|
+
[START_TIME,
|
361
|
+
START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
|
362
|
+
{ vague: false },
|
363
|
+
'1 year, 2 months, 3 weeks, 4 days, 5 hours, and 6 minutes'],
|
364
|
+
[START_TIME,
|
365
|
+
START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
|
366
|
+
{ vague: nil },
|
367
|
+
'1 year, 2 months, 3 weeks, 4 days, 5 hours, and 6 minutes']
|
368
|
+
].each do |start, finish, options, output|
|
369
|
+
it "should be #{output}" do
|
370
|
+
expect(distance_of_time_in_words(start, finish, options)).to eq(output)
|
371
|
+
end
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
if defined?(ActionView)
|
377
|
+
describe 'ActionView with include seconds argument' do
|
323
378
|
[
|
324
379
|
[START_TIME,
|
325
380
|
START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
|
@@ -342,7 +397,7 @@ describe 'A better distance_of_time_in_words' do
|
|
342
397
|
expect(distance_of_time_in_words(start, finish, true, options)).to eq(output)
|
343
398
|
end
|
344
399
|
end
|
345
|
-
|
400
|
+
|
346
401
|
context 'via ActionController::Base.helpers' do
|
347
402
|
it '#distance_of_time_in_words' do
|
348
403
|
end_time = START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds
|
@@ -368,32 +423,93 @@ describe 'A better distance_of_time_in_words' do
|
|
368
423
|
end
|
369
424
|
|
370
425
|
context 'without options' do
|
371
|
-
it 'shows detailed duration' do
|
426
|
+
it 'shows detailed duration without seconds' do
|
372
427
|
expected = '3 days and 14 minutes'
|
373
428
|
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(Time.now - 3.days - 14.minutes)
|
374
429
|
expect(actual).to eq(expected)
|
375
430
|
end
|
376
431
|
end
|
377
432
|
|
378
|
-
context 'with vague option true' do
|
433
|
+
context 'with seconds false and vague option true' do
|
434
|
+
it 'shows vague duration' do
|
435
|
+
expected = '3 days'
|
436
|
+
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
437
|
+
Time.now - 3.days - 14.minutes - 20.seconds, false, vague: true
|
438
|
+
)
|
439
|
+
expect(actual).to eq(expected)
|
440
|
+
end
|
441
|
+
end
|
442
|
+
|
443
|
+
context 'with seconds true and vague option true' do
|
379
444
|
it 'shows vague duration' do
|
380
445
|
expected = '3 days'
|
381
446
|
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
382
|
-
Time.now - 3.days - 14.minutes,
|
447
|
+
Time.now - 3.days - 14.minutes - 20.seconds, true, vague: true
|
383
448
|
)
|
384
449
|
expect(actual).to eq(expected)
|
385
450
|
end
|
386
451
|
end
|
387
452
|
|
388
|
-
context 'with vague option false' do
|
389
|
-
it 'shows detailed duration' do
|
453
|
+
context 'with seconds false and vague option false' do
|
454
|
+
it 'shows detailed duration without seconds' do
|
390
455
|
expected = '3 days and 14 minutes'
|
391
456
|
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
392
|
-
Time.now - 3.days - 14.minutes, false, vague: false
|
457
|
+
Time.now - 3.days - 14.minutes - 20.seconds, false, vague: false
|
393
458
|
)
|
394
459
|
expect(actual).to eq(expected)
|
395
460
|
end
|
396
461
|
end
|
462
|
+
|
463
|
+
context 'with seconds true and vague option false' do
|
464
|
+
it 'shows detailed duration with seconds' do
|
465
|
+
expected = '3 days, 14 minutes, and 20 seconds'
|
466
|
+
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
467
|
+
Time.now - 3.days - 14.minutes - 20.seconds, true, vague: false
|
468
|
+
)
|
469
|
+
expect(actual).to eq(expected)
|
470
|
+
end
|
471
|
+
end
|
472
|
+
|
473
|
+
context 'without seconds and vague option false' do
|
474
|
+
it 'shows detailed duration without seconds' do
|
475
|
+
expected = '3 days and 14 minutes'
|
476
|
+
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
477
|
+
Time.now - 3.days - 14.minutes - 20.seconds, vague: false
|
478
|
+
)
|
479
|
+
expect(actual).to eq(expected)
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
context 'without seconds and vague option true' do
|
484
|
+
it 'shows vague duration' do
|
485
|
+
expected = '3 days'
|
486
|
+
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
487
|
+
Time.now - 3.days - 14.minutes - 20.seconds, vague: true
|
488
|
+
)
|
489
|
+
expect(actual).to eq(expected)
|
490
|
+
end
|
491
|
+
end
|
492
|
+
|
493
|
+
context 'with options include_seconds true and vague option false' do
|
494
|
+
it 'shows detailed duration with seconds' do
|
495
|
+
expected = '3 days, 14 minutes, and 20 seconds'
|
496
|
+
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
497
|
+
Time.now - 3.days - 14.minutes - 20.seconds, {include_seconds: true, vague: false}
|
498
|
+
)
|
499
|
+
expect(actual).to eq(expected)
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
503
|
+
context 'with options include_seconds false and vague option true' do
|
504
|
+
it 'shows vague duration' do
|
505
|
+
expected = '3 days'
|
506
|
+
actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
|
507
|
+
Time.now - 3.days - 14.minutes - 20.seconds, {include_seconds: false, vague: true}
|
508
|
+
)
|
509
|
+
expect(actual).to eq(expected)
|
510
|
+
end
|
511
|
+
end
|
512
|
+
|
397
513
|
end
|
398
514
|
end
|
399
515
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dotiw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.3.
|
4
|
+
version: 5.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Bigg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-04-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|