lib/tbk/webpay/logger.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "tbk/webpay/logger/base_logger"
module TBK
  module Webpay

    # Get the logger class for a given Symbol
    def self.logger_for_symbol(sym)
      logger_class_name = "#{sym.to_s.gsub(/(^\w)|(_\w)/){ |s| s.upcase[-1] }}Logger"
      logger_require_path = "tbk/webpay/logger/#{sym}_logger"

      require logger_require_path

      TBK::Webpay::Logger.const_get(logger_class_name)
    end

    def self.logger(logger=nil, &block)
      if logger
        klass = case logger
                when Symbol
                  self.logger_for_symbol(logger)
                when Class
                  logger
                else
                  raise ArgumentError, "first argument must be a Symbol or a Class"
                end

        @logger = klass.new(&block)
      end

      @logger
    end
    self.logger(:null)

    module Config
      def webpay_logger(logger=nil, &block)
        TBK::Webpay.logger(logger, &block)
      end
    end

    TBK::Config.send(:include, Config)
  end
end