progress_bar 0.3.4 → 0.4.0

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.
data/LICENSE ADDED
@@ -0,0 +1,14 @@
1
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2
+ Version 2, December 2004
3
+
4
+ Copyright (C) 2011 Paul Sadauskas <psadauskas@gmail.com>
5
+
6
+ Everyone is permitted to copy and distribute verbatim or modified
7
+ copies of this license document, and changing it is allowed as long
8
+ as the name is changed.
9
+
10
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12
+
13
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
14
+
@@ -1,3 +1,3 @@
1
- module ProgressBar
2
- VERSION = "0.3.4"
1
+ class ProgressBar
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/progress_bar.rb CHANGED
@@ -4,26 +4,30 @@ require 'highline'
4
4
 
5
5
  class ProgressBar
6
6
 
7
- attr_accessor :count, :max, :start, :meters
7
+ attr_accessor :count, :max, :meters
8
8
 
9
- def initialize(max = 100, *meters)
9
+ def initialize(*args)
10
10
 
11
- @count = 0
12
- @max = max
13
- @start = Time.now
11
+ @count = 0
12
+ @max = 100
13
+ @meters = [:bar, :counter, :percentage, :elapsed, :eta, :rate]
14
14
 
15
- if meters.empty?
16
- @meters = [:bar, :counter, :percentage, :elapsed, :eta, :rate]
17
- else
18
- @meters = meters
19
- end
15
+ @max = args.shift if args.first.is_a? Numeric
16
+ @meters = args unless args.empty?
20
17
 
21
- @hl = HighLine.new
18
+ @last_write = Time.at(0)
19
+ @start = Time.now
20
+
21
+ @hl = HighLine.new
22
22
  end
23
23
 
24
24
  def increment!(count = 1)
25
25
  self.count += count
26
- write
26
+ now = Time.now
27
+ if (now - @last_write) > 0.2 || self.count >= max
28
+ write
29
+ @last_write = now
30
+ end
27
31
  end
28
32
 
29
33
  def write
@@ -44,7 +48,7 @@ class ProgressBar
44
48
  end
45
49
 
46
50
  def elapsed
47
- Time.now - start
51
+ Time.now - @start
48
52
  end
49
53
 
50
54
  def rate
@@ -0,0 +1,34 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+
3
+ describe 'ProgressBar arguments' do
4
+ before do
5
+ @default_max = 100
6
+ @default_meters = [:bar, :counter, :percentage, :elapsed, :eta, :rate]
7
+ end
8
+
9
+ it "should set appropriate defaults without any arguments" do
10
+ bar = ProgressBar.new
11
+ bar.max.should == @default_max
12
+ bar.meters.should == @default_meters
13
+ end
14
+
15
+ it "should allow a single argument specifying the max" do
16
+ bar = ProgressBar.new(123)
17
+ bar.max.should == 123
18
+ bar.meters.should == @default_meters
19
+ end
20
+
21
+ it "should allow specifying just the meters" do
22
+ bar = ProgressBar.new(:bar, :eta)
23
+ bar.max.should == @default_max
24
+ bar.meters.should == [:bar, :eta]
25
+ end
26
+
27
+ it "should allow specyfing the max and meters" do
28
+ bar = ProgressBar.new(123, :bar, :eta)
29
+ bar.max.should == 123
30
+ bar.meters.should == [:bar, :eta]
31
+ end
32
+
33
+ end
34
+
metadata CHANGED
@@ -1,69 +1,61 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: progress_bar
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
4
5
  prerelease:
5
- version: 0.3.4
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Paul Sadauskas
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-17 00:00:00 -06:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-07-22 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: options
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2156635980 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
18
+ requirements:
22
19
  - - ~>
23
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
24
21
  version: 2.3.0
25
22
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: highline
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2156635980
25
+ - !ruby/object:Gem::Dependency
26
+ name: highline
27
+ requirement: &2156635480 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
29
+ requirements:
33
30
  - - ~>
