simple_progressbar 0.1.3 → 0.1.4

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/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ #encoding: utf-8
2
+ source 'http://rubygems.org'
3
+
4
+ group :development do
5
+ gem 'jeweler'
6
+ gem 'rake'
7
+ end
@@ -0,0 +1,20 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ git (1.2.5)
5
+ jeweler (1.8.4)
6
+ bundler (~> 1.0)
7
+ git (>= 1.2.5)
8
+ rake
9
+ rdoc
10
+ json (1.8.0)
11
+ rake (10.0.4)
12
+ rdoc (4.0.1)
13
+ json (~> 1.4)
14
+
15
+ PLATFORMS
16
+ ruby
17
+
18
+ DEPENDENCIES
19
+ jeweler
20
+ rake
data/Rakefile CHANGED
@@ -42,7 +42,7 @@ task :test => :check_dependencies
42
42
 
43
43
  task :default => :test
44
44
 
45
- require 'rake/rdoctask'
45
+ require 'rdoc/task'
46
46
  Rake::RDocTask.new do |rdoc|
47
47
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
48
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -1,7 +1,13 @@
1
1
  class SimpleProgressbar
2
+ def initialize
3
+ @last_length = 0
4
+ @title = ""
5
+ @progress = 0
6
+ end
2
7
 
3
8
  def show(title, &block)
4
- print title + " "
9
+ @title = title
10
+ print @title + " "
5
11
  start_progress
6
12
  # thanks to http://www.dcmanges.com/blog/ruby-dsls-instance-eval-with-delegation
7
13
  @self_before_instance_eval = eval "self", block.binding
@@ -9,8 +15,20 @@ class SimpleProgressbar
9
15
  finish_progress
10
16
  end
11
17
 
18
+ def interrupt
19
+ # TODO: Make some of the strings constants so we don't have to use a magic number here.
20
+ progressbar_length = 16 + @last_length + @title.length
21
+ move_cursor = "\e[#{progressbar_length}D"
22
+ print move_cursor + (" " * progressbar_length) + move_cursor
23
+ STDOUT.flush
24
+ yield
25
+ puts
26
+ print @title + " "
27
+ render_progress(@progress)
28
+ end
29
+
12
30
  def progress(percent)
13
- print "\e[18D"
31
+ print "\e[#{15 + @last_length}D"
14
32
  render_progress(percent)
15
33
  end
16
34
 
@@ -21,15 +39,28 @@ class SimpleProgressbar
21
39
  private
22
40
 
23
41
  def render_progress(percent)
42
+ @progress = percent
24
43
  print "["
25
44
 
26
- (percent/10).to_i.times do
27
- print "*"
45
+ print "*" * [(percent/10).to_i, 10].min
46
+ print " " * [10 - (percent/10).to_i, 0].max
47
+
48
+ if percent.class != Float
49
+ printable_percent = "%3s" % percent
50
+ else
51
+ non_decimal_digits = (Math.log(percent) / Math.log(10)).truncate + 1
52
+ printable_percent = (non_decimal_digits < 3 ? " " * (3 - non_decimal_digits) : "") + percent.to_s
28
53
  end
29
- (10 - (percent/10).to_i).times do
30
- print " "
54
+
55
+ print "]\e[32m #{printable_percent}\e[0m %"
56
+
57
+ new_length = printable_percent.length
58
+ if @last_length > new_length
59
+ print " " * (@last_length - new_length)
60
+ print "\e[#{@last_length - new_length}D"
31
61
  end
32
- print "]\e[32m#{'%4s' % percent}\e[0m %"
62
+ @last_length = new_length
63
+
33
64
  STDOUT.flush
34
65
  end
35
66
 
