class GreenLog::Entry::Builder

A builder for entries.

Attributes

data[R]
exception[R]
message[R]
severity[R]

Public Class Methods

new(severity) click to toggle source
# File lib/green_log/entry.rb, line 40
def initialize(severity)
  @severity = severity
end

Public Instance Methods

build(*args, &block) click to toggle source
# File lib/green_log/entry.rb, line 67
def build(*args, &block)
  args.each(&method(:handle_arg))
  if block
    if block.arity.zero?
      Array(block.call).each(&method(:handle_arg))
    else
      block.call(self)
    end
  end
  Entry.with(severity: severity, message: message, data: data, exception: exception)
end
data=(arg) click to toggle source
# File lib/green_log/entry.rb, line 55
def data=(arg)
  raise ArgumentError, ":data already specified" if defined?(@data)

  @data = arg
end
exception=(arg) click to toggle source
# File lib/green_log/entry.rb, line 61
def exception=(arg)
  raise ArgumentError, ":exception already specified" if defined?(@exception)

  @exception = arg
end
message=(arg) click to toggle source
# File lib/green_log/entry.rb, line 49
def message=(arg)
  raise ArgumentError, ":message already specified" if defined?(@message)

  @message = arg
end

Private Instance Methods

arg_type(arg) click to toggle source
# File lib/green_log/entry.rb, line 85
def arg_type(arg)
  case arg
  when String
    :message
  when Hash
    :data
  when Exception
    :exception
  else
    raise ArgumentError, "un-loggable argument: #{arg.inspect}"
  end
end
handle_arg(arg) click to toggle source
# File lib/green_log/entry.rb, line 81
def handle_arg(arg)
  public_send("#{arg_type(arg)}=", arg)
end