powerbar 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -17,9 +17,9 @@ This is PowerBar - The last progressbar-library you'll ever need.
17
17
  information (percentage-done, throughput, ETA, etc.) and then use the
18
18
  computed values elsewhere in your app.
19
19
 
20
- * All state can be updated at any time. If you're monitoring a
21
- multi-part operation you can change the status-message of a running
22
- PowerBar at any time.
20
+ * All state can be updated at any time. For example: If you're monitoring a
21
+ multi-part operation then you can change the status-message of a running
22
+ PowerBar to reflect the current state.
23
23
 
24
24
  == Screenshot
25
25
 
@@ -49,6 +49,12 @@ Then look at the {source-code}[https://github.com/busyloop/powerbar/blob/master/
49
49
  step = 1000
50
50
 
51
51
  p = PowerBar.new
52
+
53
+ # Override some default values to demonstrate how the settings work
54
+ p.settings.tty.finite.template.barchar = '*'
55
+ p.settings.tty.finite.template.padchar = '.'
56
+
57
+ # Dummy loop to simulate some progress
52
58
  (0..total).step(step).each do |i|
53
59
  p.show(:msg => 'DEMO 1 - Ten seconds of progress', :done => i, :total => total)
54
60
  sleep 0.1
data/lib/powerbar.rb CHANGED
@@ -44,6 +44,7 @@ class PowerBar
44
44
  :rate_sample_max_interval => 10, # See PowerBar::Rate
45
45
  :rate_sample_window => 6, # See PowerBar::Rate
46
46
  :force_mode => nil, # set to :tty or :notty to force either mode
47
+ :kilo => 1024, # Change this to 1000 when measuring network traffic or such.
47
48
  :tty => { # <== Settings when stdout is a tty
48
49
  :finite => { # <== Settings for a finite progress bar (when total != :unknown)
49
50
  # The :output Proc is called to draw on the screen --------------------.
@@ -182,8 +183,8 @@ class PowerBar
182
183
  state.time_now = Time.now
183
184
 
184
185
  @rate ||= PowerBar::Rate.new(state.time_now,
185
- state.settings.rate_sample_window,
186
- state.settings.rate_sample_max_interval)
186
+ state.settings.rate_sample_window,
187
+ state.settings.rate_sample_max_interval)
187
188
  @rate.append(state.time_now, state.done)
188
189
  end
189
190
 
@@ -219,15 +220,11 @@ class PowerBar
219
220
  # Returns nil if the bar-length would be == 0.
220
221
  def bar
221
222
  return nil if state.total.is_a? Symbol
222
- blank = render_template(:main, skip=[:bar])
223
- twid = state.scope_at[0] == :tty ? terminal_width() : scope.line_width
224
- barlen = [twid - blank.gsub(STRIP_ANSI, '').length, 0].max
225
- done = state.done
226
- total = state.total
227
- barchar = scope.template.barchar
228
- padchar = scope.template.padchar
229
- fill = [0,[(done.to_f/total*barlen).to_i,barlen].min].max
230
- thebar = barchar * fill + padchar * [barlen - fill,0].max
223
+ skel = render_template(:main, skip=[:bar])
224
+ lwid = state.scope_at[0] == :tty ? terminal_width() : scope.line_width
225
+ barlen = [lwid - skel.gsub(STRIP_ANSI, '').length, 0].max
226
+ fill = [0,[(state.done.to_f/state.total*barlen).to_i,barlen].min].max
227
+ thebar = scope.template.barchar * fill + scope.template.padchar * [barlen - fill,0].max
231
228
  thebar.length == 0 ? nil : thebar
232
229
  end
233
230
 
@@ -328,16 +325,17 @@ class PowerBar
328
325
  end
329
326
 
330
327
  HQ_UNITS = %w(b k M G T).freeze
331
- def humanize_quantity(number, format='%n%u', base=1024)
328
+ def humanize_quantity(number, format='%n%u')
332
329
  return nil if number.nil?
333
330
  return nil if number.is_a? Float and (number.nan? or number.infinite?)
334
- return number if number.to_i < base
331
+ kilo = settings.kilo
332
+ return number if number.to_i < kilo
335
333
 
336
334
  max_exp = HQ_UNITS.size - 1
337
335
  number = Float(number)
338
- exponent = (Math.log(number) / Math.log(base)).to_i
336
+ exponent = (Math.log(number) / Math.log(kilo)).to_i
339
337
  exponent = max_exp if exponent > max_exp
340
- number /= base ** exponent
338
+ number /= kilo ** exponent
341
339
 
342
340
  unit = HQ_UNITS[exponent]
343
341
  return format.gsub(/%n/, number.round(1).to_s).gsub(/%u/, unit)
@@ -1,3 +1,3 @@
1
1
  class Powerbar
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: powerbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-07 00:00:00.000000000Z
12
+ date: 2011-12-08 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ansi
16
- requirement: &9714940 !ruby/object:Gem::Requirement
16
+ requirement: &18446200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.4.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *9714940
24
+ version_requirements: *18446200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hashie
27
- requirement: &9713660 !ruby/object:Gem::Requirement
27
+ requirement: &18432940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 1.1.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *9713660
35
+ version_requirements: *18432940
36
36
  description: The last progressbar-library you'll ever need
37
37
  email:
38
38
  - moe@busyloop.net