class PEROBS::ProgressMeter
This is the base class for all ProgressMeter
classes. It only logs into the PEROBS
log. You need to create a derived class that overloads print_bar
() and print_time
() to provide more fancy outputs.
Public Class Methods
new()
click to toggle source
# File lib/perobs/ProgressMeter.rb, line 37 def initialize @name = nil @max_value = nil @current_value = nil @start_time = nil @end_time = nil end
Public Instance Methods
done()
click to toggle source
# File lib/perobs/ProgressMeter.rb, line 70 def done @end_time = Time.now print_time PEROBS.log.info "#{@name} completed in " + secsToHMS(@end_time - @start_time) end
start(name, max_value) { |self| ... }
click to toggle source
# File lib/perobs/ProgressMeter.rb, line 45 def start(name, max_value) @name = name unless max_value >= 0 raise ArgumentError, "Maximum value (#{max_value}) must be larger " + "or equal to 0" end @max_value = max_value @current_value = 0 @start_time = Time.now @end_time = nil print_bar if block_given? yield(self) done end end
update(value)
click to toggle source
# File lib/perobs/ProgressMeter.rb, line 63 def update(value) return unless (value_i = value.to_i) > @current_value @current_value = value_i print_bar end
Private Instance Methods
print_bar()
click to toggle source
# File lib/perobs/ProgressMeter.rb, line 79 def print_bar end
print_time()
click to toggle source
# File lib/perobs/ProgressMeter.rb, line 82 def print_time end
secsToHMS(secs)
click to toggle source
# File lib/perobs/ProgressMeter.rb, line 85 def secsToHMS(secs) secs = secs.to_i s = secs % 60 mins = secs / 60 m = mins % 60 h = mins / 60 "#{h}:#{'%02d' % m}:#{'%02d' % s}" end