- def initialize_result_hash(metrics) result = {
'stats.count' => @stats['stats.count']
'kvcount' => {},
'sum.stats' => {},
'raw.stats' => {},
'avg.stats' => {},
'max.stats' => {},
}'min.stats' => {}
- def compact_hash(prefix, result)
It looks a bit over complex to use this function. I'd iterate keys in result (eg. sum.stats) and output each one's values with sum.stats. prefix added.
- result.each do |key, value|
if prefix.empty?
prefix_key = "#{key}"
else
prefix_key = "#{prefix}.#{key}"
end
if value.is_a? Hash
compact_hash(prefix_key, value)
else
@results[prefix_key] = value
end
- end
- end
- def output
- @result = query_jobs_state(@jobs.values)
- @result['kvcount'] = @result['kvcount'].to_a.sort.to_h
- @results = {}
- compact_hash('', @result)
How do you output array in one single line?
This looks a bit tricky and need some comment:
- yaml = @results.to_yaml.delete_prefix!("---\n")
- puts yaml.gsub('nil', 'null').gsub('"---', '').gsub('---"', '')
end end -- 2.23.0