Sha256: c69c1cc995fdc068b806020d5fedeed767d417750d90e381f46b1d310aa72606

Contents?: true

Size: 704 Bytes

Versions: 2

Compression:

Stored size: 704 Bytes

Contents

# frozen_string_literals: true

require "set"

module Lumberjack
  class Formatter
    # Dereference arrays and hashes and recursively call formatters on each element.
    class StructuredFormatter
      def initialize(formatter = nil)
        @formatter = formatter
      end

      def call(obj)        
        if obj.is_a?(Hash)
          hash = {}
          references ||= Set.new
          obj.each do |name, value|
            hash[name.to_s] = call(value)
          end
          hash
        elsif obj.is_a?(Enumerable)
          obj.collect { |element| call(element) }
        elsif @formatter
          @formatter.format(obj)
        else
          obj
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lumberjack-1.1.1 lib/lumberjack/formatter/structured_formatter.rb
lumberjack-1.1.0 lib/lumberjack/formatter/structured_formatter.rb