Class: GetaroundUtils::LogFormatters::DeepKeyValue

Inherits:
Object
  • Object
show all
Defined in:
lib/getaround_utils/log_formatters/deep_key_value.rb

Instance Method Summary collapse

Instance Method Details

#call(data) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/getaround_utils/log_formatters/deep_key_value.rb', line 5

def call(data)
  case data
  when Array
    flattify(data).map { |key, value| "#{key}=#{value}" }.join(' ')
  when Hash
    flattify(data).map { |key, value| "#{key}=#{value}" }.join(' ')
  when Numeric
    data.to_s
  when String
    data =~ /^".*"$/ ? data : data.inspect
  else
    data.to_s.inspect
  end
end

#flattify(value, result = {}, path = []) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/getaround_utils/log_formatters/deep_key_value.rb', line 21

def flattify(value, result = {}, path = [])
  case value
  when Array
    value.each.with_index(0) do |v, i|
      flattify(v, result, path + [i])
    end
  when Hash
    value.each do |k, v|
      flattify(v, result, path + [k])
    end
  when Numeric
    result[path.join(".")] = value.to_s
  when String
    result[path.join(".")] = value =~ /^".*"$/ ? value : value.inspect
  else
    result[path.join(".")] = value.to_s.inspect
  end
  result
end