csv-parse
Advanced tools
Comparing version 4.8.9 to 4.9.0
@@ -13,2 +13,7 @@ | ||
## Version 4.9.0 | ||
New Feature: | ||
* delimiter: accept multiple values | ||
## Version 4.8.9 | ||
@@ -15,0 +20,0 @@ |
@@ -150,11 +150,25 @@ "use strict"; | ||
if (options.delimiter === undefined || options.delimiter === null || options.delimiter === false) { | ||
options.delimiter = Buffer.from(','); | ||
} else if (typeof options.delimiter === 'string' && options.delimiter.length !== 0) { | ||
options.delimiter = Buffer.from(options.delimiter); | ||
} else if (Buffer.isBuffer(options.delimiter) && options.delimiter.length === 0 || typeof options.delimiter === 'string' && options.delimiter.length === 0 || !Buffer.isBuffer(options.delimiter) && typeof options.delimiter !== 'string') { | ||
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', ['Invalid option delimiter:', 'delimiter must be a non empty string or buffer,', "got ".concat(JSON.stringify(options.delimiter))]); | ||
} // Normalize option `escape` | ||
var delimiter_json = JSON.stringify(options.delimiter); | ||
if (!Array.isArray(options.delimiter)) options.delimiter = [options.delimiter]; | ||
if (options.delimiter.length === 0) { | ||
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', ['Invalid option delimiter:', 'delimiter must be a non empty string or buffer or array of string|buffer,', "got ".concat(delimiter_json)]); | ||
} | ||
options.delimiter = options.delimiter.map(function (delimiter) { | ||
if (delimiter === undefined || delimiter === null || delimiter === false) { | ||
return Buffer.from(','); | ||
} | ||
if (typeof delimiter === 'string') { | ||
delimiter = Buffer.from(delimiter); | ||
} | ||
if (!Buffer.isBuffer(delimiter) || delimiter.length === 0) { | ||
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', ['Invalid option delimiter:', 'delimiter must be a non empty string or buffer or array of string|buffer,', "got ".concat(delimiter_json)]); | ||
} | ||
return delimiter; | ||
}); // Normalize option `escape` | ||
if (options.escape === undefined || options.escape === null) { | ||
@@ -1122,10 +1136,16 @@ options.escape = Buffer.from('"'); | ||
var delimiter = this.options.delimiter; | ||
var delLength = delimiter.length; | ||
if (delimiter[0] !== chr) return 0; | ||
for (var i = 1; i < delLength; i++) { | ||
if (delimiter[i] !== buf[pos + i]) return 0; | ||
loop1: for (var i = 0; i < delimiter.length; i++) { | ||
var del = delimiter[i]; | ||
if (del[0] === chr) { | ||
for (var j = 1; j < del.length; j++) { | ||
if (del[j] !== buf[pos + j]) continue loop1; | ||
} | ||
return del.length; | ||
} | ||
} | ||
return delimiter.length; | ||
return 0; | ||
} | ||
@@ -1132,0 +1152,0 @@ }, { |
@@ -98,17 +98,27 @@ | ||
// Normalize option `delimiter` | ||
if(options.delimiter === undefined || options.delimiter === null || options.delimiter === false){ | ||
options.delimiter = Buffer.from(',') | ||
}else if(typeof options.delimiter === 'string' && options.delimiter.length !== 0){ | ||
options.delimiter = Buffer.from(options.delimiter) | ||
}else if( | ||
(Buffer.isBuffer(options.delimiter) && options.delimiter.length === 0) || | ||
(typeof options.delimiter === 'string' && options.delimiter.length === 0) || | ||
(!Buffer.isBuffer(options.delimiter) && typeof options.delimiter !== 'string') | ||
){ | ||
const delimiter_json = JSON.stringify(options.delimiter) | ||
if(!Array.isArray(options.delimiter)) options.delimiter = [options.delimiter] | ||
if(options.delimiter.length === 0){ | ||
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [ | ||
'Invalid option delimiter:', | ||
'delimiter must be a non empty string or buffer,', | ||
`got ${JSON.stringify(options.delimiter)}` | ||
'delimiter must be a non empty string or buffer or array of string|buffer,', | ||
`got ${delimiter_json}` | ||
]) | ||
} | ||
options.delimiter = options.delimiter.map(function(delimiter){ | ||
if(delimiter === undefined || delimiter === null || delimiter === false){ | ||
return Buffer.from(',') | ||
} | ||
if(typeof delimiter === 'string'){ | ||
delimiter = Buffer.from(delimiter) | ||
} | ||
if( !Buffer.isBuffer(delimiter) || delimiter.length === 0){ | ||
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [ | ||
'Invalid option delimiter:', | ||
'delimiter must be a non empty string or buffer or array of string|buffer,', | ||
`got ${delimiter_json}` | ||
]) | ||
} | ||
return delimiter | ||
}) | ||
// Normalize option `escape` | ||
@@ -927,8 +937,12 @@ if(options.escape === undefined || options.escape === null){ | ||
const {delimiter} = this.options | ||
const delLength = delimiter.length | ||
if(delimiter[0] !== chr) return 0 | ||
for(let i = 1; i < delLength; i++){ | ||
if(delimiter[i] !== buf[pos+i]) return 0 | ||
loop1: for(let i = 0; i < delimiter.length; i++){ | ||
const del = delimiter[i] | ||
if(del[0] === chr){ | ||
for(let j = 1; j < del.length; j++){ | ||
if(del[j] !== buf[pos+j]) continue loop1 | ||
} | ||
return del.length | ||
} | ||
} | ||
return delimiter.length | ||
return 0 | ||
} | ||
@@ -935,0 +949,0 @@ __isRecordDelimiter(chr, buf, pos){ |
{ | ||
"version": "4.8.9", | ||
"version": "4.9.0", | ||
"name": "csv-parse", | ||
@@ -4,0 +4,0 @@ "description": "CSV parsing implementing the Node.js `stream.Transform` API", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
147194
2764