@@ -4,20 +4,22 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{simple_progressbar}
8
- s.version = "0.1.3"
7
+ s.name = "simple_progressbar"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Bodo Tasche"]
12
- s.date = %q{2010-12-30}
13
- s.description = %q{A progressbar for the terminal. Handy for little scripts.}
14
- s.email = %q{bodo@bitboxer.de}
12
+ s.date = "2013-05-27"
13
+ s.description = "A progressbar for the terminal. Handy for little scripts."
14
+ s.email = "bodo@bitboxer.de"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
+ "Gemfile",
22
+ "Gemfile.lock",
21
23
  "LICENSE",
22
24
  "README.rdoc",
23
25
  "Rakefile",
@@ -27,25 +29,26 @@ Gem::Specification.new do |s|
27
29
  "test/helper.rb",
28
30
  "test/test_simple_progressbar.rb"
29
31
  ]
30
- s.homepage = %q{http://github.com/bitboxer/simple_progressbar}
32
+ s.homepage = "http://github.com/bitboxer/simple_progressbar"
31
33
  s.require_paths = ["lib"]
32
- s.rubygems_version = %q{1.3.7}
33
- s.summary = %q{A simple progressbar}
34
- s.test_files = [
35
- "test/helper.rb",
36
- "test/test_simple_progressbar.rb"
37
- ]
34
+ s.rubygems_version = "1.8.23"
35
+ s.summary = "A simple progressbar"
38
36
 
39
37
  if s.respond_to? :specification_version then
40
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
41
38
  s.specification_version = 3
42
39
 
43
40
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
41
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
42
+ s.add_development_dependency(%q<rake>, [">= 0"])
44
43
  s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
45
44
  else
45
+ s.add_dependency(%q<jeweler>, [">= 0"])
46
+ s.add_dependency(%q<rake>, [">= 0"])
46
47
  s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
47
48
  end
48
49
  else
50
+ s.add_dependency(%q<jeweler>, [">= 0"])
51
+ s.add_dependency(%q<rake>, [">= 0"])
49
52
  s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
50
53
  end
51
54
  end
metadata CHANGED
@@ -1,46 +1,75 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: simple_progressbar
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 3
9
- version: 0.1.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Bodo Tasche
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-12-30 00:00:00 +01:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: thoughtbot-shoulda
12
+ date: 2013-05-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: jeweler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
22
39
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: thoughtbot-shoulda
48
+ requirement: !ruby/object:Gem::Requirement
24
49
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
31
54
  type: :development
32
- version_requirements: *id001
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
33
62
  description: A progressbar for the terminal. Handy for little scripts.
34
63
  email: bodo@bitboxer.de
35
64
  executables: []
36
-
37
65
  extensions: []
38
-
39
- extra_rdoc_files:
66
+ extra_rdoc_files:
40
67
  - LICENSE
41
68
  - README.rdoc
42
- files:
69
+ files:
43
70
  - .document
71
+ - Gemfile
72
+ - Gemfile.lock
44
73
  - LICENSE
45
74
  - README.rdoc
46
75
  - Rakefile
@@ -49,38 +78,28 @@ files:
49
78
  - simple_progressbar.gemspec
50
79
  - test/helper.rb
51
80
  - test/test_simple_progressbar.rb
52
- has_rdoc: true
53
81
  homepage: http://github.com/bitboxer/simple_progressbar
54
82
  licenses: []
55
-
56
83
  post_install_message:
57
84
  rdoc_options: []
58
-
59
- require_paths:
85
+ require_paths:
60
86
  - lib
61
- required_ruby_version: !ruby/object:Gem::Requirement
87
+ required_ruby_version: !ruby/object:Gem::Requirement
62
88
  none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- segments:
67
- - 0
68
- version: "0"
69
- required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
94
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- segments:
75
- - 0
76
- version: "0"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
77
99
  requirements: []
78
-
79
100
  rubyforge_project:
80
- rubygems_version: 1.3.7
101
+ rubygems_version: 1.8.23
81
102
  signing_key:
82
103
  specification_version: 3
83
104
  summary: A simple progressbar
84
- test_files:
85
- - test/helper.rb
86
- - test/test_simple_progressbar.rb
105
+ test_files: []