class TabularFormatter

Public Class Methods

new(input_data, options = {}) click to toggle source
# File lib/tabular_formatter.rb, line 6
def initialize input_data, options = {}
  @input_data = input_data
  @options = options
  @options[:headers] = true if @options[:headers].nil?
end

Public Instance Methods

to_csv(col_sep = ',') click to toggle source
# File lib/tabular_formatter.rb, line 12
def to_csv(col_sep = ',')
  CSV.generate(col_sep: col_sep) do |csv|
    @input_data.each { |row| csv << row }
  end
end
to_pretty_table() click to toggle source
# File lib/tabular_formatter.rb, line 22
def to_pretty_table
  return '' if @input_data.blank? or @input_data.first.empty?

  max_column_lengths = Array.new(@input_data.first.length, 0)
  @input_data.each do |row|
    row.each_with_index do |cell, index|
      max_column_lengths[index] = [cell.to_s.length, max_column_lengths[index]].max
    end
  end

  output = []
  @input_data.each do |row|
    output << print_table_row(max_column_lengths, row)
  end

  divider = max_column_lengths.inject("") do |str, l|
    str << "-#{'-' * l}-+"
  end.chomp!("+")
  divider = divider[1..-1]
  output.insert(1, divider)
  output.join("\n").concat("\n")
end
to_tsv() click to toggle source
# File lib/tabular_formatter.rb, line 18
def to_tsv
  to_csv("\t")
end

Private Instance Methods

print_table_row(column_lengths, row) click to toggle source