Comparing version 0.0.19 to 0.1.0
@@ -77,8 +77,5 @@ // Module CSV - Copyright David Worms <open@adaltas.com> (BSD Licensed) | ||
if(data instanceof Array){ | ||
if( csv.writeOptions.lineBreaks === null ){ | ||
csv.writeOptions.lineBreaks = "\n"; | ||
} | ||
for(var i=0; i<data.length; i++){ | ||
state.line = data[i]; | ||
flush(); | ||
transform(); | ||
} | ||
@@ -89,3 +86,4 @@ }else{ | ||
}catch(e){ | ||
return self.emit('error', e); | ||
// return self.emit('error', e); | ||
return error(e); | ||
} | ||
@@ -105,8 +103,12 @@ } | ||
}catch(e){ | ||
self.emit('error', e); | ||
// Destroy the input stream | ||
readStream.destroy(); | ||
// self.emit('error', e); | ||
// // Destroy the input stream | ||
// readStream.destroy(); | ||
return error(e); | ||
} | ||
}); | ||
readStream.on('error', function(error) { self.emit('error', error) }); | ||
readStream.on('error', function(e) { | ||
// self.emit('error', error) | ||
error(e) | ||
}); | ||
readStream.on('end', function() { | ||
@@ -138,3 +140,3 @@ self.end(); | ||
state.line = data; | ||
return flush(); | ||
return transform(); | ||
} | ||
@@ -152,3 +154,4 @@ if(state.count === 0 && csv.writeOptions.header === true){ | ||
if (state.quoted) { | ||
return csv.emit('error', new Error('Quoted field not terminated')); | ||
// return csv.emit('error', new Error('Quoted field not terminated')); | ||
return error(new Error('Quoted field not terminated')); | ||
} | ||
@@ -164,3 +167,3 @@ // dump open record | ||
if (state.line.length > 0) { | ||
flush(); | ||
transform(); | ||
} | ||
@@ -240,3 +243,3 @@ if(csv.writeStream){ | ||
* Private state object is enriched on each character until | ||
* flush is called on a new line | ||
* transform is called on a new line | ||
*/ | ||
@@ -317,3 +320,3 @@ function parse(chars){ | ||
state.field = ''; | ||
flush(); | ||
transform(); | ||
break; | ||
@@ -339,4 +342,6 @@ case ' ': | ||
*/ | ||
function flush(){ | ||
function transform(){ | ||
var line; | ||
if(csv.readOptions.columns){ | ||
// Extract column names from the first line | ||
if(state.count === 0 && csv.readOptions.columns === true){ | ||
@@ -348,2 +353,3 @@ csv.readOptions.columns = state.line; | ||
} | ||
// Line stored as an object in which keys are column names | ||
var line = {}; | ||
@@ -357,3 +363,2 @@ for(var i=0; i<csv.readOptions.columns.length; i++){ | ||
} | ||
var line; | ||
if(csv.transformer){ | ||
@@ -403,3 +408,3 @@ transforming = true; | ||
if(typeof line === 'object'){ | ||
if(!(line instanceof Array)){ | ||
if(!Array.isArray(line)){ | ||
var columns = csv.writeOptions.columns || csv.readOptions.columns; | ||
@@ -424,3 +429,3 @@ var _line = []; | ||
} | ||
if(line instanceof Array){ | ||
if(Array.isArray(line)){ | ||
var newLine = state.countWriten ? csv.writeOptions.lineBreaks || "\n" : ''; | ||
@@ -427,0 +432,0 @@ for(var i=0; i<line.length; i++){ |
{ | ||
"name": "csv", | ||
"version": "0.0.19", | ||
"version": "0.1.0", | ||
"description": "CSV parser with simple api, full of options and tested against large datasets.", | ||
@@ -5,0 +5,0 @@ "author": "David Worms <david@adaltas.com>", |
// CSV sample - Copyright David Worms <open@adaltas.com> (BSD Licensed) | ||
// node samples/column.js | ||
var csv = require('..'); | ||
csv() | ||
.fromPath(__dirname+'/columns.in',{ | ||
columns: true | ||
}) | ||
.toStream(process.stdout, { | ||
columns: ['id', 'name'], | ||
end: false | ||
}) | ||
.transform(function(data){ | ||
data.name = data.firstname + ' ' + data.lastname | ||
return data; | ||
}); | ||
// Will print sth like: | ||
// 82,Zbigniew Preisner | ||
// 94,Serge Gainsbourg | ||
// node samples/column.js | ||
var csv = require('..'); | ||
csv() | ||
.fromPath(__dirname+'/columns.in', { | ||
columns: true | ||
}) | ||
.toStream(process.stdout, { | ||
columns: ['id', 'name'], | ||
end: false | ||
}) | ||
.transform(function(data){ | ||
data.name = data.firstname + ' ' + data.lastname | ||
return data; | ||
}); | ||
/* | ||
`node samples/columns.js` | ||
82,Zbigniew Preisner | ||
94,Serge Gainsbourg | ||
*/ |
@@ -13,32 +13,35 @@ // CSV sample - Copyright jon seymour jon.seymour@gmail.com | ||
var csv = require('..'); | ||
var header; | ||
var csv = require('..'); | ||
var header; | ||
process.stdin.resume(); | ||
csv() | ||
.fromStream(process.stdin) | ||
.toStream(process.stdout, {end: false}) | ||
.transform(function(data){ | ||
if (header) { | ||
this.write(header); | ||
} else { | ||
header=data; | ||
return null; | ||
} | ||
return data; | ||
}) | ||
.on('end',function(error){ | ||
process.stdout.write("\n"); | ||
}) | ||
.on('error',function(error){ | ||
console.log(error.message); | ||
}); | ||
process.stdin.resume(); | ||
// | ||
// expected output | ||
// | ||
//ts,year,ms,chars,age,date | ||
//20322051544,1979.0,8.8017226E7,ABC,45,2000-01-01 | ||
//ts,year,ms,chars,age,date | ||
//28392898392,1974.0,8.8392926E7,DEF,23,2050-11-27 | ||
csv() | ||
.fromStream(process.stdin) | ||
.toStream(process.stdout, {end: false}) | ||
.transform(function(data){ | ||
if (header) { | ||
this.write(header); | ||
} else { | ||
header=data; | ||
return null; | ||
} | ||
return data; | ||
}) | ||
.on('end',function(error){ | ||
process.stdout.write("\n"); | ||
}) | ||
.on('error',function(error){ | ||
console.log(error.message); | ||
}); | ||
/* | ||
`node samples/duplicate-header.js` | ||
ts,year,ms,chars,age,date | ||
20322051544,1979.0,8.8017226E7,ABC,45,2000-01-01 | ||
ts,year,ms,chars,age,date | ||
28392898392,1974.0,8.8392926E7,DEF,23,2050-11-27 | ||
*/ |
// CSV sample - Copyright David Worms <open@adaltas.com> (BSD Licensed) | ||
// node samples/column.js | ||
var csv = require('..'); | ||
csv() | ||
.fromPath(__dirname+'/columns.in',{ | ||
columns: true | ||
}) | ||
.toStream(process.stdout, { | ||
newColumns: true, | ||
end: false | ||
}) | ||
.transform(function(data){ | ||
data.name = data.firstname + ' ' + data.lastname | ||
return data; | ||
}); | ||
// Will print sth like: | ||
// 82,Preisner,Zbigniew,Zbigniew Preisner | ||
// 94,Gainsbourg,Serge,Serge Gainsbourg | ||
// node samples/column.js | ||
var csv = require('..'); | ||
csv() | ||
.fromPath(__dirname+'/columns.in',{ | ||
columns: true | ||
}) | ||
.toStream(process.stdout, { | ||
newColumns: true, | ||
end: false | ||
}) | ||
.transform(function(data){ | ||
data.name = data.firstname + ' ' + data.lastname | ||
return data; | ||
}); | ||
/* | ||
`node samples/new-columns.js` | ||
82,Preisner,Zbigniew,Zbigniew Preisner | ||
94,Gainsbourg,Serge,Serge Gainsbourg | ||
*/ |
// CSV sample - Copyright David Worms <open@adaltas.com> (BSD Licensed) | ||
// cat samples/sample.in | node samples/sample-stdin.js | ||
var csv = require('..'); | ||
process.stdin.resume(); | ||
csv() | ||
.fromStream(process.stdin) | ||
.toPath(__dirname+'/sample.out') | ||
.transform(function(data){ | ||
data.unshift(data.pop()); | ||
return data; | ||
}) | ||
.on('data',function(data,index){ | ||
console.log('#'+index+' '+JSON.stringify(data)); | ||
}) | ||
.on('end',function(count){ | ||
console.log('Number of lines: '+count); | ||
}) | ||
.on('error',function(error){ | ||
console.log(error.message); | ||
}); | ||
// Print sth like: | ||
// #0 ["2000-01-01","20322051544","1979.0","8.8017226E7","ABC","45"] | ||
// #1 ["2050-11-27","28392898392","1974.0","8.8392926E7","DEF","23"] | ||
// Number of lines: 2 | ||
var csv = require('..'); | ||
process.stdin.resume(); | ||
csv() | ||
.fromStream(process.stdin) | ||
.toPath(__dirname+'/sample.out') | ||
.transform(function(data){ | ||
data.unshift(data.pop()); | ||
return data; | ||
}) | ||
.on('data',function(data,index){ | ||
console.log('#'+index+' '+JSON.stringify(data)); | ||
}) | ||
.on('end',function(count){ | ||
console.log('Number of lines: '+count); | ||
}) | ||
.on('error',function(error){ | ||
console.log(error.message); | ||
}); | ||
/* | ||
`cat samples/sample.in | node samples/sample-stdin.js` | ||
#0 ["2000-01-01","20322051544","1979.0","8.8017226E7","ABC","45"] | ||
#1 ["2050-11-27","28392898392","1974.0","8.8392926E7","DEF","23"] | ||
Number of lines: 2 | ||
*/ |
@@ -9,3 +9,12 @@ var csv = require('..'); | ||
csv() | ||
.from(arr) | ||
.toStream(process.stdout, {end: false}); //thows on csv.js line 150 | ||
.from(arr) | ||
.toStream(process.stdout, {end: false}); //thows on csv.js line 150 | ||
/* | ||
`node samples/sample-stdout.js` | ||
1,2,3,4,5 | ||
2,4,6,8,10 | ||
*/ |
// CSV sample - Copyright David Worms <open@adaltas.com> (BSD Licensed) | ||
// node samples/sample.js | ||
var csv = require('csv'); | ||
csv() | ||
.fromPath(__dirname+'/sample.in') | ||
.toPath(__dirname+'/sample.out') | ||
.transform(function(data){ | ||
data.unshift(data.pop()); | ||
return data; | ||
}) | ||
.on('data',function(data,index){ | ||
console.log('#'+index+' '+JSON.stringify(data)); | ||
}) | ||
.on('end',function(count){ | ||
console.log('Number of lines: '+count); | ||
}) | ||
.on('error',function(error){ | ||
console.log(error.message); | ||
}); | ||
// Print sth like: | ||
// #0 ["2000-01-01","20322051544","1979.0","8.8017226E7","ABC","45"] | ||
// #1 ["2050-11-27","28392898392","1974.0","8.8392926E7","DEF","23"] | ||
// Number of lines: 2 | ||
var csv = require('..'); | ||
csv() | ||
.fromPath(__dirname+'/sample.in') | ||
.toPath(__dirname+'/sample.out') | ||
.transform(function(data){ | ||
data.unshift(data.pop()); | ||
return data; | ||
}) | ||
.on('data',function(data,index){ | ||
console.log('#'+index+' '+JSON.stringify(data)); | ||
}) | ||
.on('end',function(count){ | ||
console.log('Number of lines: '+count); | ||
}) | ||
.on('error',function(error){ | ||
console.log(error.message); | ||
}); | ||
/* | ||
`node samples/sample.js` | ||
#0 ["2000-01-01","20322051544","1979.0","8.8017226E7","ABC","45"] | ||
#1 ["2050-11-27","28392898392","1974.0","8.8392926E7","DEF","23"] | ||
Number of lines: 2 | ||
*/ |
// CSV sample - Copyright David Worms <open@adaltas.com> (BSD Licensed) | ||
// node samples/transform.js | ||
var csv = require('csv'); | ||
csv() | ||
.fromPath(__dirname+'/transform.in') | ||
.toStream(process.stdout) | ||
.transform(function(data,index){ | ||
return (index>0 ? ',' : '') + data[0] + ":" + data[2] + ' ' + data[1]; | ||
}); | ||
// Print sth like: | ||
// 82:Zbigniew Preisner,94:Serge Gainsbourg | ||
// node samples/transform.js | ||
var csv = require('..'); | ||
csv() | ||
.fromPath(__dirname+'/transform.in') | ||
.toStream(process.stdout) | ||
.transform(function(data,index){ | ||
return (index>0 ? ',' : '') + data[0] + ":" + data[2] + ' ' + data[1]; | ||
}); | ||
/* | ||
`node samples/transform.js` | ||
82:Zbigniew Preisner,94:Serge Gainsbourg | ||
*/ |
Sorry, the diff of this file is not supported yet
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
610
101300