class ExtendedLogger::Define

Attributes

levels[R]
sink_defaults[R]
subclass[R]

Public Class Methods

call(*arguments) click to toggle source
# File lib/extended_logger/define.rb, line 21
def self.call *arguments
  instance = new *arguments
  instance.()
end
new(subclass, levels, sink_defaults) click to toggle source
# File lib/extended_logger/define.rb, line 15
def initialize subclass, levels, sink_defaults
  @levels = levels
  @sink_defaults = sink_defaults
  @subclass = subclass
end

Public Instance Methods

call() click to toggle source
# File lib/extended_logger/define.rb, line 26
def call
  levels = self.level_set

  subclass.define_singleton_method :levels do levels end
  subclass.send :define_method, :levels do self.class.levels end

  if sink_defaults = self.sink_defaults
    subclass.define_singleton_method :sink_defaults do
      sink_defaults
    end
  end

  levels.each do |level|
    method_name = level.name

    subclass.send :define_method, method_name do |*arguments, &block|
      add level, *arguments, &block
    end
  end
end
level_set() click to toggle source
# File lib/extended_logger/define.rb, line 47
def level_set
  if levels.is_a? Level::Set
    levels
  else
    Level::Set.build levels
  end
end