activesupport-duration-human_string 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f26808d70339292160cc34e94c6c4bf3d4b76a344269e51a714da471706d45f
|
4
|
+
data.tar.gz: b00aa1e03d68ece37ba93ab7ae765d3dca9c11bd5da32b8d2055083a4a14981e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c032fe5ce288994bb132f3896de00d3e6a45169bc57eaf9b5fb441c6049d593b105bf4d47ee3847405c3e40f378b4cf7c5df13321549d870055f28406f9a75d9
|
7
|
+
data.tar.gz: 9707cfa9cbeff415f31f67f8fd2955cb660874c6c160df0e3a67b60e6a85ff43cca23d951de356af11a4be12480ca04c7619c1c5c3d96e14c0416d145cab201c
|
data/Readme.md
CHANGED
@@ -1,10 +1,21 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
Convert [ActiveSupport::Duration](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html)
|
4
|
-
|
5
|
-
|
6
|
-
- Like [
|
7
|
-
|
1
|
+
# ActiveSupport::Duration#human_string [![Gem Version](https://badge.fury.io/rb/activesupport-duration-human_string.svg)](https://badge.fury.io/rb/activesupport-duration-human_string)
|
2
|
+
|
3
|
+
Convert [ActiveSupport::Duration](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html)
|
4
|
+
objects to human-friendly strings like `'2h 30m 17s'` or `'3y 6m 4d 12h 30m 5s'`.
|
5
|
+
|
6
|
+
- Like [`distance_of_time_in_words`](https://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-distance_of_time_in_words)
|
7
|
+
helper but _exact_ rather than approximate
|
8
|
+
- `distance_of_time_in_words` is somewhat configurable but only gives an approximation (`'over 3
|
9
|
+
years'`), with no option to print the exact number of each units.
|
10
|
+
- Like [`#inspect`](https://github.com/rails/rails/blob/b9ca94caea2ca6a6cc09abaffaad67b447134079/activesupport/lib/active_support/duration.rb#L372)
|
11
|
+
but more concise and configurable.
|
12
|
+
- `#inspect` is long (`'3 years, 6 months, 4 days, 12 hours, 30 minutes, and 5 seconds'`) and not
|
13
|
+
at all configurable.
|
14
|
+
- Like [`#iso8601`](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html#method-i-iso8601)
|
15
|
+
but more human readable rather than machine readable.
|
16
|
+
- `#iso8601` is concise and machine-readable, but not very human-readable (`'P3Y6M4DT12H30M5S'`)!
|
17
|
+
- Unlike [`#to_s`](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html#method-i-to_s),
|
18
|
+
which is very concise (`'110839937'`) but not at all human-readable for large durations
|
8
19
|
|
9
20
|
## Installation
|
10
21
|
|
@@ -17,15 +28,18 @@ gem 'activesupport-duration-human_string'
|
|
17
28
|
## Usage
|
18
29
|
|
19
30
|
```ruby
|
20
|
-
duration =
|
21
|
-
duration.human_str # => '1m 5s'
|
22
|
-
duration.human_str(use_2_digit_numbers: true) # => '1m 05s'
|
23
|
-
|
24
|
-
duration = ActiveSupport::Duration.build(3500)
|
31
|
+
duration = 3500.seconds
|
25
32
|
duration.human_str # => '58m 20s'
|
26
33
|
duration.human_str(delimiter: '') # => '58m20s'
|
27
34
|
duration.human_str(separator: ' ') # => '58 m 20 s'
|
28
35
|
duration.human_str(delimiter: ', ', separator: ' ') # => '58 m, 20 s'
|
36
|
+
|
37
|
+
duration = ActiveSupport::Duration.parse "P3Y6M4DT12H30M5S"
|
38
|
+
# => 3 years, 6 months, 4 days, 12 hours, 30 minutes, and 5 seconds
|
39
|
+
|
40
|
+
duration.human_str # => "3y 6m 4d 12h 30m 5s"
|
41
|
+
(duration - 4.days).human_str # => "3y 6m 12h 30m 5s"
|
42
|
+
duration.human_str(delimiter: ', ') # => "3y, 6m, 4d, 12h, 30m, 5s"
|
29
43
|
```
|
30
44
|
|
31
45
|
Also aliased as `human_string`, `to_human_s`.
|
@@ -3,25 +3,32 @@ require 'active_support/duration/iso8601_serializer'
|
|
3
3
|
|
4
4
|
module ActiveSupport
|
5
5
|
class Duration
|
6
|
-
# Convert [ActiveSupport::Duration](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html)
|
6
|
+
# Convert [ActiveSupport::Duration](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html)
|
7
|
+
# objects to human-friendly strings like `'2h 30m 17s'` or `'3y 6m 4d 12h 30m 5s'`.
|
7
8
|
#
|
8
|
-
# Like [`distance_of_time_in_words`](https://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html) helper but _exact_ rather than approximate.
|
9
|
-
#
|
9
|
+
# - Like [`distance_of_time_in_words`](https://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html) helper but _exact_ rather than approximate.
|
10
|
+
# - Like [`#inspect`](https://github.com/rails/rails/blob/b9ca94caea2ca6a6cc09abaffaad67b447134079/activesupport/lib/active_support/duration.rb#L372) but more concise and configurable.
|
11
|
+
# - Like [`#iso8601`](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html#method-i-iso8601) but more human readable rather than machine readable.
|
10
12
|
#
|
11
13
|
# Note that the unit 'm' is used for both months and minutes.
|
12
14
|
#
|
13
15
|
# ## Examples
|
14
16
|
#
|
15
|
-
#
|
16
|
-
# duration
|
17
|
-
# duration.human_str(use_2_digit_numbers: true) # => '1m 05s'
|
18
|
-
#
|
19
|
-
# duration = ActiveSupport::Duration.build(3500)
|
17
|
+
# ```ruby
|
18
|
+
# duration = 3500.seconds
|
20
19
|
# duration.human_str # => '58m 20s'
|
21
20
|
# duration.human_str(delimiter: '') # => '58m20s'
|
22
21
|
# duration.human_str(separator: ' ') # => '58 m 20 s'
|
23
22
|
# duration.human_str(delimiter: ', ', separator: ' ') # => '58 m, 20 s'
|
24
23
|
#
|
24
|
+
# duration = ActiveSupport::Duration.parse "P3Y6M4DT12H30M5S"
|
25
|
+
# # => 3 years, 6 months, 4 days, 12 hours, 30 minutes, and 5 seconds
|
26
|
+
#
|
27
|
+
# duration.human_str # => "3y 6m 4d 12h 30m 5s"
|
28
|
+
# (duration - 4.days).human_str # => "3y 6m 12h 30m 5s"
|
29
|
+
# duration.human_str(delimiter: ', ') # => "3y, 6m, 4d, 12h, 30m, 5s"
|
30
|
+
# ```
|
31
|
+
#
|
25
32
|
# ## Options
|
26
33
|
#
|
27
34
|
# `:precision`: Precision of seconds (defaults to nil, which is no digits after decimal).
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'active_support/duration/human_string'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activesupport-duration-human_string
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Rick
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- bin/setup
|
94
94
|
- lib/active_support/duration/human_string.rb
|
95
95
|
- lib/active_support/duration/human_string/version.rb
|
96
|
+
- lib/activesupport-duration-human_string.rb
|
96
97
|
homepage: https://github.com/TylerRick/activesupport-duration-human_string
|
97
98
|
licenses:
|
98
99
|
- MIT
|