class ProgressMonitor::Display::MessageLoop
Attributes
queue[RW]
Public Class Methods
new(queue, main_thread, renderer)
click to toggle source
# File lib/progress_monitor/display/message_loop.rb, line 6 def initialize(queue, main_thread, renderer) @queue = queue @main_thread = main_thread @renderer = renderer end
Public Instance Methods
perform()
click to toggle source
# File lib/progress_monitor/display/message_loop.rb, line 12 def perform loop do message = queue.pop case message[:type] when :update on_update(message[:task], message[:event], message[:details]) when :timer on_timer when :input on_input message[:key] end end rescue => error main_thread.raise error end
Private Instance Methods
on_input(key)
click to toggle source
# File lib/progress_monitor/display/message_loop.rb, line 38 def on_input(key) case key when ?\C-c main_thread.raise Interrupt when "\e[A" collapse when "\e[B" expand else puts key.inspect end end
on_timer()
click to toggle source
# File lib/progress_monitor/display/message_loop.rb, line 51 def on_timer @renderer.refresh end
on_update(task, event, details)
click to toggle source
# File lib/progress_monitor/display/message_loop.rb, line 30 def on_update(task, event, details) case event when :status renderer.task = task renderer.refresh end end