class TestProf::MemoryProf::Printer

def initialize(tracker)

def initialize(tracker)
  @tracker = tracker
end

def memory_percentage(item)

def memory_percentage(item)
  return 0 if tracker.total_memory.zero? || item[:memory].zero?
  (100.0 * item[:memory] / tracker.total_memory).round(2)
end

def number_to_human(value)

def number_to_human(value)
  NumberToHuman.convert(value)
end

def print

def print
  messages = [
    "MemoryProf results\n\n",
    print_total,
    print_block("groups", tracker.groups),
    print_block("examples", tracker.examples)
  ]
  log :info, messages.join
end

def print_block(name, items)

def print_block(name, items)
  return if items.empty?
  <<~GROUP
    Top #{tracker.top_count} #{name} (by #{mode}):
    #{print_items(items)}
  GROUP
end

def print_items(items)

def print_items(items)
  messages =
    items.map do |item|
      <<~ITEM
        #{item[:name].truncate(30)} (#{item[:location]}) – +#{memory_amount(item)} (#{memory_percentage(item)}%)
      ITEM
    end
  messages.join
end