simple_progressbar 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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: []