Class: PEROBS::ProgressMeter

Inherits:
Object
  • Object
show all
Defined in:
lib/perobs/ProgressMeter.rb

Overview

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.

Direct Known Subclasses

ConsoleProgressMeter

Instance Method Summary collapse

Constructor Details

#initializeProgressMeter

Returns a new instance of ProgressMeter.



37
38
39
40
41
42
43
# File 'lib/perobs/ProgressMeter.rb', line 37

def initialize
  @name = nil
  @max_value = nil
  @current_value = nil
  @start_time = nil
  @end_time = nil
end

Instance Method Details

#doneObject



70
71
72
73
74
75
# 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) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 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) ⇒ Object



63
64
65
66
67
68
# 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