class Object

Public Instance Methods

flatten(record) click to toggle source
# File lib/fluent/plugin/filter_flatten_types.rb, line 50
def flatten(record)
  result = {}
  record.each do |key, value|
      flatten_record(value, result, key)
  end
  return result
end
flatten_record(record, result, thisKey) click to toggle source
# File lib/fluent/plugin/filter_flatten_types.rb, line 19
def flatten_record(record, result, thisKey)
  thisKey = thisKey.gsub('.', '_')
  if record.is_a? Hash
    if record['__str__'] == true
      return flatten_record(record.to_json, result, thisKey)
    end
    subrecord = {}
    result.store(thisKey, subrecord)
    record.each do |key, value|
      flatten_record(value, subrecord, key)
    end
  elsif record.is_a? Array
    subarray = []
    result.store(thisKey + '_a', subarray)
    record.each_with_index do |elem, index|
      subrecord = {}
      subarray.push(subrecord)
      flatten_record(elem, subrecord, 'v')
    end
  elsif !!record == record
    result.store(thisKey + '_b', record)
  elsif record.is_a? String 
    result.store(thisKey + '_s', record)
  elsif record.is_a? Numeric
    result.store(thisKey + '_n', record)
  else
    result.store(thisKey + '_u', record)
  end
  return result
end