class Vernier::Output::Top::Table
def <<(row)
def <<(row) @rows << row end
def format_row(row)
def format_row(row) "|" + row.map.with_index { |str, i| " " + str.ljust(widths[i] + 1) }.join("|") + "|" end
def initialize(header)
def initialize(header) @header = header @rows = [] yield self end
def row_separator
def row_separator @row_separator = "+" + widths.map { |i| "-" * (i + 2) }.join("+") + "+" end
def to_s
def to_s ( [ row_separator, format_row(@header), row_separator ] + @rows.map do |row| format_row(row) end + [row_separator] ).join("\n") end
def widths
def widths @widths ||= (@rows + [@header]).transpose.map do |col| col.map(&:size).max end end