class ProgressMonitor::Display::Renderer
Attributes
task[RW]
Public Class Methods
new(task)
click to toggle source
# File lib/progress_monitor/display/renderer.rb, line 6 def initialize(task) @task = task @current_state = nil end
Public Instance Methods
refresh()
click to toggle source
# File lib/progress_monitor/display/renderer.rb, line 11 def refresh new_state = task_state if @current_state != new_state render task_state @current_state = new_state end rescue => e puts "\r\n", e.inspect, e.backtrace nil end
Private Instance Methods
clear_code()
click to toggle source
# File lib/progress_monitor/display/renderer.rb, line 43 def clear_code "\e[1K\r" end
columns()
click to toggle source
# File lib/progress_monitor/display/renderer.rb, line 47 def columns STDIN.winsize[1] end
render(state)
click to toggle source
# File lib/progress_monitor/display/renderer.rb, line 33 def render(state) left = state[:name] progress_bar = ProgressBar.new(size: 20) progress_bar.completion_percent = state[:completion_percent] right = progress_bar.render spacing = " " * (columns - left.length - right.length) print clear_code, left, spacing, "\e[48;5;235m\e[32m", right, "\e[0m\r\e[#{left.length}C" end
task_state()
click to toggle source
# File lib/progress_monitor/display/renderer.rb, line 26 def task_state { name: task.name, completion_percent: task.completion_percent, } end