class ExtendedLogger::Registry

Attributes

attr_name[R]
logger_class[R]
sink[R]

Public Class Methods

build(logger_class, attr_name: nil, **sink_arguments) click to toggle source
# File lib/extended_logger/registry.rb, line 13
def self.build logger_class, attr_name: nil, **sink_arguments
  attr_name ||= :logger

  sink = logger_class.sink **sink_arguments

  instance = new logger_class, sink, attr_name
  instance.send :const_set, :Logger, logger_class
  instance
end
new(logger_class, sink, attr_name) click to toggle source
# File lib/extended_logger/registry.rb, line 7
def initialize logger_class, sink, attr_name
  @attr_name = attr_name
  @logger_class = logger_class
  @sink = sink
end

Public Instance Methods

build_logger(key) click to toggle source
# File lib/extended_logger/registry.rb, line 23
def build_logger key
  logger = logger_class.new sink
  logger.label = key.name
  logger
end
cache() click to toggle source
# File lib/extended_logger/registry.rb, line 29
def cache
  @cache ||= Hash.new do |cache, key|
    cache[key] = build_logger key
  end
end
clear() click to toggle source
# File lib/extended_logger/registry.rb, line 35
def clear
  cache.clear
end
extended(object) click to toggle source
# File lib/extended_logger/registry.rb, line 67
def extended object
  included object.singleton_class
end
get(receiver=nil) click to toggle source
# File lib/extended_logger/registry.rb, line 71
def get receiver=nil
  receiver ||= TOPLEVEL_BINDING.receiver

  key = self.key receiver

  cache[key]
end
included(cls) click to toggle source
# File lib/extended_logger/registry.rb, line 39
def included cls
  cls.class_exec self do |registry|
    ivar_name = "@#{registry.attr_name}"
    cvar_name = "@@#{registry.attr_name}"

    attr_writer registry.attr_name

    define_method registry.attr_name do
      if instance_variable_defined? ivar_name
        return instance_variable_get ivar_name
      end

      if self.is_a? Module
        target = self
      else
        target = self.class
      end

      if target.class_variable_defined? cvar_name
        return target.class_variable_get cvar_name
      end

      logger = registry.get self
      self.class.class_variable_set cvar_name, logger
    end
  end
end
key(receiver) click to toggle source
# File lib/extended_logger/registry.rb, line 79
def key receiver
  if receiver.is_a? Module
    receiver
  else
    receiver.class
  end
end
level() click to toggle source
# File lib/extended_logger/registry.rb, line 87
def level
  sink.level
end
level=(reference) click to toggle source
# File lib/extended_logger/registry.rb, line 91
def level= reference
  sink.level = levels.resolve reference
end
levels() click to toggle source
# File lib/extended_logger/registry.rb, line 95
def levels
  sink.levels
end
lower_verbosity() click to toggle source
# File lib/extended_logger/registry.rb, line 99
def lower_verbosity
  sink.lower_verbosity
end
raise_verbosity() click to toggle source
# File lib/extended_logger/registry.rb, line 103
def raise_verbosity
  sink.raise_verbosity
end
set(receiver, value) click to toggle source
# File lib/extended_logger/registry.rb, line 107
def set receiver, value
  key = self.key receiver

  cache[key] = value
end