Method: Progressor::LimitedSequence#initialize

Defined in:
lib/progressor/limited_sequence.rb

#initialize(total_count:, min_samples: 1, max_samples: 100, formatter: nil) ⇒ LimitedSequence

Creates a new LimitedSequence with the given parameters:

  • total_count: The expected number of loops.

  • min_samples: The number of samples to collect before attempting to calculate a time per iteration. Default: 1

  • max_samples: The maximum number of measurements to collect and average. Default: 100.

  • formatter: A callable that accepts the sequence object and returns a custom formatted string.

Raises:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/progressor/limited_sequence.rb', line 26

def initialize(total_count:, min_samples: 1, max_samples: 100, formatter: nil)
  @total_count = total_count
  @min_samples = min_samples
  @max_samples = [max_samples, total_count].min
  @formatter   = formatter

  raise Error.new("min_samples needs to be a positive number") if min_samples <= 0
  raise Error.new("max_samples needs to be larger than min_samples") if max_samples <= min_samples

  @start_time         = Time.now
  @total_count_digits = total_count.to_s.length
  @current            = 0
  @measurements       = []
  @averages           = []
end