tty-progressbar 0.17.0 → 0.18.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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +492 -126
  5. data/lib/tty-progressbar.rb +2 -2
  6. data/lib/tty/progressbar.rb +168 -68
  7. data/lib/tty/progressbar/configuration.rb +121 -27
  8. data/lib/tty/progressbar/converter.rb +16 -19
  9. data/lib/tty/progressbar/formats.rb +120 -0
  10. data/lib/tty/progressbar/formatter.rb +33 -38
  11. data/lib/tty/progressbar/formatter/bar.rb +74 -27
  12. data/lib/tty/progressbar/formatter/byte_rate.rb +6 -20
  13. data/lib/tty/progressbar/formatter/current.rb +4 -19
  14. data/lib/tty/progressbar/formatter/current_byte.rb +9 -17
  15. data/lib/tty/progressbar/formatter/elapsed.rb +9 -18
  16. data/lib/tty/progressbar/formatter/estimated.rb +14 -18
  17. data/lib/tty/progressbar/formatter/estimated_time.rb +37 -0
  18. data/lib/tty/progressbar/formatter/mean_byte.rb +6 -20
  19. data/lib/tty/progressbar/formatter/mean_rate.rb +6 -20
  20. data/lib/tty/progressbar/formatter/percent.rb +10 -16
  21. data/lib/tty/progressbar/formatter/rate.rb +5 -19
  22. data/lib/tty/progressbar/formatter/total.rb +10 -16
  23. data/lib/tty/progressbar/formatter/total_byte.rb +14 -18
  24. data/lib/tty/progressbar/formatters.rb +53 -0
  25. data/lib/tty/progressbar/meter.rb +2 -2
  26. data/lib/tty/progressbar/multi.rb +61 -21
  27. data/lib/tty/progressbar/pipeline.rb +13 -6
  28. data/lib/tty/progressbar/timer.rb +89 -0
  29. data/lib/tty/progressbar/version.rb +1 -1
  30. metadata +44 -103
  31. data/Rakefile +0 -8
  32. data/examples/color.rb +0 -18
  33. data/examples/failure.rb +0 -12
  34. data/examples/iterator.rb +0 -5
  35. data/examples/lazy.rb +0 -6
  36. data/examples/multi/main_bar.rb +0 -13
  37. data/examples/multi/simple.rb +0 -13
  38. data/examples/multi/width.rb +0 -13
  39. data/examples/simple.rb +0 -7
  40. data/examples/slow_process.rb +0 -29
  41. data/examples/speed.rb +0 -11
  42. data/examples/threaded.rb +0 -14
  43. data/examples/tokens.rb +0 -12
  44. data/examples/unicode.rb +0 -7
  45. data/spec/spec_helper.rb +0 -53
  46. data/spec/unit/advance_spec.rb +0 -25
  47. data/spec/unit/clear_spec.rb +0 -17
  48. data/spec/unit/complete_spec.rb +0 -16
  49. data/spec/unit/converter/to_bytes_spec.rb +0 -47
  50. data/spec/unit/converter/to_seconds_spec.rb +0 -15
  51. data/spec/unit/converter/to_time_spec.rb +0 -19
  52. data/spec/unit/custom_formatter_spec.rb +0 -26
  53. data/spec/unit/custom_token_spec.rb +0 -14
  54. data/spec/unit/events_spec.rb +0 -33
  55. data/spec/unit/finish_spec.rb +0 -15
  56. data/spec/unit/formatter/bar_spec.rb +0 -33
  57. data/spec/unit/formatter/byte_rate_spec.rb +0 -32
  58. data/spec/unit/formatter/current_byte_spec.rb +0 -16
  59. data/spec/unit/formatter/current_spec.rb +0 -14
  60. data/spec/unit/formatter/elapsed_spec.rb +0 -58
  61. data/spec/unit/formatter/estimated_spec.rb +0 -27
  62. data/spec/unit/formatter/mean_byte_spec.rb +0 -32
  63. data/spec/unit/formatter/mean_rate_spec.rb +0 -31
  64. data/spec/unit/formatter/percent_spec.rb +0 -16
  65. data/spec/unit/formatter/rate_spec.rb +0 -31
  66. data/spec/unit/formatter/total_byte_spec.rb +0 -16
  67. data/spec/unit/formatter/total_spec.rb +0 -16
  68. data/spec/unit/frequency_spec.rb +0 -27
  69. data/spec/unit/head_spec.rb +0 -32
  70. data/spec/unit/hide_cursor_spec.rb +0 -27
  71. data/spec/unit/inspect_spec.rb +0 -11
  72. data/spec/unit/iterate_spec.rb +0 -79
  73. data/spec/unit/log_spec.rb +0 -29
  74. data/spec/unit/meter_spec.rb +0 -70
  75. data/spec/unit/multi/advance_spec.rb +0 -123
  76. data/spec/unit/multi/events_spec.rb +0 -115
  77. data/spec/unit/multi/finish_spec.rb +0 -41
  78. data/spec/unit/multi/line_inset_spec.rb +0 -65
  79. data/spec/unit/multi/register_spec.rb +0 -35
  80. data/spec/unit/multi/reset_spec.rb +0 -28
  81. data/spec/unit/multi/stop_spec.rb +0 -15
  82. data/spec/unit/multi/width_spec.rb +0 -118
  83. data/spec/unit/new_spec.rb +0 -76
  84. data/spec/unit/pipeline_spec.rb +0 -19
  85. data/spec/unit/ratio_spec.rb +0 -31
  86. data/spec/unit/render_spec.rb +0 -25
  87. data/spec/unit/reset_spec.rb +0 -31
  88. data/spec/unit/resize_spec.rb +0 -35
  89. data/spec/unit/set_current_spec.rb +0 -43
  90. data/spec/unit/start_spec.rb +0 -14
  91. data/spec/unit/stop_spec.rb +0 -19
  92. data/spec/unit/update_spec.rb +0 -22
  93. data/spec/unit/width_spec.rb +0 -86
  94. data/tasks/console.rake +0 -9
  95. data/tasks/coverage.rake +0 -9
  96. data/tasks/spec.rake +0 -27
  97. data/tty-progressbar.gemspec +0 -32
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TTY
4
+ class ProgressBar
5
+ # Used to measure the elapsed time for multiple time intervals
6
+ #
7
+ # @api private
8
+ class Timer
9
+ attr_reader :start_time
10
+
11
+ # Create Timer
12
+ #
13
+ # @api private
14
+ def initialize
15
+ reset
16
+ end
17
+
18
+ # Reset the start time to nil and elapsed time to zero
19
+ #
20
+ # @api public
21
+ def reset
22
+ @running = false
23
+ @offset = 0
24
+ @start_time = nil
25
+ end
26
+
27
+ # Check whether or not the timer is running
28
+ #
29
+ # @return [Boolean]
30
+ #
31
+ # @api public
32
+ def running?
33
+ @running
34
+ end
35
+
36
+ # Total elapsed time
37
+ #
38
+ # @return [Float]
39
+ # the elapsed time in seconds
40
+ #
41
+ # @api public
42
+ def elapsed_time
43
+ if running?
44
+ elapsed_until_now + @offset
45
+ else
46
+ @offset
47
+ end
48
+ end
49
+
50
+ # Measure current time interval
51
+ #
52
+ # @api public
53
+ def elapsed_until_now
54
+ time_so_far = Time.now - @start_time
55
+ # protect against negative time drifting
56
+ time_so_far > 0 ? time_so_far : 0
57
+ end
58
+
59
+ # Start measuring elapsed time for a new interval
60
+ #
61
+ # @return [Time]
62
+ # return the start time
63
+ #
64
+ # @api public
65
+ def start
66
+ return @start_time if running?
67
+
68
+ @running = true
69
+ @start_time = Time.now
70
+ end
71
+
72
+ # Stop measuring elapsed time for the current interval
73
+ #
74
+ # @return [Float]
75
+ # return elapsed time for the stopped interval
76
+ #
77
+ # @api public
78
+ def stop
79
+ return 0 unless running?
80
+
81
+ interval = elapsed_until_now
82
+ @offset += interval
83
+ @running = false
84
+ @start_time = nil
85
+ interval
86
+ end
87
+ end # Timer
88
+ end # ProgressBar
89
+ end # TTY
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TTY
4
4
  class ProgressBar
