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
print_time() click to toggle source
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