csc360-a1-shell/ruby/logger.rb

43 lines
827 B
Ruby

require './colours'
class Shell
# Queues up messages to be printed out when readline is waiting for input, to prevent
# mixing shell output with command output.
class Logger
include Colours
Log = Struct.new(:level, :message)
attr_reader :logs
def self.instance
@instance ||= new
end
def initialize
clear
end
def log(message)
@logs << Log.new(:info, "#{WHITE}[INFO]#{CLEAR} #{message}")
end
alias info log
def warn(message)
@logs << Log.new(:warning, "#{YELLOW}[WARN]#{CLEAR} #{message}")
end
def error(message)
@logs << Log.new(:error, "#{RED}[ERROR]#{CLEAR} #{message}")
end
def verbose(message)
@logs << Log.new(:verbose, "[VERBOSE] #{message}")
end
def clear
@logs = []
nil
end
end
end