# File lib/faster_csv.rb, line 970
  def <<( row )
    # handle FasterCSV::Row objects
    row = row.fields if row.is_a? self.class::Row
    
    @io << row.map do |field|
      if field.nil?  # reverse +nil+ fields as empty unquoted fields
        ""
      else
        field = String(field)  # Stringify fields
        # reverse empty fields as empty quoted fields
        if field.empty? or field.count(%Q{\r\n#{@col_sep}"}).nonzero?
          %Q{"#{field.gsub('"', '""')}"}  # escape quoted fields
        else
          field  # unquoted field
        end
      end
    end.join(@col_sep) + @row_sep  # add separators
    
    self  # for chaining
  end