class ProgressBar::Projectors::SmoothedAverage

def self.calculate(current_projection, new_value, rate)

def self.calculate(current_projection, new_value, rate)
  (new_value * (1.0 - rate)) + (current_projection * rate)
end

def absolute

def absolute
  samples[1] - samples[0]
end

def decrement

def decrement
  self.progress -= 1
end

def increment

def increment
  self.progress += 1
end

def initialize(options = {})

def initialize(options = {})
  self.samples    = []
  self.projection = 0.0
  self.strength   = options[:strength] || DEFAULT_STRENGTH
  start(:at => DEFAULT_BEGINNING_POSITION)
end

def none?

def none?
  projection.zero?
end

def progress

def progress
  samples[1]
end

def progress=(new_progress)

def progress=(new_progress)
  samples[1] = new_progress
  self.projection = \
    self.class.calculate(
      @projection,
      absolute,
      strength
    )
end

def reset

def reset
  start(:at => samples[0])
end

def start(options = {})

def start(options = {})
  self.projection = 0.0
  self.progress   = samples[0] = (options[:at] || progress)
end

def total=(_new_total); end

def total=(_new_total); end