module Observed::Reporter::ReportFormatting

The module to equip an observer with a `formatter` to format the data being reported. The `formatter` is just a proc and is able to be configured via an attribute.

@example class YourObserver < Observed::Reporter

include Observed::Reporter::Configurable
include Observed::Reporter::ReportFormatting

attribute :format, default: -> tag, time, data { "#{Time.at(time)} #{tag} #{data}" }

def report(tag, time, data)
  formatted_data = format_report(tag, time, data)
  # The output of your choice
end

end

observer = YourObserver.new(format: -> tag, time, data { β€œThe data being reported: #{tag} #{time} #{data}” }) observer.report('test', Time.now, {data: 1}) #=> outputs β€œ#{Time.at(Time.now)} test {:data=>1}”

Public Instance Methods

format_report(tag, time, data) click to toggle source

Format the data being reported. The data includes 3 parameters: `tag`, `time` and `data`. @param [String] tag @param [Time] time @param [Hash] data

# File lib/observed/reporter/report_formatting.rb, line 43
def format_report(tag, time, data)
  num_params = format.parameters.size
  case num_params
  when 3
    format.call(tag, time, data)
  when 4
    format.call(tag, time, data, Observed::Hash::Fetcher.new(data))
  else
    fail "Number of parameters for the function for the key :format must be 3 or 4, but was #{num_params}(#{format.parameters}"
  end
end