class Jekyll::LiquidRenderer::Table

def data_for_table(n)

def data_for_table(n)
  sorted = @stats.sort_by { |_, file_stats| -file_stats[:time] }
  sorted = sorted.slice(0, n)
  table = [%w(Filename Count Bytes Time)]
  sorted.each do |filename, file_stats|
    row = []
    row << filename
    row << file_stats[:count].to_s
    row << format_bytes(file_stats[:bytes])
    row << format("%.3f", file_stats[:time])
    table << row
  end
  table
end

def format_bytes(bytes)

def format_bytes(bytes)
  bytes /= 1024.0
  format("%.2fK", bytes)
end

def generate_row(row_data, widths)

def generate_row(row_data, widths)
  str = String.new("")
  row_data.each_with_index do |cell_data, cell_index|
    str << if cell_index.zero?
             cell_data.ljust(widths[cell_index], " ")
           else
             cell_data.rjust(widths[cell_index], " ")
           end
    str << " | " unless cell_index == row_data.length - 1
  end
  str << "\n"
  str
end

def generate_table(data, widths)

def generate_table(data, widths)
  str = String.new("\n")
  table_head = data.shift
  str << generate_row(table_head, widths)
  str << generate_table_head_border(table_head, widths)
  data.each do |row_data|
    str << generate_row(row_data, widths)
  end
  str << "\n"
  str
end

def generate_table_head_border(row_data, widths)

def generate_table_head_border(row_data, widths)
  str = String.new("")
  row_data.each_index do |cell_index|
    str << "-" * widths[cell_index]
    str << "-+-" unless cell_index == row_data.length - 1
  end
  str << "\n"
  str
end

def initialize(stats)

def initialize(stats)
  @stats = stats
end

def table_widths(data)

def table_widths(data)
  widths = []
  data.each do |row|
    row.each_with_index do |cell, index|
      widths[index] = [ cell.length, widths[index] ].compact.max
    end
  end
  widths
end

def to_s(n = 50)

def to_s(n = 50)
  data = data_for_table(n)
  widths = table_widths(data)
  generate_table(data, widths)
end