# File lib/asciidoctor/table.rb, line 318
  def initialize(reader, table, attributes = {})
    @reader = reader
    @table = table
    # TODO if reader.cursor becomes a reference, this would require .dup
    @last_cursor = reader.cursor
    if (@format = attributes['format'])
      unless Table::DATA_FORMATS.include? @format
        raise %(Illegal table format: #{@format})
      end
    else
      @format = Table::DEFAULT_DATA_FORMAT
    end

    @delimiter = if @format == 'psv' && !(attributes.key? 'separator') && table.document.nested?
      '!'
    else
      attributes['separator'] || Table::DEFAULT_DELIMITERS[@format]
    end
    @delimiter_re = /#{Regexp.escape @delimiter}/
    @col_count = table.columns.empty? ? -1 : table.columns.size
    @buffer = ''
    @cell_specs = []
    @cell_open = false
    @active_rowspans = [0]
    @col_visits = 0
    @current_row = []
    @linenum = -1
  end