class Terminal::Table::Row

Attributes

cells[R]

Row cells

table[R]

Public Class Methods

new(table, array = [], **_kwargs) click to toggle source

Initialize with width and options.

# File lib/terminal-table/row.rb, line 15
def initialize table, array = [], **_kwargs
  @cell_index = 0
  @table = table
  @cells = []
  array.each { |item| self << item }
end

Public Instance Methods

<<(item)
Alias for: add_cell
[](index) click to toggle source
# File lib/terminal-table/row.rb, line 30
def [] index
  cells[index]
end
add_cell(item) click to toggle source
# File lib/terminal-table/row.rb, line 22
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
Also aliased as: <<
crossings() click to toggle source

used to find indices where we have table ‘+’ crossings. in cases where the colspan > 1, then we will skip over some numbers if colspan is always 1, then the list should be incrementing by 1.

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

# File lib/terminal-table/row.rb, line 58
def crossings
  idx = 0
  @cells[0...-1].map { |c| idx += c.colspan } 
end
height() click to toggle source
# File lib/terminal-table/row.rb, line 34
def height
  cells.map { |c| c.lines.count }.max || 0
end
number_of_columns() click to toggle source
# File lib/terminal-table/row.rb, line 47
def number_of_columns
  @cells.collect(&:colspan).inject(0, &:+)
end
render() click to toggle source
# File lib/terminal-table/row.rb, line 38
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