Sha256: b7b71c96719adc0162793bf7cb14a8b94f7752a9f8d31b26496f0a8c7e14c90b

Contents?: true

Size: 825 Bytes

Versions: 10

Compression:

Stored size: 825 Bytes

Contents

# frozen_string_literal: true

require "tty-screen"
require "tty-table"
require "tty-box"
require "erb"

module GitFame
  class Render < Base
    FIELDS = [:name, :email, :lines, :commits, :files, :dist].map(&:to_s).freeze

    attribute :branch, Types::String
    attribute :result, Result
    delegate_missing_to :result

    using Extension

    # Renders to stdout
    #
    # @return [void]
    def call
      table = TTY::Table.new(header: FIELDS)
      width = TTY::Screen.width

      contributions.reverse_each do |c|
        table << [c.name, c.email, c.lines.f, c.commits.count.f, c.files.count.f, c.dist(self)]
      end

      print table.render(:unicode, width: width, resize: true, alignment: [:center])
    end

    private

    def contributions
      result.contributions.sort_by(&:lines)
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
git_fame-3.2.7 lib/git_fame/render.rb
git_fame-3.2.5 lib/git_fame/render.rb
git_fame-3.2.2 lib/git_fame/render.rb
git_fame-3.2.1 lib/git_fame/render.rb
git_fame-3.1.1 lib/git_fame/render.rb
git_fame-3.1.0 lib/git_fame/render.rb
git_fame-3.0.3 lib/git_fame/render.rb
git_fame-3.0.2 lib/git_fame/render.rb
git_fame-3.0.1 lib/git_fame/render.rb
git_fame-3.0.0 lib/git_fame/render.rb