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