class RailsIdle::Report
Constants
- CALCULATED_KEY
- COUNTER_KEY
Public Class Methods
new(collector)
click to toggle source
# File lib/rails-idle/report.rb, line 6 def initialize(collector) @tree = TreeBuilder.new(collector).tree end
Public Instance Methods
prepare()
click to toggle source
# File lib/rails-idle/report.rb, line 10 def prepare calc_counter!(@tree) #sort!(@obj) @tree end
Private Instance Methods
calc_counter!(obj)
click to toggle source
# File lib/rails-idle/report.rb, line 18 def calc_counter!(obj) return obj[COUNTER_KEY] if obj[COUNTER_KEY].is_a?(Fixnum) return obj[CALCULATED_KEY] if obj[CALCULATED_KEY].is_a?(Fixnum) obj[CALCULATED_KEY] = obj.inject(0) do |sum, (key, nested_obj)| sum + (key.is_a?(Symbol) ? 0 : calc_counter!(nested_obj)) end obj[CALCULATED_KEY] end
sort!(obj)
click to toggle source
# File lib/rails-idle/report.rb, line 27 def sort!(obj) obj.each do |k, v| obj[k] = sort!(v) if v.is_a?(Hash) end obj.sort_by do |k, v| if v.is_a?(Hash) v[CALCULATED_KEY] || v[COUNTER_KEY] || 0 else Float::INFINITY end end.to_h end