class Lumberjack::Formatter

def add(klass, formatter = nil, *args, &block)

Returns:
  • (self) - Returns itself so that add statements can be chained together.

Other tags:
    Yieldreturn: - The formatted string.

Other tags:
    Yieldparam: obj - The object to format.

Other tags:
    Yield: - A block that will be used as the formatter for the class.

Parameters:
  • args (Array) -- Arguments to pass to the formatter when it is initialized.
  • formatter (Symbol, Class, String, #call) -- The formatter to use for the class.
  • klass (Class, Module, String, Array) -- The class or module to add a formatter for.
def add(klass, formatter = nil, *args, &block)
  formatter ||= block
  if formatter.nil?
    remove(klass)
  else
    formatter_class_name = nil
    if formatter.is_a?(Symbol)
      formatter_class_name = "#{formatter.to_s.gsub(/(^|_)([a-z])/) { |m| $~[2].upcase }}Formatter"
    elsif formatter.is_a?(String)
      formatter_class_name = formatter
    end
    if formatter_class_name
      formatter = Formatter.const_get(formatter_class_name)
    end
    if formatter.is_a?(Class)
      formatter = formatter.new(*args)
    end
    Array(klass).each do |k|
      if k.instance_of?(Module)
        @module_formatters[k] = formatter
      else
        k = k.name if k.is_a?(Class)
        @class_formatters[k] = formatter
      end
    end
  end
  self
end