Sha256: 5f4c8dad2b150f88899285b5a94dd282a4b3de2c7718e674f1b7b017fcc64721

Contents?: true

Size: 763 Bytes

Versions: 18

Compression:

Stored size: 763 Bytes

Contents

require "forwardable"

module Bundleup
  class Report
    extend Forwardable
    def_delegators :rows, :empty?, :one?

    def many?
      rows.length > 1
    end

    def to_s
      [
        title,
        tableize(rows).map { |row| row.join(" ").rstrip }.join("\n"),
        ""
      ].join("\n\n")
    end

    private

    def tableize(rows)
      widths = max_length_of_each_column(rows)
      rows.map do |row|
        row.zip(widths).map do |value, width|
          padding = " " * (width - Colors.strip(value).length)
          "#{value}#{padding}"
        end
      end
    end

    def max_length_of_each_column(rows)
      Array.new(rows.first.count) do |i|
        rows.map { |values| Colors.strip(values[i]).length }.max
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
bundleup-2.5.2 lib/bundleup/report.rb
bundleup-2.5.1 lib/bundleup/report.rb
bundleup-2.5.0 lib/bundleup/report.rb
bundleup-2.4.2 lib/bundleup/report.rb
bundleup-2.4.1 lib/bundleup/report.rb
bundleup-2.4.0 lib/bundleup/report.rb
bundleup-2.3.0 lib/bundleup/report.rb
bundleup-2.2.6 lib/bundleup/report.rb
bundleup-2.2.5 lib/bundleup/report.rb
bundleup-2.2.4 lib/bundleup/report.rb
bundleup-2.2.3 lib/bundleup/report.rb
bundleup-2.2.2 lib/bundleup/report.rb
bundleup-2.2.1 lib/bundleup/report.rb
bundleup-2.2.0 lib/bundleup/report.rb
bundleup-2.1.3 lib/bundleup/report.rb
bundleup-2.1.2 lib/bundleup/report.rb
bundleup-2.1.1 lib/bundleup/report.rb
bundleup-2.1.0 lib/bundleup/report.rb