class Table
Public Class Methods
new(header, rows)
click to toggle source
# File lib/table.rb, line 2 def initialize(header, rows) @header = header @rows = rows @column_sizes = calculate_column_sizes end
Public Instance Methods
to_s()
click to toggle source
# File lib/table.rb, line 8 def to_s lines = [ separator_line, header_line, separator_line, @rows.map { |r| row_line(r) }, separator_line, ] lines .flatten .reject { |line| line.empty? } .join("\n") end
Private Instance Methods
calculate_column_sizes()
click to toggle source
# File lib/table.rb, line 25 def calculate_column_sizes all = [@header] + @rows result = all.transpose.map do |row| lengths = row.map { |r| r.length } lengths.max + 2 end result end
header_line()
click to toggle source
# File lib/table.rb, line 39 def header_line columns = @header.each_with_index.map do |column, index| column_size = @column_sizes[index] - 1 " %-#{column_size}.#{column_size}s" % column end "|" + columns.join("|") + "|" end
row_line(row)
click to toggle source
# File lib/table.rb, line 47 def row_line(row) columns = row.each_with_index.map do |column, index| column_size = @column_sizes[index] - 1 if index == 0 " %-#{column_size}.#{column_size}s" % column else "%#{column_size}.#{column_size}s " % column end end "|" + columns.join("|") + "|" end
separator_line()
click to toggle source
# File lib/table.rb, line 34 def separator_line dashes = @column_sizes.map { |size| "-" * size } "+" + dashes.join("+") + "+" end