duration-formatter 0.1.0 → 0.1.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
  SHA1:
3
- metadata.gz: 362806d4fd1479a215136e54b869b3ef3eac6a11
4
- data.tar.gz: 88d3b15b77583f7ed31b10eedd2e620b1503a12d
3
+ metadata.gz: 719df39ecfaa4879706be6e1c4ab68cdb7a9b7df
4
+ data.tar.gz: 6212e2a572bc0a72cde231bf1aa6db37a543e19f
5
5
  SHA512:
6
- metadata.gz: 6abdb35148cd2b78f9c362617ad8adb0e3eec2636523e692d3f74881de61edb54a473b05da6070acaa01755a61304e426bb71230f1773affe9aca4b660f9014a
7
- data.tar.gz: a3432217d85e8454b7a5d7b451ba3eef7f058ea20bdb4da1a79b1a159b4f64ddf1a063db675bec408103af8708bafecf46b9a6e12acc5707ab2ea3fc2b2038db
6
+ metadata.gz: b73e3c5dfa20f653f594dae622379e892dc59638ae928bfa7f80f02f6d2e661113665c70ebbfe1fe07037b4cc34ce96384b77006c7fce5f0a7f67c135fcc9b5b
7
+ data.tar.gz: 60734ab1ff638952b4f9e62832cc561085b63a1e91aaf6fc74eaeb580d04b45d46f91034dab7f591eb5bed403065510bb3e38bf83ecd5f6171d5f508c1e3245a
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ coverage
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0
6
+ - 2.1
7
+ - 2.2.1
8
+
9
+ addons:
10
+ code_climate:
11
+ repo_token: 6f0d10c80bdb323106984d5efade7844ddcc1f83439f3c2cb59046e1b643fb50
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- duration-formatter (0.0.1)
5
- ruby-duration (>= 3.2)
4
+ duration-formatter (0.1.1)
5
+ ruby-duration (~> 3.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -13,7 +13,10 @@ GEM
13
13
  minitest (~> 5.1)
14
14
  thread_safe (~> 0.3, >= 0.3.4)
15
15
  tzinfo (~> 1.1)
16
+ codeclimate-test-reporter (0.4.7)
17
+ simplecov (>= 0.7.1, < 1.0.0)
16
18
  coderay (1.1.0)
19
+ docile (1.1.5)
17
20
  ffi (1.9.10)
18
21
  formatador (0.2.5)
19
22
  guard (2.12.7)
@@ -46,6 +49,7 @@ GEM
46
49
  coderay (~> 1.1.0)
47
50
  method_source (~> 0.8.1)
48
51
  slop (~> 3.4)
52
+ rake (10.4.2)
49
53
  rb-fsevent (0.9.5)
50
54
  rb-inotify (0.9.5)
51
55
  ffi (>= 0.5.0)
@@ -54,6 +58,11 @@ GEM
54
58
  i18n
55
59
  iso8601
56
60
  shellany (0.0.1)
61
+ simplecov (0.10.0)
62
+ docile (~> 1.1.0)
63
+ json (~> 1.8)
64
+ simplecov-html (~> 0.10.0)
65
+ simplecov-html (0.10.0)
57
66
  slop (3.6.0)
58
67
  thor (0.19.1)
59
68
  thread_safe (0.3.5)
@@ -64,10 +73,11 @@ PLATFORMS
64
73
  ruby
65
74
 
66
75
  DEPENDENCIES
76
+ codeclimate-test-reporter (~> 0.4)
67
77
  duration-formatter!
68
78
  guard (~> 2.12)
69
79
  guard-minitest (~> 2.4)
70
- rb-fsevent (~> 0.9)
80
+ rake (~> 10.4)
71
81
 
72
82
  BUNDLED WITH
73
83
  1.10.3
data/README.md ADDED
@@ -0,0 +1,56 @@
1
+ #duration-formatter
2
+
3
+ A simple gem to parse minutes into a readable format using [ruby-duration](https://github.com/peleteiro/ruby-duration).
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/duration-formatter.svg)](http://badge.fury.io/rb/duration-formatter) [![Code Climate](https://codeclimate.com/github/richardvenneman/duration-formatter/badges/gpa.svg)](https://codeclimate.com/github/richardvenneman/duration-formatter) [![Dependency Status](https://gemnasium.com/richardvenneman/duration-formatter.svg)](https://gemnasium.com/richardvenneman/duration-formatter) [![Test Coverage](https://codeclimate.com/github/richardvenneman/duration-formatter/badges/coverage.svg)](https://codeclimate.com/github/richardvenneman/duration-formatter/coverage) [![Build Status](http://img.shields.io/travis/richardvenneman/duration-formatter.svg)](https://travis-ci.org/richardvenneman/duration-formatter)
6
+
7
+ ## Installation
8
+
9
+ Add it to your Gemfile with:
10
+
11
+ ```ruby
12
+ gem 'duration-formatter'
13
+ ```
14
+
15
+ Run the `bundle install` in your terminal command to install it.
16
+
17
+ ## Usage
18
+
19
+ The gem exposes a class `FormattedDuration` which takes the passed minutes to determine the format. Calling `format` on the instance returns the formatted duration. Examples:
20
+
21
+ ```ruby
22
+ # Full units
23
+ FormattedDuration.new(10080).format # => 1 week
24
+ FormattedDuration.new(1440).format # => 1 day
25
+ FormattedDuration.new(240).format # => 4 hours
26
+ FormattedDuration.new(20).format # => 20 minutes
27
+
28
+ # Composition
29
+ FormattedDuration.new(15840).format # => 1 week, 4 days
30
+ FormattedDuration.new(1450).format # => 1 day, 10 minutes
31
+ FormattedDuration.new(241).format # => 4 hours, 1 minute
32
+ ```
33
+
34
+ You can also force a constraint upon the format.
35
+
36
+ ```
37
+ FormattedDuration.new(1440, :hours).format # => 24 hours
38
+ FormattedDuration.new(11520, :days).format # => 15 days
39
+ ```
40
+
41
+ ## TODO
42
+
43
+ This gem is a work-in-progress. Planned features:
44
+
45
+ 1. Seconds support
46
+ 2. Support “half” units, e.g. 90 minutes becomes 1½ hours
47
+
48
+ ## Contributing
49
+
50
+ Everyone is encouraged to help improve this project. Here are a few ways you can help:
51
+
52
+ - Report bugs
53
+ - Fix bugs and submit pull requests
54
+ - Write, clarify, or fix documentation
55
+ - Suggest or add new features
56
+ - Write missing tests
@@ -18,7 +18,8 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.add_dependency 'ruby-duration', '~> 3.2'
20
20
 
21
+ s.add_development_dependency 'rake', '~> 10.4'
21
22
  s.add_development_dependency 'guard', '~> 2.12'
22
23
  s.add_development_dependency 'guard-minitest', '~> 2.4'
23
- s.add_development_dependency 'rb-fsevent', '~> 0.9'
24
+ s.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
24
25
  end
@@ -1,3 +1,3 @@
1
1
  module DurationFormatter
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -1,6 +1,7 @@
1
1
  require 'ruby-duration'
2
2
 
3
3
  class FormattedDuration
4
+ WEEKS_FORMAT = '%w %~w'
4
5
  DAYS_FORMAT = '%d %~d'
5
6
  HOURS_FORMAT = '%h %~h'
6
7
  MINUTES_FORMAT = '%m %~m'
@@ -9,13 +10,16 @@ class FormattedDuration
9
10
  @minutes = minutes % 60
10
11
  @hours = minutes / 60
11
12
  @days = @hours / 24
13
+ @weeks = @days / 7
12
14
  end
13
15
 
14
16
  def format
17
+ weekless_days = @days % 7
15
18
  dayless_hours = @hours % 24
16
19
  output = []
17
20
 
18
- output << Duration.new(days: @days).format(DAYS_FORMAT) if @days != 0
21
+ output << Duration.new(weeks: @weeks).format(WEEKS_FORMAT) if @weeks != 0
22
+ output << Duration.new(days: weekless_days).format(DAYS_FORMAT) if weekless_days != 0
19
23
  output << Duration.new(hours: dayless_hours).format(HOURS_FORMAT) if dayless_hours != 0
20
24
  output << Duration.new(minutes: @minutes).format(MINUTES_FORMAT) if @minutes != 0
21
25
 
@@ -1,6 +1,13 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class FormattedDurationTest < Minitest::Test
4
+ def test_weeks_only_duration
5
+ text = '1 week'
6
+ output = FormattedDuration.new(10080).format
7
+
8
+ assert_equal text, output
9
+ end
10
+
4
11
  def test_days_only_duration
5
12
  text = '1 day'
6
13
  output = FormattedDuration.new(1440).format
@@ -22,6 +29,13 @@ class FormattedDurationTest < Minitest::Test
22
29
  assert_equal text, output
23
30
  end
24
31
 
32
+ def test_weeks_and_days_duration
33
+ text = '1 week, 4 days'
34
+ output = FormattedDuration.new(15840).format
35
+
36
+ assert_equal text, output
37
+ end
38
+
25
39
  def test_days_and_hours_duration
26
40
  text = '1 day, 4 hours'
27
41
  output = FormattedDuration.new(1680).format
data/test/test_helper.rb CHANGED
@@ -1,3 +1,10 @@
1
+ # Coverage
2
+ require 'codeclimate-test-reporter'
3
+ CodeClimate::TestReporter.start if ENV['CODECLIMATE_REPO_TOKEN']
4
+
5
+ # Source files
1
6
  require './lib/formatted_duration'
7
+
8
+ # Support
2
9
  require 'minitest/autorun'
3
10
  require 'minitest/pride'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duration-formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Venneman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-02 00:00:00.000000000 Z
11
+ date: 2015-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-duration
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.4'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.4'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: guard
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -53,19 +67,19 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '2.4'
55
69
  - !ruby/object:Gem::Dependency
56
- name: rb-fsevent
70
+ name: codeclimate-test-reporter
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0.9'
75
+ version: '0.4'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0.9'
82
+ version: '0.4'
69
83
  description: |-
70
84
  A simple gem to parse minutes into a readable format using
71
85
  ruby-duration.
@@ -74,9 +88,12 @@ executables: []
74
88
  extensions: []
75
89
  extra_rdoc_files: []
76
90
  files:
91
+ - ".gitignore"
92
+ - ".travis.yml"
77
93
  - Gemfile
78
94
  - Gemfile.lock
79
95
  - Guardfile
96
+ - README.md
80
97
  - Rakefile
81
98
  - duration-formatter.gemspec
82
99
  - lib/duration-formatter.rb