Sha256: fc20af958a2de7415f417b92604a5854e5290aab1014091581e02f315857a18c

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

# coding: utf-8
# frozen_string_literal: true

module Stealth
  class Logger

    COLORS = ::Hash[
      black:        30,
      red:          31,
      green:        32,
      yellow:       33,
      blue:         34,
      magenta:      35,
      cyan:         36,
      gray:         37,
      light_cyan:   96
    ].freeze

    def self.color_code(code)
      COLORS.fetch(code) { raise(ArgumentError, "Color #{code} not supported.") }
    end

    def self.colorize(input, color:)
      "\e[#{color_code(color)}m#{input}\e[0m"
    end

    def self.log(topic:, message:)
      unless ENV['STEALTH_ENV'] == 'test'
        puts "#{print_topic(topic)} #{message}"
      end
    end

    def self.print_topic(topic)
      topic_string = "[#{topic}]"

      case topic.to_sym
      when :session
        colorize(topic_string, color: :green)
      when :previous_session
        colorize(topic_string, color: :yellow)
      when :facebook, :twilio
        colorize(topic_string, color: :blue)
      when :smooch
        colorize(topic_string, color: :magenta)
      when :alexa
        colorize(topic_string, color: :light_cyan)
      when :catch_all
        colorize(topic_string, color: :red)
      else
        colorize(topic_string, color: :gray)
      end
    end

    class << self
      alias_method :l, :log
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stealth-1.1.6 lib/stealth/logger.rb
stealth-1.1.5 lib/stealth/logger.rb
stealth-1.1.4 lib/stealth/logger.rb
stealth-1.1.3 lib/stealth/logger.rb
stealth-1.1.2 lib/stealth/logger.rb