class McDump::Report

Public Class Methods

new(items) click to toggle source
# File lib/mc_dump/report.rb, line 5
def initialize(items)
  @items = items
end

Public Instance Methods

dump(io=$stdout) click to toggle source
# File lib/mc_dump/report.rb, line 9
def dump(io=$stdout)
  column_size_metadata = determine_column_size_metadata
  column_names         = column_size_metadata.keys
  line_format = "|#{column_names.map { |name| " %#{column_size_metadata[name]}s " }.join("|")}|"
  io.puts line_format % column_names
  @items.each { |item| io.puts line_format % item.to_h.values_at(*column_names) }
end

Private Instance Methods

determine_column_size_metadata() click to toggle source
# File lib/mc_dump/report.rb, line 19
def determine_column_size_metadata
  @items.reduce({}) do |size_metadata, item|
    item.to_h.each do |data_key, data_value|
      size_metadata[data_key] ||= data_key.to_s.length
      size_metadata[data_key]   = [ data_value.to_s.length, size_metadata[data_key] ].max
    end
    size_metadata
  end
end