dotiw 5.3.2 → 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 +4 -0
- data/README.markdown +16 -0
- data/lib/dotiw/methods.rb +15 -2
- data/lib/dotiw/version.rb +1 -1
- data/spec/lib/dotiw_spec.rb +32 -5
- 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,7 @@
|
|
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
|
+
|
1
5
|
## 5.3.2 (2021/11/08)
|
2
6
|
|
3
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).
|
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
|
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)
|
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(
|
@@ -241,6 +236,38 @@ describe 'A better distance_of_time_in_words' do
|
|
241
236
|
end
|
242
237
|
end
|
243
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
|
244
271
|
end
|
245
272
|
|
246
273
|
describe 'with output options' do
|
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
|