ruby-progressbar 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -19,6 +19,7 @@ Supported Rubies
19
19
  It's Better Than The Other 186,312 Progress Bar Libraries Because...
20
20
  --------------------------------
21
21
  * Full test suite [![Build Status](https://secure.travis-ci.org/jfelchner/ruby-progressbar.png?branch=master)](http://travis-ci.org/jfelchner/ruby-progressbar)
22
+ * _**ZERO**_ dependencies
22
23
  * Used by tons of other open source projects (which means we find out about bugs quickly)
23
24
  * It's pretty [freakin' sweet](https://www.youtube.com/watch?v=On3IoVhf_GM)
24
25
  * We have a road map of new features to make it even better
@@ -393,5 +394,5 @@ And a special thanks to [Satoru Takabayashi](http://namazu.org/~satoru/) who was
393
394
  License
394
395
  --------------------------------
395
396
 
396
- ruby-progressbar 1.0 is Copyright © 2011-2012 The Kompanee. It is free software, and may be redistributed under the terms specified in the LICENSE file.
397
+ ruby-progressbar 1.0 is Copyright © 2011-2014 The Kompanee. It is free software, and may be redistributed under the terms specified in the LICENSE file.
397
398
  ruby-progressbar 0.9.0 is Copyright © 2008 [Satoru Takabayashi](http://namazu.org/~satoru/)
@@ -27,7 +27,7 @@ class ProgressBar
27
27
 
28
28
  with_update do
29
29
  with_progressables(:start, options)
30
- @elapsed_time.start
30
+ with_timers(:start)
31
31
  end
32
32
  end
33
33
 
@@ -35,26 +35,26 @@ class ProgressBar
35
35
  # Updating The Bar's Progress
36
36
  #
37
37
  def decrement
38
- with_update { with_progressables(:decrement) }
38
+ update_progress(:decrement)
39
39
  end
40
40
 
41
41
  def increment
42
- with_update { with_progressables(:increment) }
42
+ update_progress(:increment)
43
43
  end
44
44
 
45
45
  def progress=(new_progress)
46
- with_update { with_progressables(:progress=, new_progress) }
46
+ update_progress(:progress=, new_progress)
47
47
  end
48
48
 
49
49
  def total=(new_total)
50
- with_update { with_progressables(:total=, new_total) }
50
+ update_progress(:total=, new_total)
51
51
  end
52
52
 
53
53
  ###
54
54
  # Stopping The Bar
55
55
  #
56
56
  def finish
57
- with_update { with_progressables(:finish) } unless finished?
57
+ with_update { with_progressables(:finish); with_timers(:stop) } unless finished?
58
58
  end
59
59
 
60
60
  def pause
@@ -83,7 +83,11 @@ class ProgressBar
83
83
  alias :paused? :stopped?
84
84
 
85
85
  def finished?
86
- @bar.progress == @bar.total
86
+ @estimated_time.finished? && @bar.finished?
87
+ end
88
+
89
+ def started?
90
+ @estimated_time.started? && @elapsed_time.started? && @bar.started?
87
91
  end
88
92
 
89
93
  ###
@@ -158,14 +162,19 @@ class ProgressBar
158
162
  @elapsed_time.send(*args)
159
163
  end
160
164
 
165
+ def update_progress(*args)
166
+ with_update do
167
+ with_progressables(*args)
168
+ with_timers(:stop) if finished?
169
+ end
170
+ end
171
+
161
172
  def with_update
162
173
  yield
163
174
  update
164
175
  end
165
176
 
166
177
  def update(options = {})
167
- with_timers(:stop) if finished?
168
-
169
178
  if length_changed?
170
179
  clear
171
180
  reset_length
@@ -32,9 +32,9 @@ class ProgressBar
32
32
 
33
33
  private
34
34
  def estimated_time
35
- return '??:??:??' if progress_made.zero?
35
+ return '??:??:??' if progress_made.zero? || total.nil?
36
36
 
37
- hours, minutes, seconds = divide_seconds(estimated_seconds_remaining)
37
+ hours, minutes, seconds = *divide_seconds(estimated_seconds_remaining)
38
38
 
39
39
  if hours > 99 && @out_of_bounds_time_format
40
40
  out_of_bounds_time
@@ -1,3 +1,5 @@
1
+ require 'ruby-progressbar/errors/invalid_progress_error'
2
+
1
3
  class ProgressBar
2
4
  module Components
3
5
  module Progressable
@@ -29,11 +31,19 @@ class ProgressBar
29
31
  !!self.starting_position
30
32
  end
31
33
 
34
+ def finished?
35
+ self.progress == self.total
36
+ end
37
+
32
38
  def increment
39
+ STDOUT.puts "WARNING: Your progress bar is currently at #{progress} out of #{total} and cannot be incremented. In v2.0.0 this will become a ProgressBar::InvalidProgressError." if progress == total
40
+
33
41
  self.progress += 1 unless progress == total
34
42
  end
35
43
 
36
44
  def decrement
45
+ STDOUT.puts "WARNING: Your progress bar is currently at #{progress} out of #{total} and cannot be decremented. In v2.0.0 this will become a ProgressBar::InvalidProgressError." if progress == 0
46
+
37
47
  self.progress -= 1 unless progress == 0
38
48
  end
39
49
 
@@ -76,11 +86,11 @@ class ProgressBar
76
86
 
77
87
  private
78
88
  def validate_total(new_total)
79
- (progress.nil? || new_total.nil? || new_total >= progress) || raise("You can't set the item's total value to be less than the current progress.")
89
+ (progress.nil? || new_total.nil? || new_total >= progress) || raise(ProgressBar::InvalidProgressError, "You can't set the item's total value to be less than the current progress.")
80
90
  end
81
91
 
82
92
  def validate_progress(new_progress)
83
- (total.nil? || new_progress <= total) || raise("You can't set the item's current value to be greater than the total.")
93
+ (total.nil? || new_progress <= total) || raise(ProgressBar::InvalidProgressError, "You can't set the item's current value to be greater than the total.")
84
94
  end
85
95
 
86
96
  def progress_made
@@ -51,8 +51,7 @@ class ProgressBar
51
51
  def elapsed_time
52
52
  return '--:--:--' unless started?
53
53
 
54
- hours, seconds = elapsed_whole_seconds.divmod(3600)
55
- minutes, seconds = seconds.divmod(60)
54
+ hours, minutes, seconds = *divide_seconds(elapsed_whole_seconds)
56
55
 
57
56
  sprintf TIME_FORMAT, hours, minutes, seconds
58
57
  end
@@ -0,0 +1,4 @@
1
+ class ProgressBar
2
+ class InvalidProgressError < RuntimeError
3
+ end
4
+ end
@@ -1,3 +1,3 @@
1
1
  class ProgressBar
2
- VERSION = '1.3.2'
2
+ VERSION = '1.4.0'
3
3
  end
@@ -20,14 +20,12 @@ describe ProgressBar::Base do
20
20
  it 'can properly handle outputting the bar when the length changes on the fly to less than the minimum width' do
21
21
  progressbar = ProgressBar::Base.new(:output => output, :title => 'a' * 25, :format => '%t%B', :throttle_rate => 0.0)
22
22
 
23
- IO.stub_chain(:console, :winsize).and_return [1, 30]
24
- allow(progressbar).to receive(:dynamic_width_stty).
23
+ allow(progressbar).to receive(:terminal_width).
25
24
  and_return 30
26
25
 
27
26
  progressbar.start
28
27
 
29
- IO.stub_chain(:console, :winsize).and_return [1, 20]
30
- allow(progressbar).to receive(:dynamic_width_stty).
28
+ allow(progressbar).to receive(:terminal_width).
31
29
  and_return 20
32
30
 
33
31
  progressbar.increment
@@ -40,8 +38,7 @@ describe ProgressBar::Base do
40
38
  it 'returns the proper string' do
41
39
  progressbar = ProgressBar::Base.new(:output => output, :title => ('*' * 21), :starting_at => 5, :total => 10, :autostart => false)
42
40
 
43
- IO.stub_chain(:console, :winsize).and_return [1, 20]
44
- allow(progressbar).to receive(:dynamic_width_stty).
41
+ allow(progressbar).to receive(:terminal_width).
45
42
  and_return 20
46
43
 
47
44
  progressbar.to_s('%t%w').should eql '*********************'
@@ -52,8 +49,7 @@ describe ProgressBar::Base do
52
49
  it 'returns the proper string' do
53
50
  progressbar = ProgressBar::Base.new(:output => output, :title => ('*' * 21), :autostart => false)
54
51
 
55
- IO.stub_chain(:console, :winsize).and_return [1, 20]
56
- allow(progressbar).to receive(:dynamic_width_stty).
52
+ allow(progressbar).to receive(:terminal_width).
57
53
  and_return 20
58
54
 
59
55
  progressbar.to_s('%t%i').should eql '*********************'
@@ -62,8 +58,7 @@ describe ProgressBar::Base do
62
58
  it 'returns the proper string' do
63
59
  progressbar = ProgressBar::Base.new(:output => output, :title => ('*' * 21), :starting_at => 5, :total => 10, :autostart => false)
64
60
 
65
- IO.stub_chain(:console, :winsize).and_return [1, 20]
66
- allow(progressbar).to receive(:dynamic_width_stty).
61
+ allow(progressbar).to receive(:terminal_width).
67
62
  and_return 20
68
63
 
69
64
  progressbar.to_s('%t%i').should eql '*********************'
@@ -74,8 +69,7 @@ describe ProgressBar::Base do
74
69
  it 'returns the proper string' do
75
70
  progressbar = ProgressBar::Base.new(:output => output, :title => ('*' * 19), :starting_at => 5, :total => 10, :autostart => false)
76
71
 
77
- IO.stub_chain(:console, :winsize).and_return [1, 20]
78
- allow(progressbar).to receive(:dynamic_width_stty).
72
+ allow(progressbar).to receive(:terminal_width).
79
73
  and_return 20
80
74
 
81
75
  progressbar.to_s('%t%B').should eql '******************* '
@@ -84,8 +78,7 @@ describe ProgressBar::Base do
84
78
  it 'returns the proper string' do
85
79
  progressbar = ProgressBar::Base.new(:output => output, :title => ('*' * 19), :starting_at => 5, :total => 10, :autostart => false)
86
80
 
87
- IO.stub_chain(:console, :winsize).and_return [1, 20]
88
- allow(progressbar).to receive(:dynamic_width_stty).
81
+ allow(progressbar).to receive(:terminal_width).
89
82
  and_return 20
90
83
 
91
84
  progressbar.to_s('%t%w%i').should eql '******************* '
@@ -346,7 +339,10 @@ describe ProgressBar::Base do
346
339
  end
347
340
 
348
341
  it 'displays the proper ETA' do
349
- progressbar.to_s('%i%e').should eql '=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-- ETA: ??:??:??'
342
+ progressbar.increment
343
+
344
+ progressbar.to_s('%i%e').should eql '-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=- ETA: ??:??:??'
345
+ progressbar.to_s('%i%E').should eql '-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=- ETA: ??:??:??'
350
346
  end
351
347
  end
352
348
 
@@ -203,7 +203,7 @@ describe ProgressBar::Components::Bar do
203
203
  describe '#new' do
204
204
  it 'raises an error' do
205
205
  @progressbar = ProgressBar::Components::Bar.new(:total => 10)
206
- lambda { @progressbar.start :at => 11 }.should raise_error "You can't set the item's current value to be greater than the total."
206
+ lambda { @progressbar.start :at => 11 }.should raise_error(ProgressBar::InvalidProgressError, "You can't set the item's current value to be greater than the total.")
207
207
  end
208
208
  end
209
209
  end
@@ -4,7 +4,7 @@ describe ProgressBar::Components::EstimatedTimer do
4
4
  describe '#progress=' do
5
5
  it 'raises an error when passed a number larger than the total' do
6
6
  @estimated_time = ProgressBar::Components::EstimatedTimer.new(:total => 100)
7
- lambda{ @estimated_time.progress = 101 }.should raise_error "You can't set the item's current value to be greater than the total."
7
+ lambda{ @estimated_time.progress = 101 }.should raise_error(ProgressBar::InvalidProgressError, "You can't set the item's current value to be greater than the total.")
8
8
  end
9
9
  end
10
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-progressbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-12-15 00:00:00.000000000 Z
13
+ date: 2013-12-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -83,6 +83,7 @@ files:
83
83
  - lib/ruby-progressbar/components/throttle.rb
84
84
  - lib/ruby-progressbar/components/timer.rb
85
85
  - lib/ruby-progressbar/components.rb
86
+ - lib/ruby-progressbar/errors/invalid_progress_error.rb
86
87
  - lib/ruby-progressbar/format/base.rb
87
88
  - lib/ruby-progressbar/format/molecule.rb
88
89
  - lib/ruby-progressbar/format.rb