lib/ruby-progressbar/throttle.rb
class ProgressBar
class Throttle
attr_accessor :rate,
:started_at,
:stopped_at,
:timer
def initialize(options = {})
self.rate = options[:throttle_rate] || 0.01
self.started_at = nil
self.stopped_at = nil
self.timer = options.fetch(:throttle_timer, Timer.new)
end
def choke(options = {})
return unless !timer.started? ||
options.fetch(:force_update_if, false) ||
timer.elapsed_seconds >= rate
timer.restart
yield
end
end
end