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
# File lib/tabular_formatter.rb, line 47 def print_table_row column_lengths, row row_string = '' row.each_with_index do |cell, index| padding = column_lengths[index] - cell.to_s.length row_string << " #{cell}#{' ' * padding} |" end row_string.chomp!("|") row_string.strip! end