5
- VERSION = '0.17.0'
5
+ VERSION = "0.18.0"
6
6
  end # ProgressBar
7
7
  end # TTY
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-progressbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-31 00:00:00.000000000 Z
11
+ date: 2021-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: strings-ansi
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: '0.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.0
26
+ version: '0.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: tty-cursor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,54 +44,60 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.7'
47
+ version: '0.8'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.7'
54
+ version: '0.8'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: unicode-display_width
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.6'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '3.0'
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - "~>"
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: '1.6'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
69
75
  - !ruby/object:Gem::Dependency
70
- name: bundler
76
+ name: rake
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - ">="
74
80
  - !ruby/object:Gem::Version
75
- version: 1.5.0
81
+ version: '0'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - ">="
81
87
  - !ruby/object:Gem::Version
82
- version: 1.5.0
88
+ version: '0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: rspec
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - "~>"
93
+ - - ">="
88
94
  - !ruby/object:Gem::Version
89
95
  version: '3.0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - "~>"
100
+ - - ">="
95
101
  - !ruby/object:Gem::Version
96
102
  version: '3.0'
97
103
  - !ruby/object:Gem::Dependency
@@ -100,56 +106,35 @@ dependencies:
100
106
  requirements:
101
107
  - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: 0.9.1
109
+ version: '0.9'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
114
  - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: 0.9.1
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- description: A flexible progress bars drawing in terminal emulators.
116
+ version: '0.9'
117
+ description: Display a single or multiple progress bars in the terminal. A progress
118
+ bar can show determinate or indeterminate progress that can be paused and resumed
119
+ at any time. A bar format supports many tokens for common information display like
120
+ elapsed time, estimated time to completion, mean rate and more.
126
121
  email:
