lib/progress.rb in progress-2.2.0 vs lib/progress.rb in progress-2.3.0
- old
+ new
@@ -74,16 +74,11 @@
def start(title = nil, total = nil)
if levels.empty?
@started_at = Time.now
@eta = nil
@semaphore = Mutex.new
- @beeper = Thread.new do
- loop do
- sleep 1
- print_message
- end
- end
+ start_beeper
end
levels << new(title, total)
print_message true
if block_given?
begin
@@ -127,11 +122,11 @@
print_message true
set_title nil
end
levels.pop
if levels.empty?
- @beeper.kill
+ stop_beeper
io.puts
end
end
end
@@ -215,11 +210,34 @@
@semaphore.unlock
end
end
end
+ def start_beeper
+ @beeper = Thread.new do
+ loop do
+ sleep 10
+ print_message unless Thread.current[:skip]
+ end
+ end
+ end
+
+ def stop_beeper
+ @beeper.kill
+ @beeper = nil
+ end
+
+ def restart_beeper
+ if @beeper
+ @beeper[:skip] = true
+ @beeper.run
+ @beeper[:skip] = false
+ end
+ end
+
def print_message(force = false)
lock force do
+ restart_beeper
if force || time_to_print?
inner = 0
parts, parts_cl = [], []
levels.reverse.each do |level|
inner = current = level.to_f(inner)