lib/tty/command/printers/abstract.rb
require "pastel"
module TTY
class Command
module Printers
class Abstract
extend Forwardable
def_delegators :@color, :decorate
attr_reader :output, :options
attr_accessor :out_data, :err_data
# Initialize a Printer object
#
# @param [IO] output
# the printer output
#
# @api public
def initialize(output, options = {})
@output = output
@options = options
@enabled = options.fetch(:color, true)
@color = ::Pastel.new(enabled: @enabled)
@out_data = ""
@err_data = ""
end
def print_command_start(cmd, *args)
write(cmd.to_command + "#{args.join}")
end
def print_command_out_data(cmd, *args)
write(args.join(" "))
end
def print_command_err_data(cmd, *args)
write(args.join(" "))
end
def print_command_exit(cmd, *args)
write(args.join(" "))
end
def write(cmd, message)
raise NotImplemented, "Abstract printer cannot be used"
end
end # Abstract
end # Printers
end # Command
end # TTY