34
- - !ruby/object:Gem::Version
31
+ - !ruby/object:Gem::Version
35
32
  version: 1.6.1
36
33
  type: :runtime
37
- version_requirements: *id002
38
- description: "Give people feedback about long-running tasks without overloading them with information: Use a progress bar, like Curl or Wget!"
39
- email:
34
+ prerelease: false
35
+ version_requirements: *2156635480
36
+ description: ! 'Give people feedback about long-running tasks without overloading
37
+ them with information: Use a progress bar, like Curl or Wget!'
38
+ email:
40
39
  - psadauskas@gmail.com
41
40
  executables: []
42
-
43
41
  extensions: []
44
-
45
42
  extra_rdoc_files: []
46
-
47
- files:
43
+ files:
48
44
  - .gitignore
49
45
  - .rspec
50
46
  - Gemfile
47
+ - LICENSE
51
48
  - README.mkd
52
49
  - Rakefile
53
50
  - examples/simple.rb
54
51
  - lib/progress_bar.rb
55
- - lib/progress_bar/meters/bar.rb
56
- - lib/progress_bar/meters/counter.rb
57
- - lib/progress_bar/meters/elapsed.rb
58
- - lib/progress_bar/meters/eta.rb
59
- - lib/progress_bar/meters/percentage.rb
60
52
  - lib/progress_bar/version.rb
61
- - lib/progress_bar/version.rbc
62
53
  - profile/shell_every_update
63
54
  - profile/shell_every_update.gif
64
55
  - profile/shell_once
65
56
  - profile/shell_once.gif
66
57
  - progress_bar.gemspec
58
+ - test/arguments_test.rb
67
59
  - test/bar_test.rb
68
60
  - test/counter_test.rb
69
61
  - test/elapsed_test.rb
@@ -72,35 +64,32 @@ files:
72
64
  - test/progress_bar_test.rb
73
65
  - test/rate_test.rb
74
66
  - test/spec_helper.rb
75
- has_rdoc: true
76
67
  homepage: http://www.github.com/paul/progress_bar
77
68
  licenses: []
78
-
79
69
  post_install_message:
80
70
  rdoc_options: []
81
-
82
- require_paths:
71
+ require_paths:
83
72
  - lib
84
- required_ruby_version: !ruby/object:Gem::Requirement
73
+ required_ruby_version: !ruby/object:Gem::Requirement
85
74
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
90
- required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
80
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: "0"
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
96
85
  requirements: []
97
-
98
86
  rubyforge_project: progress_bar
99
- rubygems_version: 1.6.2
87
+ rubygems_version: 1.8.5
100
88
  signing_key:
101
89
  specification_version: 3
102
90
  summary: Simple Progress Bar for output to a terminal
103
- test_files:
91
+ test_files:
92
+ - test/arguments_test.rb
104
93
  - test/bar_test.rb
105
94
  - test/counter_test.rb
106
95
  - test/elapsed_test.rb
