class Terminal::Table
def render
def render buffer = seperator << "\n" if has_headings? buffer << Y + headings.map_with_index do |heading, i| width = 0 if heading.is_a?(Hash) and !heading[:colspan].nil? i.upto(i + heading[:colspan] - 1) do |col| width += length_of_column(col) end width += (heading[:colspan] - 1) * (Y.length + 2) else width = length_of_column(i) end Heading.new( width, heading).render end.join(Y) + Y buffer << "\n#{seperator}\n" end buffer << rows.map do |row| Y + row.map_with_index do |cell, i| width = 0 if cell.is_a?(Hash) and !cell[:colspan].nil? i.upto(i + cell[:colspan] - 1) do |col| width += length_of_column(col) end width += (cell[:colspan] - 1) * (Y.length + 2) else width = length_of_column(i) end Cell.new(width, cell).render end.join(Y) + Y end.join("\n") buffer << "\n#{seperator}\n" end