class Output::WriterMacro

Public Class Methods

define_writer(output_class, name, level, device_options, message_transformer) click to toggle source
# File lib/output/writer_macro.rb, line 7
def self.define_writer(output_class, name, level, device_options, message_transformer)
  macro = new output_class, name, level, device_options, message_transformer
  macro.define_writer
end

Public Instance Methods

define_getter() click to toggle source
# File lib/output/writer_macro.rb, line 18
def define_getter
  name = self.name
  level = self.level
  transformer = self.message_transformer
  device_options = self.device_options

  writer_attribute = Writer::Attribute.build name
  attribute_name = writer_attribute.name
  var_name = writer_attribute.variable_name

  output_class.send :define_method, attribute_name do
    writer = instance_variable_get var_name

    unless writer
      writer = build_writer(name, level, device_options, transformer) unless writer
      instance_variable_set var_name, writer
    end

    writer
  end
end
define_setter() click to toggle source
# File lib/output/writer_macro.rb, line 40
def define_setter
  writer_attribute = Writer::Attribute.build name
  attribute_name = writer_attribute.name
  var_name = writer_attribute.variable_name

  output_class.send :define_method, "#{attribute_name}=" do |writer|
    writer.logger_level = level
    instance_variable_set var_name, writer
    writer
  end
end
define_write_method() click to toggle source
# File lib/output/writer_macro.rb, line 52
def define_write_method
  name = self.name
  output_class.send :define_method, name do |message|
    writer(name).write message
    self.last_method = name
    message
  end
end
define_writer() click to toggle source
# File lib/output/writer_macro.rb, line 12
def define_writer
  define_getter
  define_setter
  define_write_method
end