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