Class: Rubikon::ProgressBar
Overview
A class for displaying and managing progress bars
Instance Method Summary collapse
-
#+(value = 1) ⇒ ProgressBar
Add an amount to the current value of the progress bar.
-
#initialize(options = {}) ⇒ ProgressBar
constructor
Create a new ProgressBar using the given options.
Constructor Details
#initialize(options = {}) ⇒ ProgressBar
Create a new ProgressBar using the given options.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rubikon/progress_bar.rb', line 30 def initialize( = {}) if .is_a? Numeric @maximum = = {} else @maximum = [:maximum] || 100 end @maximum.round @progress_char = [:char] || '#' @ostream = [:ostream] || $stdout @progress = 0 @size = [:size] || 20 @factor = @size.round.to_f / @maximum @value = 0 @brackets = [:brackets] || false @bracket_filler = [:bracket_filler] || ' ' if @brackets @ostream << '[' + @bracket_filler * @size + ']'+ "\b" * (@size + 1) @ostream.flush end self + ([:start] || 0) end |
Instance Method Details
#+(value = 1) ⇒ ProgressBar
Add an amount to the current value of the progress bar
This triggers a refresh of the progress bar, if the added value actually changes the displayed bar.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/rubikon/progress_bar.rb', line 67 def +(value = 1) return if (value <= 0) || (@value == @maximum) @value += value old_progress = @progress add_progress = ((@value - @progress / @factor) * @factor).round @progress += add_progress if @progress > @size @progress = @size add_progress = @size - old_progress end if add_progress > 0 @ostream << @progress_char * add_progress @ostream.flush @ostream.putc 10 if @progress == @size end self end |