Sha256: c437df03c50acc436cf6e8c31c1736be5d0b596517b83ca4e6256ae06d4f9e89

Contents?: true

Size: 1.93 KB

Versions: 16

Compression:

Stored size: 1.93 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 { |_, 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 << "%.3f" % file_stats[:time]
        table << row
      end

      table
    end

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

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
blackboard-3.1.9 lib/jekyll/liquid_renderer/table.rb
blackboard-3.1.8 lib/jekyll/liquid_renderer/table.rb
blackboard-3.1.7 lib/jekyll/liquid_renderer/table.rb
jekyll-3.2.0.pre.beta1 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.6 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.5 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.4 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.3 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.2 lib/jekyll/liquid_renderer/table.rb
jekyllplusadmin-1.1.0 lib/jekyll/liquid_renderer/table.rb
jekyllplusadmin-1.0.0 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.1 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.0 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.0.pre.rc3 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.0.pre.rc2 lib/jekyll/liquid_renderer/table.rb
jekyll-3.1.0.pre.rc1 lib/jekyll/liquid_renderer/table.rb