Class: TabularFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/tabular_formatter.rb

Instance Method Summary collapse

Constructor Details

#initialize(input_data, options = {}) ⇒ TabularFormatter

Returns a new instance of TabularFormatter.



6
7
8
9
10
# 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

Instance Method Details

#to_csv(col_sep = ',') ⇒ Object



12
13
14
15
16
# 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_tableObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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_tsvObject



18
19
20
# File 'lib/tabular_formatter.rb', line 18

def to_tsv
  to_csv("\t")
end