human_duration 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34fcb063f0ad7d76dc1d62a289263fdbd25e236e4f589a25490947735333264d
4
- data.tar.gz: ee2ca9c18f07f7ccc27dd495471c5eac486781103f785652144db5dfe77e1cd4
3
+ metadata.gz: 102134bea90036b011d22347bc8f8470f4b4dd15772fd9b9cde82e99e2592245
4
+ data.tar.gz: 667534f6929deba4722e44a773f7420ea8eab1b35f02df893cac4b2b7e70952b
5
5
  SHA512:
6
- metadata.gz: 0f3f5225dc736788e4489fddceed77e404f0545ed560a28dec47a6d6c6db95e966a7b5fb2da999647275d145066c964903d197720a63a6be62bebe8d0da9f179
7
- data.tar.gz: a046d4634d2701080a08a61122b9cc3bcb32ca128f74fc38c26f95ce09f88058544fee18cb05e4b31b9ea5a1c091589cb149bdc11c62dfdb585baf4bdf449ecc
6
+ metadata.gz: d79a19c23c24ae488e85a95a4d25303894e945575173f04fc1d754a5847aea58e96475bd36de0ba629a358367e1308aec8672a514ff17b686e539b3abdd6eda8
7
+ data.tar.gz: dee5232b143c5a3a6d24a0c764a3d9374e40cd0d1d0433ff88117804bb0e2ae5862f090c345bf02d553ee8c0d05bbc5ade3acd44ae96027a7c5421458c280574
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /Gemfile.lock
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.0.1 (January 17, 2019)
2
+
3
+ CHANGES:
4
+
5
+ * Added a new direct access method so that you can call humanize directly. ([@TGWolf][])
6
+ * Updated the example.rb to show the new method in actions. ([@TGWolf][])
7
+ * Updated the docs to detail this new access method. ([@TGWolf][])
8
+
1
9
  ## 1.0.0 (January 17, 2019)
2
10
 
3
11
  * Initial Release ([@TGWolf][])