127
- - me@piotrmurach.com
122
+ - piotr@piotrmurach.com
128
123
  executables: []
129
124
  extensions: []
130
- extra_rdoc_files: []
125
+ extra_rdoc_files:
126
+ - README.md
127
+ - CHANGELOG.md
128
+ - LICENSE.txt
131
129
  files:
132
130
  - CHANGELOG.md
133
131
  - LICENSE.txt
134
132
  - README.md
135
- - Rakefile
136
- - examples/color.rb
137
- - examples/failure.rb
138
- - examples/iterator.rb
139
- - examples/lazy.rb
140
- - examples/multi/main_bar.rb
141
- - examples/multi/simple.rb
142
- - examples/multi/width.rb
143
- - examples/simple.rb
144
- - examples/slow_process.rb
145
- - examples/speed.rb
146
- - examples/threaded.rb
147
- - examples/tokens.rb
148
- - examples/unicode.rb
149
133
  - lib/tty-progressbar.rb
150
134
  - lib/tty/progressbar.rb
151
135
  - lib/tty/progressbar/configuration.rb
152
136
  - lib/tty/progressbar/converter.rb
137
+ - lib/tty/progressbar/formats.rb
153
138
  - lib/tty/progressbar/formatter.rb
154
139
  - lib/tty/progressbar/formatter/bar.rb
155
140
  - lib/tty/progressbar/formatter/byte_rate.rb
@@ -157,73 +142,29 @@ files:
157
142
  - lib/tty/progressbar/formatter/current_byte.rb
158
143
  - lib/tty/progressbar/formatter/elapsed.rb
159
144
  - lib/tty/progressbar/formatter/estimated.rb
145
+ - lib/tty/progressbar/formatter/estimated_time.rb
160
146
  - lib/tty/progressbar/formatter/mean_byte.rb
