tty-progressbar 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,14 +0,0 @@
1
- RSpec.describe TTY::ProgressBar, '#start' do
2
- let(:output) { StringIO.new('', 'w+') }
3
-
4
- it "starts timer and draws initial progress" do
5
- progress = TTY::ProgressBar.new("[:bar]", output: output, total: 10)
6
- progress.start
7
- progress.advance
8
- output.rewind
9
- expect(output.read).to eq([
10
- "\e[1G[ ]",
11
- "\e[1G[= ]"
12
- ].join)
13
- end
14
- end
@@ -1,19 +0,0 @@
1
- RSpec.describe TTY::ProgressBar, '#stop' do
2
- let(:output) { StringIO.new('', 'w+') }
3
-
4
- it 'stops progress' do
5
- progress = TTY::ProgressBar.new("[:bar]", output: output, total: 10)
6
- 5.times { |i|
7
- progress.stop if i == 3
8
- progress.advance
9
- }
10
- expect(progress.complete?).to be(false)
11
- output.rewind
12
- expect(output.read).to eq([
13
- "\e[1G[= ]",
14
- "\e[1G[== ]",
15
- "\e[1G[=== ]",
16
- "\e[1G[=== ]\n"
17
- ].join)
18
- end
19
- end
@@ -1,22 +0,0 @@
1
- RSpec.describe TTY::ProgressBar, '#update' do
2
- let(:output) { StringIO.new('', 'w+') }
3
-
4
- it "updates bar configuration options" do
5
- progress = TTY::ProgressBar.new "[:bar]" do |config|
6
- config.output = output
7
- config.total = 10
8
- end
9
- 10.times { |i|
10
- progress.update(complete: '-', head: '>') if i == 2
11
- progress.advance(2)
12
- }
13
- output.rewind
14
- expect(output.read).to eq([
15
- "\e[1G[== ]",
16
- "\e[1G[==== ]",
17
- "\e[1G[-----> ]",
18
- "\e[1G[-------> ]",
19
- "\e[1G[--------->]\n"
20
- ].join)
21
- end
22
- end
@@ -1,86 +0,0 @@
1
- RSpec.describe TTY::ProgressBar, '#width' do
2
- let(:output) { StringIO.new('', 'w+') }
3
-
4
- it "handles width exceeding terminal width" do
5
- progress = TTY::ProgressBar.new "[:bar]" do |config|
6
- config.output = output
7
- config.total = 5
8
- config.width = 1024
9
- end
10
- allow(TTY::Screen).to receive(:width).and_return(20)
11
-
12
- 5.times { progress.advance }
13
- output.rewind
14
-
15
- expect(output.read).to eq([
16
- "\e[1G[==== ]",
17
- "\e[1G[======= ]",
18
- "\e[1G[=========== ]",
19
- "\e[1G[============== ]",
20
- "\e[1G[==================]\n"
21
- ].join)
22
- end
23
-
24
- it "handles unicode characters width in formatting string" do
25
- bar = TTY::ProgressBar.new("あめかんむり[:bar]", output: output, total: 20)
26
- allow(TTY::Screen).to receive(:width).and_return(20)
27
-
28
- 4.times { bar.advance(5) }
29
- output.rewind
30
-
31
- expect(output.read).to eq([
32
- "\e[1Gあめかんむり[== ]",
33
- "\e[1Gあめかんむり[=== ]",
34
- "\e[1Gあめかんむり[===== ]",
35
- "\e[1Gあめかんむり[======]\n"
36
- ].join)
37
- end
38
-
39
- it "handles unicodes characters within bar" do
40
- bar = TTY::ProgressBar.new("[:bar]", output: output, total: 20,
41
- complete: 'あ', incomplete: 'め')
42
- allow(TTY::Screen).to receive(:width).and_return(20)
43
-
44
- 4.times { bar.advance(5) }
45
- output.rewind
46
-
47
- expect(output.read).to eq([
48
- "\e[1G[あああめめめめめめ]",
49
- "\e[1G[あああああめめめめ]",
50
- "\e[1G[あああああああめめ]",
51
- "\e[1G[あああああああああ]\n"
52
- ].join)
53
- end
54
-
55
- it "handles unicodes characters within bar" do
56
- bar = TTY::ProgressBar.new("[:bar]", output: output, total: 20,
57
- complete: 'あ', incomplete: ' ')
58
- allow(TTY::Screen).to receive(:width).and_return(20)
59
-
60
- 4.times { bar.advance(5) }
61
- output.rewind
62
-
63
- expect(output.read).to eq([
64
- "\e[1G[あああ ]",
65
- "\e[1G[あああああ ]",
66
- "\e[1G[あああああああ ]",
67
- "\e[1G[あああああああああ]\n"
68
- ].join)
69
- end
70
-
71
- it "handles unicodes characters within bar" do
72
- bar = TTY::ProgressBar.new("[:bar]", output: output, total: 20,
73
- complete: 'x', incomplete: 'め')
74
- allow(TTY::Screen).to receive(:width).and_return(20)
75
-
76
- 4.times { bar.advance(5) }
77
- output.rewind
78
-
79
- expect(output.read).to eq([
80
- "\e[1G[xxxxxめめめめめめ]",
81
- "\e[1G[xxxxxxxxxめめめめ]",
82
- "\e[1G[xxxxxxxxxxxxxxめめ]",
83
- "\e[1G[xxxxxxxxxxxxxxxxxx]\n"
84
- ].join)
85
- end
86
- end
@@ -1,9 +0,0 @@
1
- desc 'Load gem inside irb console'
2
- task :console do
3
- require 'irb'
4
- require 'irb/completion'
5
- require_relative '../lib/tty-progressbar'
6
- ARGV.clear
7
- IRB.start
8
- end
9
- task :c => :console
@@ -1,9 +0,0 @@
1
- desc 'Measure code coverage'
2
- task :coverage do
3
- begin
4
- original, ENV['COVERAGE'] = ENV['COVERAGE'], 'true'
5
- Rake::Task['spec'].invoke
6
- ensure
7
- ENV['COVERAGE'] = original
8
- end
9
- end
@@ -1,27 +0,0 @@
1
- begin
2
- require 'rspec/core/rake_task'
3
-
4
- desc 'Run all specs'
5
- RSpec::Core::RakeTask.new(:spec) do |task|
6
- task.pattern = 'spec/{unit,integration}{,/*/**}/*_spec.rb'
7
- end
8
-
9
- namespace :spec do
10
- desc 'Run unit specs'
11
- RSpec::Core::RakeTask.new(:unit) do |task|
12
- task.pattern = 'spec/unit{,/*/**}/*_spec.rb'
13
- end
14
-
15
- desc 'Run integration specs'
16
- RSpec::Core::RakeTask.new(:integration) do |task|
17
- task.pattern = 'spec/integration{,/*/**}/*_spec.rb'
18
- end
19
- end
20
-
21
- rescue LoadError
22
- %w[spec spec:unit spec:integration].each do |name|
23
- task name do
24
- $stderr.puts "In order to run #{name}, do `gem install rspec`"
25
- end
26
- end
27
- end
@@ -1,32 +0,0 @@
1
- lib = File.expand_path('../lib', __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'tty/progressbar/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "tty-progressbar"
7
- spec.version = TTY::ProgressBar::VERSION
8
- spec.authors = ["Piotr Murach"]
9
- spec.email = ["me@piotrmurach.com"]
10
- spec.summary = %q{A flexible progress bars drawing in terminal emulators.}
11
- spec.description = %q{A flexible progress bars drawing in terminal emulators.}
12
- spec.homepage = "https://piotrmurach.github.io/tty/"
13
- spec.license = "MIT"
14
-
15
- spec.files = Dir['{lib,spec,examples}/**/*.rb']
16
- spec.files += Dir['tasks/*', 'tty-progressbar.gemspec']
17
- spec.files += Dir['README.md', 'CHANGELOG.md', 'LICENSE.txt', 'Rakefile']
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
20
-
21
- spec.required_ruby_version = '>= 2.0.0'
22
-
23
- spec.add_dependency 'strings-ansi', '~> 0.1.0'
24
- spec.add_dependency 'tty-cursor', '~> 0.7'
25
- spec.add_dependency 'tty-screen', '~> 0.7'
26
- spec.add_dependency 'unicode-display_width', '~> 1.6'
27
-
28
- spec.add_development_dependency 'bundler', '>= 1.5.0'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
30
- spec.add_development_dependency 'timecop', '~> 0.9.1'
31
- spec.add_development_dependency 'rake'
32
- end