docs: function TableInputStream(args)
  {
  	mod_assert.object(args);
  	mod_assert.object(args.stream);
  
  	mod_assert.optionalString(args.format);
  	if (args.format) {
  		mod_assert.ok(args.format == 'array' ||
  		    args.format == 'object');
  	}
  
  	if (args.columns)
  		this.tis_cols = args.columns.slice(0);
  
  	this.tis_notrim = args.noTrimStart || false;
  	this.tis_stream = args.stream;
  	this.tis_encoding = args.encoding || 'utf8';
  	this.tis_colsep = args.columnSeparator;
  	if (!this.tis_colsep)
  		this.tis_colsep = /\s+/;
  
  	if (!(this.tis_colsep instanceof RegExp))
  		this.tis_colsep = new RegExp(this.tis_colsep);
  
  	this.tis_rowsep = args.rowSeparator || '\n';
  	this.tis_format = args.format || 'object';
  	this.tis_carrier = mod_carrier.carry(this.tis_stream,
  	    this.onLine.bind(this), this.tis_encoding, this.tis_rowsep);
  
  	this.tis_stream.on('close', this.emit.bind(this));
  	this.tis_stream.on('end', this.emit.bind(this));
  	this.tis_stream.on('error', this.emit.bind(this));
  
  	mod_events.EventEmitter();
  }