161
147
  - lib/tty/progressbar/formatter/mean_rate.rb
162
148
  - lib/tty/progressbar/formatter/percent.rb
163
149
  - lib/tty/progressbar/formatter/rate.rb
164
150
  - lib/tty/progressbar/formatter/total.rb
165
151
  - lib/tty/progressbar/formatter/total_byte.rb
152
+ - lib/tty/progressbar/formatters.rb
166
153
  - lib/tty/progressbar/meter.rb
167
154
  - lib/tty/progressbar/multi.rb
168
155
  - lib/tty/progressbar/pipeline.rb
156
+ - lib/tty/progressbar/timer.rb
169
157
  - lib/tty/progressbar/version.rb
170
- - spec/spec_helper.rb
171
- - spec/unit/advance_spec.rb
172
- - spec/unit/clear_spec.rb
173
- - spec/unit/complete_spec.rb
174
- - spec/unit/converter/to_bytes_spec.rb
175
- - spec/unit/converter/to_seconds_spec.rb
176
- - spec/unit/converter/to_time_spec.rb
177
- - spec/unit/custom_formatter_spec.rb
178
- - spec/unit/custom_token_spec.rb
179
- - spec/unit/events_spec.rb
180
- - spec/unit/finish_spec.rb
181
- - spec/unit/formatter/bar_spec.rb
182
- - spec/unit/formatter/byte_rate_spec.rb
183
- - spec/unit/formatter/current_byte_spec.rb
184
- - spec/unit/formatter/current_spec.rb
185
- - spec/unit/formatter/elapsed_spec.rb
186
- - spec/unit/formatter/estimated_spec.rb
187
- - spec/unit/formatter/mean_byte_spec.rb
188
- - spec/unit/formatter/mean_rate_spec.rb
189
- - spec/unit/formatter/percent_spec.rb
190
- - spec/unit/formatter/rate_spec.rb
191
- - spec/unit/formatter/total_byte_spec.rb
192
- - spec/unit/formatter/total_spec.rb
193
- - spec/unit/frequency_spec.rb
194
- - spec/unit/head_spec.rb
195
- - spec/unit/hide_cursor_spec.rb
196
- - spec/unit/inspect_spec.rb
197
- - spec/unit/iterate_spec.rb
198
- - spec/unit/log_spec.rb
199
- - spec/unit/meter_spec.rb
200
- - spec/unit/multi/advance_spec.rb
201
- - spec/unit/multi/events_spec.rb
202
- - spec/unit/multi/finish_spec.rb
203
- - spec/unit/multi/line_inset_spec.rb
204
- - spec/unit/multi/register_spec.rb
205
- - spec/unit/multi/reset_spec.rb
206
- - spec/unit/multi/stop_spec.rb
207
- - spec/unit/multi/width_spec.rb
208
- - spec/unit/new_spec.rb
209
- - spec/unit/pipeline_spec.rb
210
- - spec/unit/ratio_spec.rb
211
- - spec/unit/render_spec.rb
212
- - spec/unit/reset_spec.rb
213
- - spec/unit/resize_spec.rb
214
- - spec/unit/set_current_spec.rb
215
- - spec/unit/start_spec.rb
216
- - spec/unit/stop_spec.rb
217
- - spec/unit/update_spec.rb
218
- - spec/unit/width_spec.rb
219
- - tasks/console.rake
220
- - tasks/coverage.rake
221
- - tasks/spec.rake
222
- - tty-progressbar.gemspec
223
- homepage: https://piotrmurach.github.io/tty/
158
+ homepage: https://ttytoolkit.org
224
159
  licenses:
225
160
  - MIT
226
- metadata: {}
161
+ metadata:
162
+ allowed_push_host: https://rubygems.org
163
+ bug_tracker_uri: https://github.com/piotrmurach/tty-progressbar/issues
164
+ changelog_uri: https://github.com/piotrmurach/tty-progressbar/blob/master/CHANGELOG.md
165
+ documentation_uri: https://www.rubydoc.info/gems/tty-progressbar
166
+ homepage_uri: https://ttytoolkit.org
167
+ source_code_uri: https://github.com/piotrmurach/tty-progressbar
227
168
  post_install_message:
