module Invoker class ProcessPrinter MAX_COLUMN_WIDTH = 40 attr_accessor :list_response def initialize(list_response) self.list_response = list_response end def print_table hash_with_colors = [] list_response.processes.each do |process| if process.pid hash_with_colors << colorize_hash(process, "green") else hash_with_colors << colorize_hash(process, "light_black") end end Formatador.display_compact_table(hash_with_colors) end def print_raw_text list_response.processes.each do |process| Formatador.display_line("[bold]Process Name : #{process.process_name}[/]") Formatador.indent { Formatador.display_line("Dir : #{process.dir}") if process.pid Formatador.display_line("PID : #{process.pid}") else Formatador.display_line("PID : Not Running") end Formatador.display_line("Port : #{process.port}") Formatador.display_line("Command : #{process.shell_command}") } end end private def colorize_hash(process, color) hash_with_colors = {} hash_with_colors['dir'] = colored_string(process.dir, color) hash_with_colors['pid'] = colored_string(process.pid || 'Not Running', color) hash_with_colors['port'] = colored_string(process.port, color) hash_with_colors['shell_command'] = colored_string(process.shell_command, color) hash_with_colors['process_name'] = colored_string(process.process_name, color) hash_with_colors end def colored_string(string, color) string = string.to_s if string.length > MAX_COLUMN_WIDTH string = "#{string[0..MAX_COLUMN_WIDTH]}.." end "[#{color}]#{string}[/]" end end end