19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# 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
|