@@ -1,31 +0,0 @@
1
-
2
- class ProgressBar
3
- class Bar < Meter
4
-
5
- attr_reader :count, :max, :width
6
-
7
- def initialize(count, max, width)
8
- @count, @max, @width = count, max, width
9
- end
10
-
11
- def to_s
12
- "[" +
13
- "#" * progress_width +
14
- " " * remaining_width +
15
- "]"
16
- end
17
-
18
- def bar_width
19
- width - 2
20
- end
21
-
22
- def progress_width
23
- ((count.to_f / max) * bar_width).ceil
24
- end
25
-
26
- def remaining_width
27
- bar_width - progress_width
28
- end
29
-
30
- end
31
- end
@@ -1,24 +0,0 @@
1
-
2
- class ProgressBar
3
- class Counter < Meter
4
-
5
- attr_reader :count, :max
6
-
7
- def initialize(count, max)
8
- @count, @max = count, max
9
- end
10
-
11
- def to_s
12
- "[%#{max_counter_width}i/%i]" % [count, max]
13
- end
14
-
15
- def width
16
- max.to_s.length * 2 + 3
17
- end
18
-
19
- def max_counter_width
20
- max.to_s.length
21
- end
22
-
23
- end
24
- end
@@ -1,26 +0,0 @@
1
- class ProgressBar
2
- class Elapsed < Meter
3
-
4
- include TimeFormatter
5
-
6
- attr_reader :start
7
-
8
- def initialize start
9
- @start = start
10
- end
11
-
12
- def elapsed
13
- Time.now - start
14
- end
15
-
16
- def to_s
17
- "[#{format_interval(elapsed)}]"
18
- end
19
-
20
- def width
21
- format_interval(elapsed).length + 2
22
- end
23
-
24
- end
25
- end
26
-
@@ -1,36 +0,0 @@
1
- class ProgressBar
2
- class ETA < Meter
3
-
4
- include TimeFormatter
5
-
6
- attr_reader :start, :count, :max
7
-
8
- def initialize start, count, max
9
- @start, @count, @max = start, count, max
10
- end
11
-
12
- def elapsed
13
- Time.now - start
14
- end
15
-
16
- def average
17
- if count == 0
18
- 0
19
- else
20
- elapsed / count
21
- end
22
- end
23
-
24
- def remaining
25
- (max - count) * average
26
- end
27
-
28
- def to_s
29
- "[ETA: #{format_interval(remaining)}]"
30
- end
31
-
32
- def width
33
- format_interval(elapsed).length + 7
34
- end
35
- end
36
- end
@@ -1,20 +0,0 @@
1
-
2
- class ProgressBar
3
- class Percentage < Meter
4
-
5
- attr_reader :count, :max
6
-
7
- def initialize count, max
8
- @count, @max = count, max
9
- end
10
-
11
- def to_s
12
- "[%6.2f%%]" % (count.to_f / max * 100)
13
- end
14
-
15
- def width
16
- 9
17
- end
18
-
19
- end
20
- end
@@ -1,130 +0,0 @@
1
- !RBIX
2
- 4271523011621227713
3
- x
4
- M
5
- 1
6
- n
7
- n
8
- x
9
- 10
10
- __script__
11
- i
12
- 28
13
- 99
14
- 7
15
- 0
16
- 65
17
- 49
18
- 1
19
- 2
20
- 13
21
- 99
22
- 12
23
- 7
24
- 2
25
- 12
26
- 7
27
- 3
28
- 12
29
- 65
30
- 12
31
- 49
32
- 4
33
- 4
34
- 15
35
- 49
36
- 2
37
- 0
38
- 15
39
- 2
40
- 11
41
- I
42
- 6
43
- I
44
- 0
45
- I
46
- 0
47
- I
48
- 0
49
- n
50
- p
51
- 5
52
- x
53
- 11
54
- ProgressBar
55
- x
56
- 11
57
- open_module
58
- x
59
- 15
60
- __module_init__
61
- M
62
- 1
63
- n
64
- n
65
- x
66
- 11
67
- ProgressBar
68
- i
69
- 12
70
- 5
71
- 66
72
- 65
73
- 7
74
- 0
75
- 7
76
- 1
77
- 64
78
- 49
79
- 2
80
- 2
81
- 11
82
- I
83
- 3
84
- I
85
- 0
86
- I
87
- 0
88
- I
89
- 0
90
- n
91
- p
92
- 3
93
- x
94
- 7
95
- VERSION
96
- s
97
- 5
98
- 0.2.0
99
- x
100
- 9
101
- const_set
102
- p
103
- 3
104
- I
105
- 2
106
- I
107
- 2
108
- I
109
- c
110
- x
111
- 67
112
- /Users/rando/Code/personal/progress_bar/lib/progress_bar/version.rb
113
- p
114
- 0
115
- x
116
- 13
117
- attach_method
118
- p
119
- 3
120
- I
121
- 0
122
- I
123
- 1
124
- I
125
- 1c
126
- x
127
- 67
128
- /Users/rando/Code/personal/progress_bar/lib/progress_bar/version.rb
129
- p
130
- 0