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