data/README.md CHANGED
@@ -1,13 +1,14 @@
1
1
  [![Build Status](https://img.shields.io/travis/WolfSoftware/human_duration/master.svg)](https://travis-ci.org/WolfSoftware/human_duration)
2
2
  [![Software License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)
3
3
  [![Release](https://img.shields.io/github/release/wolfsoftware/human_duration.svg)](https://github.com/wolfsoftware/human_duration/releases/latest)
4
+ [![Gem Version](https://badge.fury.io/rb/human_duration.svg)](https://badge.fury.io/rb/human_duration)
4
5
  [![Github commits (since latest release)](https://img.shields.io/github/commits-since/wolfsoftware/human_duration/latest.svg)](https://github.com/wolfsoftware/human_duration/commits)
5
6
  [![GitHub repo size in bytes](https://img.shields.io/github/repo-size/wolfsoftware/human_duration.svg)](https://github.com/wolfsoftware/human_duration)
6
7
  [![GitHub contributors](https://img.shields.io/github/contributors/wolfsoftware/human_duration.svg)](https://github.com/wolfsoftware/human_duration)
7
8
 
8
9
  # HumanDuration
9
10
 
10
- Human Durartion is a simple ruby gem to convert a number of seconds into a more human readable version.
11
+ Human Durartion is a simple ruby gem to convert a number of seconds into a more human readable form.
11
12
 
12
13
  ## Installation
13
14
 
@@ -27,6 +28,14 @@ Or install it yourself as:
27
28
 
28
29
  ## Usage
29
30
 
31
+ The main function that needs to be called is the 'humanize' function but there are 3 different ways to do this (as show in the code snippet below)
32
+
33
+ * Class method access - `hd = HumanDuration.new` followed by `hd.humanize(x)`
34
+ * Static method access - `HumanDurationStatic.humanize(x)`
35
+ * Direct method access - `humanize(x)`
36
+
37
+ The first method is the main/original method for accessing this function, the other 2 are simple wrappers to the first.
38
+
30
39
  ```ruby
31
40
  #!/usr/bin/env ruby
32
41
 
@@ -47,6 +56,14 @@ puts 'Config: default'
47
56
  test_value.each do |x|
48
57
  puts HumanDurationStatic.humanize(x)
49
58
  end
59
+
60
+ puts 'Direct method access'
61
+
62
+ puts 'Config: default'
63
+ test_value.each do |x|
64
+ puts humanize(x)
65
+ end
66
+
50
67
  ```
51
68
 
52
69
  It is possible to configure the output using one of the options 'compact', 'small' and 'full', 'compact' isthe default. For more detailed example please refer to [example/example.rb](https://github.com/WolfSoftware/human_duration/blob/master/example/example.rb)
data/example/example.rb CHANGED
@@ -39,3 +39,20 @@ puts "\tConfig: type = full"
39
39
  test_value.each do |x|
40
40
  printf "\t\t%s\n", HumanDurationStatic.humanize(x)
41
41
  end
42
+
43
+ puts 'Direct method access'
44
+
45
+ printf "\tConfig: type = conpact [default]\n"
46
+ test_value.each do |x|
47
+ printf "\t\t%s\n", humanize(x)
48
+ end
49
+
50
+ printf "\tConfig: type = short\n"
51
+ test_value.each do |x|
52
+ printf "\t\t%s\n", humanize(x)
53
+ end
54
+
55
+ puts "\tConfig: type = full"
56
+ test_value.each do |x|
57
+ printf "\t\t%s\n", humanize(x)
58
+ end
@@ -8,16 +8,12 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Tim Gurney aka Wolf"]
9
9
  spec.email = ["wolf@tgwolf.com"]
10
10
 
11
- spec.summary = %q{Display elapsed time in a more human readable way.}
12
- spec.description = %q{Display elapsed time in a more human readable way.}
11
+ spec.summary = %q{Human Durartion is a simple ruby gem to convert a number of seconds into a more human readable form.}
12
+ spec.description = %q{Human Durartion is a simple ruby gem to convert a number of seconds into a more human readable form.}
13
13
  spec.homepage = "https://github.com/WolfSoftware/human_duration"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
- # spec.files = Dir['lib/**/*.rb']
18
- # spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
- # f.match(%r{^(test|spec|features)/})
20
- # end
21
17
  spec.bindir = "exe"
22
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
19
  spec.require_paths = ["lib"]
@@ -1,3 +1,3 @@
1
1
  class HumanDuration
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.0.1'.freeze
3
3
  end
@@ -1,6 +1,26 @@
1
1
  require 'human_duration/version'
2
2
 
3
- # Doc here
3
+ # -------------------------------------------------------------------------------- #
4
+ # Description #
5
+ # -------------------------------------------------------------------------------- #
6
+ # Display elapsed time in a more human readable way. #
7
+ # -------------------------------------------------------------------------------- #
8
+
9
+ # -------------------------------------------------------------------------------- #
10
+ # Description #
11
+ # -------------------------------------------------------------------------------- #
12
+ # This is a simple global method to short cut the usage of the class below. #
13
+ # -------------------------------------------------------------------------------- #
14
+ def humanize(seconds, config = { 'type' => 'compact' })
15
+ hd = HumanDuration.new(config)
16
+ hd.humanize(seconds)
17
+ end
18
+
19
+ # -------------------------------------------------------------------------------- #
20
+ # Description #
21
+ # -------------------------------------------------------------------------------- #
22
+ # This is a static access wrapper to the main HumanDuration class below. #
23
+ # -------------------------------------------------------------------------------- #
4
24
  class HumanDurationStatic
5
25
  def self.humanize(seconds, config = { 'type' => 'compact' })
6
26
  hd = HumanDuration.new(config)
@@ -8,7 +28,12 @@ class HumanDurationStatic
8
28
  end
9
29
  end
10
30
 
11
- # Doc here
31
+ # -------------------------------------------------------------------------------- #
32
+ # Description #
33
+ # -------------------------------------------------------------------------------- #
34
+ # This is the main class and the one that does all the real work and is called by #
35
+ # the static access class and the direct method access above. #
36
+ # -------------------------------------------------------------------------------- #
12
37
  class HumanDuration
13
38
  def initialize(config = { 'type' => 'compact' })
14
39
  @config = config
@@ -238,6 +238,110 @@ RSpec.describe HumanDuration do
238
238
  end
239
239
  end
240
240
  end
241
+
242
+ context 'Direct method access' do
243
+ context 'Using default compact mode' do
244
+ it 'says negative for seconds < 0 (Negative value test)' do
245
+ expect(humanize(-1)).to eql('negative')
246
+ end
247
+
248
+ it 'says now for 0 seconds (Zero second test)' do
249
+ expect(humanize(0)).to eql('now')
250
+ end
251
+
252
+ it 'says \'1 second\' for 1 second (Singular test)' do
253
+ expect(humanize(1)).to eql('1 second')
254
+ end
255
+
256
+ it 'says \'10 seconds\' for 10 second (Plural test)' do
257
+ expect(humanize(10)).to eql('10 seconds')
258
+ end
259
+
260
+ it 'says \'1 minute\' for 60 seconds' do
261
+ expect(humanize(60)).to eql('1 minute')
262
+ end
263
+
264
+ it 'says \'1 hour\' for 3600 seconds' do
265
+ expect(humanize(360_0)).to eql('1 hour')
266
+ end
267
+
268
+ it 'says \'1 year\' for 31536000 seconds' do
269
+ expect(humanize(315_360_00)).to eql('1 year')
270
+ end
271
+
272
+ it 'says \'1 year, 2 hours and 13 seconds\' for 31543213 seconds' do
273
+ expect(humanize(315_432_13)).to eql('1 year, 2 hours and 13 seconds')
274
+ end
275
+ end
276
+
277
+ context 'Using short mode' do
278
+ it 'says negative for seconds < 0 (Negative value test)' do
279
+ expect(humanize(-1, 'type' => 'short')).to eql('negative')
280
+ end
281
+
282
+ it 'says now for 0 seconds (Zero second test)' do
283
+ expect(humanize(0, 'type' => 'short')).to eql('now')
284
+ end
285
+
286
+ it 'says \'1 s\' for 1 second (Singular test)' do
287
+ expect(humanize(1, 'type' => 'short')).to eql('1 s')
288
+ end
289
+
290
+ it 'says \'10 s\' for 10 second (Plural test)' do
291
+ expect(humanize(10, 'type' => 'short')).to eql('10 s')
292
+ end
293
+
294
+ it 'says \'1 m\' for 60 seconds' do
295
+ expect(humanize(60, 'type' => 'short')).to eql('1 m')
296
+ end
297
+
298
+ it 'says \'1 h\' for 3600 seconds' do
299
+ expect(humanize(360_0, 'type' => 'short')).to eql('1 h')
300
+ end
301
+
302
+ it 'says \'1 y\' for 31536000 seconds' do
303
+ expect(humanize(315_360_00, 'type' => 'short')).to eql('1 y')
304
+ end
305
+
306
+ it 'says \'1 y, 2 h & 13 s\' for 31543213 seconds' do
307
+ expect(humanize(315_432_13, 'type' => 'short')).to eql('1 y, 2 h & 13 s')
308
+ end
309
+ end
310
+
311
+ context 'Using full mode' do
312
+ it 'says negative for seconds < 0 (Negative value test)' do
313
+ expect(humanize(-1, 'type' => 'full')).to eql('negative')
314
+ end
315
+
316
+ it 'says now for 0 seconds (Zero second test)' do
317
+ expect(humanize(0, 'type' => 'full')).to eql('now')
318
+ end
319
+
320
+ it 'says \'0 years, 0 days, 0 hours, 0 minutes and 1 second\' for 1 second (Singular test)' do
321
+ expect(humanize(1, 'type' => 'full')).to eql('0 years, 0 days, 0 hours, 0 minutes and 1 second')
322
+ end
323
+
324
+ it 'says \'0 years, 0 days, 0 hours, 0 minutes and 10 seconds\' for 10 second (Plural test)' do
325
+ expect(humanize(10, 'type' => 'full')).to eql('0 years, 0 days, 0 hours, 0 minutes and 10 seconds')
326
+ end
327
+
328
+ it 'says \'0 years, 0 days, 0 hours, 1 minute and 0 seconds\' for 60 seconds' do
329
+ expect(humanize(60, 'type' => 'full')).to eql('0 years, 0 days, 0 hours, 1 minute and 0 seconds')
330
+ end
331
+
332
+ it 'says \'0 years, 0 days, 1 hour, 0 minutes and 0 seconds\' for 3600 seconds' do
333
+ expect(humanize(360_0, 'type' => 'full')).to eql('0 years, 0 days, 1 hour, 0 minutes and 0 seconds')
334
+ end
335
+
336
+ it 'says \'1 year, 0 days, 0 hours, 0 minutes and 0 seconds\' for 31536000 seconds' do
337
+ expect(humanize(315_360_00, 'type' => 'full')).to eql('1 year, 0 days, 0 hours, 0 minutes and 0 seconds')
338
+ end
339
+
340
+ it 'says \'1 year, 0 days, 2 hours, 0 minutes and 13 seconds\' for 31543213 seconds' do
341
+ expect(humanize(315_432_13, 'type' => 'full')).to eql('1 year, 0 days, 2 hours, 0 minutes and 13 seconds')
342
+ end
343
+ end
344
+ end
241
345
  end
242
346
 
243
347
  # rubocop:enable Metrics/BlockLength
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: human_duration
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Gurney aka Wolf
@@ -52,7 +52,8 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
- description: Display elapsed time in a more human readable way.
55
+ description: Human Durartion is a simple ruby gem to convert a number of seconds into
56
+ a more human readable form.
56
57
  email:
57
58
  - wolf@tgwolf.com
58
59
  executables: []
@@ -67,7 +68,6 @@ files:
67
68
  - CODEOWNERS
68
69
  - CODE_OF_CONDUCT.md
69
70
  - Gemfile
70
- - Gemfile.lock
71
71
  - LICENSE.txt
72
72
  - README.md
73
73
  - Rakefile
@@ -101,5 +101,6 @@ requirements: []
101
101
  rubygems_version: 3.0.2
102
102
  signing_key:
103
103
  specification_version: 4
104
- summary: Display elapsed time in a more human readable way.
104
+ summary: Human Durartion is a simple ruby gem to convert a number of seconds into
105
+ a more human readable form.
105
106
  test_files: []
data/Gemfile.lock DELETED
@@ -1,35 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- human_duration (0.1.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- diff-lcs (1.3)
10
- rake (10.5.0)
11
- rspec (3.8.0)
12
- rspec-core (~> 3.8.0)
13
- rspec-expectations (~> 3.8.0)
14
- rspec-mocks (~> 3.8.0)
15
- rspec-core (3.8.0)
16
- rspec-support (~> 3.8.0)
17
- rspec-expectations (3.8.2)
18
- diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.8.0)
20
- rspec-mocks (3.8.0)
21
- diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.8.0)
23
- rspec-support (3.8.0)
24
-
25
- PLATFORMS
26
- ruby
27
-
28
- DEPENDENCIES
29
- bundler (~> 1.16)
30
- human_duration!
31
- rake (~> 10.0)
32
- rspec (~> 3.0)
33
-
34
- BUNDLED WITH
35
- 1.16.1