rf-web/vendor/bundle/gems/terminal-table-1.8.0/lib/terminal-table/row.rb

53 lines
1.0 KiB
Ruby
Raw Normal View History

2019-10-21 08:18:17 +00:00
module Terminal
class Table
class Row
##
# Row cells
attr_reader :cells
attr_reader :table
##
# Initialize with _width_ and _options_.
def initialize table, array = []
@cell_index = 0
@table = table
@cells = []
array.each { |item| self << item }
end
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
alias << add_cell
def [] index
cells[index]
end
def height
cells.map { |c| c.lines.count }.max || 0
end
def render
y = @table.style.border_y
(0...height).to_a.map do |line|
y + cells.map do |cell|
cell.render(line)
end.join(y) + y
end.join("\n")
end
def number_of_columns
@cells.collect(&:colspan).inject(0, &:+)
end
end
end
end