Sha256: 7d908f915fe95e63ec9bb12605fe5846e60a72d725f2b95d918c7af981ffa615

Contents?: true

Size: 1.94 KB

Versions: 12

Compression:

Stored size: 1.94 KB

Contents

module Jekyll
  class LiquidRenderer::Table
    def initialize(stats)
      @stats = stats
    end

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

    private

    def generate_table(data, widths)
      str = "\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)
      str = ""

      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 generate_row(row_data, widths)
      str = ''

      row_data.each_with_index do |cell_data, cell_index|
        if cell_index == 0
          str << cell_data.ljust(widths[cell_index], ' ')
        else
          str << cell_data.rjust(widths[cell_index], ' ')
        end

        str << ' | ' unless cell_index == row_data.length-1
      end

      str << "\n"
      str
    end

    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 data_for_table(n)
      sorted = @stats.sort_by{ |filename, file_stats| -file_stats[:time] }
      sorted = sorted.slice(0, n)

      table = [[ '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 << "%.3f" % file_stats[:time]
        table << row
      end

      table
    end

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

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
jekyll-3.0.5 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.4 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.3 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.2 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.0.pre.beta1 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.1 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.0 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.0.pre.rc1 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.0.pre.beta10 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.0.pre.beta9 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.0.pre.beta8 lib/jekyll/liquid_renderer/table.rb
jekyll-3.0.0.pre.beta7 lib/jekyll/liquid_renderer/table.rb