jsuder/holepicker

View on GitHub
lib/holepicker/logger.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'logger'
require 'rainbow'

module HolePicker
  class Logger < ::Logger
    attr_accessor :color

    def initialize(io)
      super
      self.level = INFO
      self.color = true
    end

    def format_message(level, datetime, progname, message)
      progname == 'print' ? message.to_s : "#{message}\n"
    end

    def print(message, level = INFO)
      add(level, message, 'print')
    end

    def fail(message)
      error(color ? Rainbow(message).red : message)
    end

    def success(message)
      info(color ? Rainbow(message).green : message)
    end
  end

  module HasLogger
    def logger
      @logger ||= HolePicker.logger
    end

    def self.included(c)
      c.class_eval do
        attr_writer :logger
        extend HasLogger
      end
    end
  end

  def self.logger
    @logger ||= Logger.new(STDOUT)
  end
end