228
169
  rdoc_options: []
229
170
  require_paths:
@@ -239,8 +180,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
180
  - !ruby/object:Gem::Version
240
181
  version: '0'
241
182
  requirements: []
242
- rubygems_version: 3.0.3
183
+ rubygems_version: 3.1.2
243
184
  signing_key:
244
185
  specification_version: 4
245
- summary: A flexible progress bars drawing in terminal emulators.
186
+ summary: A flexible and extensible progress bar for terminal applications.
246
187
  test_files: []
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- require "bundler/gem_tasks"
2
-
3
- FileList['tasks/**/*.rake'].each(&method(:import))
4
-
5
- desc 'Run all specs'
6
- task ci: %w[ spec ]
7
-
8
- task default: :spec
@@ -1,18 +0,0 @@
1
- require 'pastel'
2
-
3
- require_relative '../lib/tty-progressbar'
4
-
5
- pastel = Pastel.new
6
- green = pastel.on_green(" ")
7
- red = pastel.on_red(" ")
8
-
9
- bar = TTY::ProgressBar.new("|:bar|",
10
- total: 30,
11
- complete: green,
12
- incomplete: red
13
- )
14
-
15
- 30.times do
16
- sleep(0.1)
17
- bar.advance
18
- end
@@ -1,12 +0,0 @@
1
- require_relative '../lib/tty-progressbar'
2
-
3
- bar = TTY::ProgressBar.new("downloading [:bar] :percent", head: '>', total: 30)
4
- 30.times do |i|
5
- if i == 15
6
- bar.update(head: 'x')
7
- bar.stop
8
- break
9
- end
10
- sleep(0.1)
11
- bar.advance
12
- end
@@ -1,5 +0,0 @@
1
- require_relative '../lib/tty-progressbar'
2
-
3
- bar = TTY::ProgressBar.new("[:bar]", total: 30)
4
-
5
- bar.iterate(30.times) { sleep(0.1) }
@@ -1,6 +0,0 @@
1
- require_relative '../lib/tty-progressbar'
2
-
3
- bar = TTY::ProgressBar.new("[:bar] :current", total: 10, width: 20)
4
-
5
- range = 1..Float::INFINITY
6
- bar.iterate(range.lazy.take(10)) { sleep(0.1) }
@@ -1,13 +0,0 @@
1
- require_relative '../../lib/tty-progressbar'
2
-
3
- bars = TTY::ProgressBar::Multi.new("main [:bar] :percent")
4
-
5
- bar1 = bars.register "foo [:bar] :percent", total: 15
6
- bar2 = bars.register "bar [:bar] :percent", total: 15
7
- bar3 = bars.register "baz [:bar] :percent", total: 45
8
-
9
- th1 = Thread.new { 15.times { sleep(0.1); bar1.advance } }
10
- th2 = Thread.new { 15.times { sleep(0.1); bar2.advance } }
11
- th3 = Thread.new { 45.times { sleep(0.1); bar3.advance } }
12
-
13
- [th1, th2, th3].each(&:join)
@@ -1,13 +0,0 @@
1
- require_relative '../../lib/tty-progressbar'
2
-
3
- bars = TTY::ProgressBar::Multi.new
4
-
5
- bar1 = bars.register "foo [:bar] :percent", total: 20
6
- bar2 = bars.register "bar [:bar] :percent", total: 30
7
- bar3 = bars.register "baz [:bar] :percent", total: 10
8
-
9
- th1 = Thread.new { 20.times { sleep(0.2); bar1.advance } }
10
- th2 = Thread.new { 30.times { sleep(0.1); bar2.advance } }
11
- th3 = Thread.new { 10.times { sleep(0.3); bar3.advance } }
12
-
13
- [th1, th2, th3].each(&:join)