diff --git a/packages/basics/src/csv-string.js b/packages/basics/src/csv-string.js index a56fa5d8..b5f7a901 100644 --- a/packages/basics/src/csv-string.js +++ b/packages/basics/src/csv-string.js @@ -1,14 +1,17 @@ import CSV from 'csv-string'; +const isNullOrUndefined = (value) => (value === undefined || value === null); + function strict(data, sep) { const q = new RegExp('"', 'g'); let line = ''; let s = ''; Object.keys(data).forEach((key) => { + const cell = isNullOrUndefined(data[key]) ? '' : data[key]; line = line.concat( s .concat('"') - .concat(String(data[key]).replace(q, '""')) + .concat(String(cell).replace(q, '""')) .concat('"'), ); s = sep; diff --git a/packages/basics/test/basics.js b/packages/basics/test/basics.js index f63bc9e3..b4adcbf7 100644 --- a/packages/basics/test/basics.js +++ b/packages/basics/test/basics.js @@ -107,7 +107,7 @@ describe('test', () => { from([ ['a', 'b', 'c'], [1, 2, 3], - [4, undefined, 6], + [null, undefined, ''], ]) .pipe(ezs('CSVObject')) .pipe(ezs('CSVString', { format: 'strict' })) @@ -115,8 +115,11 @@ describe('test', () => { res.push(chunk); }) .on('end', () => { + console.log(res); assert.equal(3, res.length); assert.equal('"a";"b";"c"\r\n', res[0]); + assert.equal('"1";"2";"3"\r\n', res[1]); + assert.equal('"";"";""\r\n', res[2]); done(); }); });