progressbar_zobar 0.9.2.1 → 0.21.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 +7 -0
- data/.gitignore +3 -1
- data/.ruby-version +1 -0
- data/.travis.yml +0 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/{README.rd → README.rdoc} +15 -2
- data/lib/progressbar.rb +50 -4
- data/progressbar.gemspec +3 -2
- data/test/test.rb +14 -4
- metadata +55 -39
- data/.rvmrc +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fb5b18eadd00416944ea4ddbbc2efc3857067781
|
4
|
+
data.tar.gz: a043ca73987bb4c2c601636213d120e4557b72e7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 56587a8c0cb68fb7fe6472fa138de8b9924aead465612ad95f577986a58b0f78158a3e7749412984a7388df25bf0dcdc50252901e5068e896910d189db2b8ace
|
7
|
+
data.tar.gz: 17b47f96eae5bbbe7871895bb5129166b6b2a8561bdab31fa41eb862d857162989647f77e747465dc0bd25c825579c1f45b6c7dafabe2774da411cc5605840d3
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.0
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/{README.rd → README.rdoc}
RENAMED
@@ -11,7 +11,7 @@ Ruby/ProgressBar is a text progress bar library for Ruby.
|
|
11
11
|
It can indicate progress with percentage, a progress bar,
|
12
12
|
and estimated remaining time.
|
13
13
|
|
14
|
-
The latest version of Ruby/ProgressBar is available at
|
14
|
+
The latest version of Ruby/ProgressBar is available at
|
15
15
|
((<URL:http://namazu.org/~satoru/ruby-progressbar/>))
|
16
16
|
.
|
17
17
|
|
@@ -29,9 +29,15 @@ The latest version of Ruby/ProgressBar is available at
|
|
29
29
|
>> (1..100).each{|x| sleep(0.1); pbar.set(x)}; pbar.finish
|
30
30
|
test: 67% |oooooooooooooooooooooooooo | ETA: 00:00:03
|
31
31
|
|
32
|
+
>> ProgressBar.new("test", 100) do |pbar|
|
33
|
+
>> 100.times { sleep(0.1); pbar.inc }
|
34
|
+
>> end
|
35
|
+
test: 100% |oooooooooooooooooooooooooooooooooooooooo| Time: 00:00:10
|
36
|
+
|
37
|
+
|
32
38
|
== API
|
33
39
|
|
34
|
-
--- ProgressBar#new (title, total, out = STDERR)
|
40
|
+
--- ProgressBar#new (title, total, out = STDERR, &block)
|
35
41
|
Display the initial progress bar and return a
|
36
42
|
ProgressBar object. ((|title|)) specifies the title,
|
37
43
|
and ((|total|)) specifies the total cost of processing.
|
@@ -41,6 +47,9 @@ The latest version of Ruby/ProgressBar is available at
|
|
41
47
|
more percent is proceeded or one or more seconds are
|
42
48
|
elapsed from the previous display.
|
43
49
|
|
50
|
+
It also accepts a block in case you prefer not needing
|
51
|
+
to .finish the bar (see example above).
|
52
|
+
|
44
53
|
--- ProgressBar#inc (step = 1)
|
45
54
|
Increase the internal counter by ((|step|)) and update
|
46
55
|
the display of the progress bar. Display the estimated
|
@@ -82,6 +91,10 @@ The latest version of Ruby/ProgressBar is available at
|
|
82
91
|
--- ProgressBar#total=
|
83
92
|
Change the progress bar's maximum value.
|
84
93
|
|
94
|
+
--- ProgressBar#long_running
|
95
|
+
Use adaptative running average to compute ETA, more effective for
|
96
|
+
long-running jobs or jobs whose speed may vary.
|
97
|
+
|
85
98
|
|
86
99
|
ReverseProgressBar class is also available. The
|
87
100
|
functionality is identical to ProgressBar but the direction
|
data/lib/progressbar.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
|
12
12
|
class ProgressBar
|
13
|
-
VERSION = "0.
|
13
|
+
VERSION = "0.21.0.1"
|
14
14
|
|
15
15
|
def initialize (title, total, out = STDERR)
|
16
16
|
@title = title
|
@@ -28,6 +28,10 @@ class ProgressBar
|
|
28
28
|
@format_arguments = [:title, :percentage, :bar, :stat]
|
29
29
|
clear
|
30
30
|
show
|
31
|
+
if block_given?
|
32
|
+
yield(self)
|
33
|
+
finish
|
34
|
+
end
|
31
35
|
end
|
32
36
|
|
33
37
|
attr_reader :title
|
@@ -53,6 +57,10 @@ private
|
|
53
57
|
if @finished_p then elapsed else eta end
|
54
58
|
end
|
55
59
|
|
60
|
+
def fmt_stat_for_long_run
|
61
|
+
if @finished_p then elapsed else eta_running_average end
|
62
|
+
end
|
63
|
+
|
56
64
|
def fmt_stat_for_file_transfer
|
57
65
|
if @finished_p then
|
58
66
|
sprintf("%s %s %s", bytes, transfer_rate, elapsed)
|
@@ -91,7 +99,7 @@ private
|
|
91
99
|
sec = t % 60
|
92
100
|
min = (t / 60) % 60
|
93
101
|
hour = t / 3600
|
94
|
-
sprintf("%
|
102
|
+
sprintf("% 3d:%02d:%02d", hour, min, sec);
|
95
103
|
end
|
96
104
|
|
97
105
|
# ETA stands for Estimated Time of Arrival.
|
@@ -101,7 +109,35 @@ private
|
|
101
109
|
else
|
102
110
|
elapsed = Time.now - @start_time
|
103
111
|
eta = elapsed * @total / @current - elapsed;
|
104
|
-
sprintf("ETA:
|
112
|
+
sprintf("ETA: %s", format_time(eta))
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
# Compute ETA with running average (better suited to long running tasks)
|
117
|
+
def eta_running_average
|
118
|
+
now = Time.now
|
119
|
+
|
120
|
+
# update throughput running average
|
121
|
+
if @total > 0 && @eta_previous && @eta_previous_time
|
122
|
+
current_elapsed = @current - @eta_previous
|
123
|
+
alpha = 0.9 ** current_elapsed
|
124
|
+
current_progress = 1.0 * current_elapsed
|
125
|
+
current_throughput = current_progress / (now - @eta_previous_time)
|
126
|
+
if @eta_throughput
|
127
|
+
@eta_throughput = @eta_throughput * alpha + current_throughput * (1-alpha)
|
128
|
+
else
|
129
|
+
@eta_throughput = current_throughput
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
@eta_previous = @current
|
134
|
+
@eta_previous_time = now
|
135
|
+
|
136
|
+
if @eta_throughput && @eta_throughput > 0
|
137
|
+
eta = (@total - @current) / @eta_throughput;
|
138
|
+
sprintf("ETA: %s", format_time(eta))
|
139
|
+
else
|
140
|
+
"ETA: --:--:--"
|
105
141
|
end
|
106
142
|
end
|
107
143
|
|
@@ -124,7 +160,7 @@ private
|
|
124
160
|
|
125
161
|
DEFAULT_WIDTH = 80
|
126
162
|
def get_term_width
|
127
|
-
if ENV['COLUMNS'] =~ /^\d+$/
|
163
|
+
term_width = if ENV['COLUMNS'] =~ /^\d+$/
|
128
164
|
ENV['COLUMNS'].to_i
|
129
165
|
elsif (RUBY_PLATFORM =~ /java/ || (!STDIN.tty? && ENV['TERM'])) && shell_command_exists?('tput')
|
130
166
|
`tput cols`.to_i
|
@@ -133,6 +169,12 @@ private
|
|
133
169
|
else
|
134
170
|
DEFAULT_WIDTH
|
135
171
|
end
|
172
|
+
|
173
|
+
if term_width > 0
|
174
|
+
term_width
|
175
|
+
else
|
176
|
+
DEFAULT_WIDTH
|
177
|
+
end
|
136
178
|
rescue
|
137
179
|
DEFAULT_WIDTH
|
138
180
|
end
|
@@ -203,6 +245,10 @@ public
|
|
203
245
|
@format_arguments = [:title, :percentage, :bar, :stat_for_file_transfer]
|
204
246
|
end
|
205
247
|
|
248
|
+
def long_running
|
249
|
+
@format_arguments = [:title, :percentage, :bar, :stat_for_long_run]
|
250
|
+
end
|
251
|
+
|
206
252
|
def format= (format)
|
207
253
|
@format = format
|
208
254
|
end
|
data/progressbar.gemspec
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/progressbar", __FILE__)
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
5
|
s.name = "progressbar_zobar"
|
5
|
-
s.version =
|
6
|
+
s.version = ProgressBar::VERSION
|
6
7
|
s.platform = Gem::Platform::RUBY
|
7
8
|
s.authors = ["Satoru Takabayashi", "Jose Peleteiro", 'David P Kleinschmidt']
|
8
9
|
s.email = ["satoru@0xcc.net", "jose@peleteiro.net", 'david@kleinschmidt.name']
|
9
|
-
s.homepage = "http://
|
10
|
+
s.homepage = "http://bitbucket.org/zobar/progressbar"
|
10
11
|
s.summary = 'Text progress bar library for Ruby, forked from progressbar.'
|
11
12
|
s.description = "Fork of progressbar that allows changing the progress bar's title and total while still in progress."
|
12
13
|
|
data/test/test.rb
CHANGED
@@ -4,8 +4,8 @@ require 'progressbar'
|
|
4
4
|
class ProgressBarTest < Test::Unit::TestCase
|
5
5
|
SleepUnit = 0.01
|
6
6
|
|
7
|
-
def do_make_progress_bar
|
8
|
-
ProgressBar.new(title, total)
|
7
|
+
def do_make_progress_bar(title, total, &block)
|
8
|
+
ProgressBar.new(title, total, &block)
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_bytes
|
@@ -128,10 +128,20 @@ class ProgressBarTest < Test::Unit::TestCase
|
|
128
128
|
}
|
129
129
|
pbar.finish
|
130
130
|
end
|
131
|
+
|
132
|
+
def test_with_block
|
133
|
+
total = 100
|
134
|
+
do_make_progress_bar("test(block)", total) do |pbar|
|
135
|
+
total.times {
|
136
|
+
sleep(SleepUnit)
|
137
|
+
pbar.inc
|
138
|
+
}
|
139
|
+
end
|
140
|
+
end
|
131
141
|
end
|
132
142
|
|
133
143
|
class ReversedProgressBarTest < ProgressBarTest
|
134
|
-
def do_make_progress_bar
|
135
|
-
ReversedProgressBar.new(title, total)
|
144
|
+
def do_make_progress_bar(title, total, &block)
|
145
|
+
ReversedProgressBar.new(title, total, &block)
|
136
146
|
end
|
137
147
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: progressbar_zobar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.21.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Satoru Takabayashi
|
@@ -11,74 +10,92 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date:
|
13
|
+
date: 2014-03-16 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: bundler
|
18
|
-
requirement:
|
19
|
-
none: false
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
20
18
|
requirements:
|
21
|
-
- -
|
19
|
+
- - ">="
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: 1.0.0
|
24
22
|
type: :development
|
25
23
|
prerelease: false
|
26
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 1.0.0
|
27
29
|
- !ruby/object:Gem::Dependency
|
28
30
|
name: minitest
|
29
|
-
requirement:
|
30
|
-
none: false
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
31
32
|
requirements:
|
32
|
-
- -
|
33
|
+
- - ">="
|
33
34
|
- !ruby/object:Gem::Version
|
34
35
|
version: '0'
|
35
36
|
type: :development
|
36
37
|
prerelease: false
|
37
|
-
version_requirements:
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
38
43
|
- !ruby/object:Gem::Dependency
|
39
44
|
name: yard
|
40
|
-
requirement:
|
41
|
-
none: false
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
42
46
|
requirements:
|
43
|
-
- -
|
47
|
+
- - ">="
|
44
48
|
- !ruby/object:Gem::Version
|
45
49
|
version: '0'
|
46
50
|
type: :development
|
47
51
|
prerelease: false
|
48
|
-
version_requirements:
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
49
57
|
- !ruby/object:Gem::Dependency
|
50
58
|
name: rake
|
51
|
-
requirement:
|
52
|
-
none: false
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
53
60
|
requirements:
|
54
|
-
- -
|
61
|
+
- - ">="
|
55
62
|
- !ruby/object:Gem::Version
|
56
63
|
version: '0'
|
57
64
|
type: :development
|
58
65
|
prerelease: false
|
59
|
-
version_requirements:
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
60
71
|
- !ruby/object:Gem::Dependency
|
61
72
|
name: simplecov
|
62
|
-
requirement:
|
63
|
-
none: false
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
64
74
|
requirements:
|
65
|
-
- -
|
75
|
+
- - ">="
|
66
76
|
- !ruby/object:Gem::Version
|
67
77
|
version: 0.3.5
|
68
78
|
type: :development
|
69
79
|
prerelease: false
|
70
|
-
version_requirements:
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 0.3.5
|
71
85
|
- !ruby/object:Gem::Dependency
|
72
86
|
name: bluecloth
|
73
|
-
requirement:
|
74
|
-
none: false
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
75
88
|
requirements:
|
76
|
-
- -
|
89
|
+
- - ">="
|
77
90
|
- !ruby/object:Gem::Version
|
78
91
|
version: 0.3.5
|
79
92
|
type: :development
|
80
93
|
prerelease: false
|
81
|
-
version_requirements:
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.3.5
|
82
99
|
description: Fork of progressbar that allows changing the progress bar's title and
|
83
100
|
total while still in progress.
|
84
101
|
email:
|
@@ -89,41 +106,40 @@ executables: []
|
|
89
106
|
extensions: []
|
90
107
|
extra_rdoc_files: []
|
91
108
|
files:
|
92
|
-
- .gitignore
|
93
|
-
- .
|
94
|
-
- .travis.yml
|
109
|
+
- ".gitignore"
|
110
|
+
- ".ruby-version"
|
111
|
+
- ".travis.yml"
|
95
112
|
- ChangeLog
|
96
113
|
- Gemfile
|
97
114
|
- Gemfile.lock
|
98
115
|
- LICENSE
|
99
|
-
- README.
|
116
|
+
- README.rdoc
|
100
117
|
- Rakefile
|
101
118
|
- lib/progressbar.rb
|
102
119
|
- progressbar.gemspec
|
103
120
|
- test/test.rb
|
104
|
-
homepage: http://
|
121
|
+
homepage: http://bitbucket.org/zobar/progressbar
|
105
122
|
licenses: []
|
123
|
+
metadata: {}
|
106
124
|
post_install_message:
|
107
125
|
rdoc_options:
|
108
|
-
- --charset=UTF-8
|
126
|
+
- "--charset=UTF-8"
|
109
127
|
require_paths:
|
110
128
|
- lib
|
111
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
-
none: false
|
113
130
|
requirements:
|
114
|
-
- -
|
131
|
+
- - ">="
|
115
132
|
- !ruby/object:Gem::Version
|
116
133
|
version: '0'
|
117
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
135
|
requirements:
|
120
|
-
- -
|
136
|
+
- - ">="
|
121
137
|
- !ruby/object:Gem::Version
|
122
138
|
version: 1.3.6
|
123
139
|
requirements: []
|
124
140
|
rubyforge_project:
|
125
|
-
rubygems_version:
|
141
|
+
rubygems_version: 2.2.0
|
126
142
|
signing_key:
|
127
|
-
specification_version:
|
143
|
+
specification_version: 4
|
128
144
|
summary: Text progress bar library for Ruby, forked from progressbar.
|
129
145
|
test_files: []
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm 1.9.2@progressbar
|