class Terminal::Table::Row

def [] index

def [] index
  cells[index]
end

def add_cell item

def add_cell item
  options = item.is_a?(Hash) ? item : {:value => item}
  cell = Cell.new(options.merge(:index => @cell_index, :table => @table))
  @cell_index += cell.colspan
  @cells << cell
end

def crossings

we only care about "+/T" style crossings.
skip last entry, because it's the right side.
skip 0 entry, because it's the left side.

if colspan is always 1, then the list should be incrementing by 1.
in cases where the colspan > 1, then we will skip over some numbers
used to find indices where we have table '+' crossings.
def crossings
  idx = 0
  @cells[0...-1].map { |c| idx += c.colspan } 
end

def height

def height
  cells.map { |c| c.lines.count }.max || 0
end

def initialize table, array = [], **_kwargs

def initialize table, array = [], **_kwargs
  @cell_index = 0
  @table = table
  @cells = []
  array.each { |item| self << item }
end

def number_of_columns

def number_of_columns
  @cells.collect(&:colspan).inject(0, &:+)
end

def render

def render
  vleft, vcenter, vright = @table.style.vertical
  (0...height).to_a.map do |line|
    vleft + cells.map do |cell|
      cell.render(line)
    end.join(vcenter) + vright
  end.join("\n")
end