enable input of entire pnp csv file
This commit is contained in:
parent
87a00b0ef9
commit
817ef57379
4 changed files with 72 additions and 29 deletions
67
index.js
67
index.js
|
@ -4,26 +4,66 @@ var fs = require("fs");
|
||||||
var through = require("through2");
|
var through = require("through2");
|
||||||
|
|
||||||
module.exports = function(input, output, feedFile, opts) {
|
module.exports = function(input, output, feedFile, opts) {
|
||||||
var data = "";
|
|
||||||
async.waterfall([function(next) {
|
async.waterfall([function(next) {
|
||||||
var feeds = {};
|
var feeds = {};
|
||||||
|
var buf = "";
|
||||||
|
|
||||||
fs.createReadStream(feedFile).pipe(csv())
|
var section = -1;
|
||||||
.on("data", function(data){
|
var sections = [[], [], [], []];
|
||||||
feeds[data[6]] = {
|
|
||||||
x: data[3],
|
console.log("processing sections");
|
||||||
y: data[4],
|
|
||||||
feed: data[5],
|
fs.createReadStream(feedFile)
|
||||||
slot: data[2]
|
.on("data", function(data) {
|
||||||
|
buf += data.toString();
|
||||||
|
|
||||||
|
var lines = buf.split("\n");
|
||||||
|
buf = lines.pop();
|
||||||
|
|
||||||
|
for(var i = 0; i < lines.length; i++) {
|
||||||
|
let line = lines[i].replace(/[\r\n]+$/, "");
|
||||||
|
|
||||||
|
if(line.length === 0) continue;
|
||||||
|
|
||||||
|
if(line.slice(0, 2) === "%,") {
|
||||||
|
section++;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(section === -1) { // input can be either just the CSV section or the entire pnp file
|
||||||
|
sections[1].push(line);
|
||||||
|
} else {
|
||||||
|
sections[section].push(line);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.on("end", function() {
|
.on("end", function() {
|
||||||
next(null, feeds)
|
next(null, sections);
|
||||||
});
|
})
|
||||||
|
}, function(sections, next) {
|
||||||
|
console.log("associating parts");
|
||||||
|
|
||||||
|
var components = [];
|
||||||
|
var len = sections[1].length;
|
||||||
|
|
||||||
|
for(var i = 0; i < len; i++) {
|
||||||
|
let section = sections[1][i].split(",");
|
||||||
|
|
||||||
|
components[section[6]] = {
|
||||||
|
x: section[3],
|
||||||
|
y: section[4],
|
||||||
|
feed: section[5],
|
||||||
|
slot: section[2]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
next(null, components);
|
||||||
}, function(feeds, next) {
|
}, function(feeds, next) {
|
||||||
var rs = fs.createReadStream(input);
|
var rs = fs.createReadStream(input);
|
||||||
var ws = fs.createWriteStream(output);
|
var ws = fs.createWriteStream(output);
|
||||||
var wsCsv = csv.createWriteStream();
|
var wsCsv = csv.createWriteStream();
|
||||||
|
var data = "";
|
||||||
var seq = 0;
|
var seq = 0;
|
||||||
|
|
||||||
var tr = through.obj(function(chunk, enc, done) {
|
var tr = through.obj(function(chunk, enc, done) {
|
||||||
|
@ -50,14 +90,13 @@ module.exports = function(input, output, feedFile, opts) {
|
||||||
|
|
||||||
var feed = feeds[p];
|
var feed = feeds[p];
|
||||||
|
|
||||||
this.push([ 0, seq++, feed.slot, x, y, r ]);
|
this.push([ 0, seq++, feed.slot, x, y, r ].join(",") + "\n");
|
||||||
};
|
};
|
||||||
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
rs.pipe(tr);
|
rs.pipe(tr);
|
||||||
tr.pipe(wsCsv);
|
tr.pipe(ws);
|
||||||
wsCsv.pipe(ws);
|
|
||||||
}]);
|
}]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
65535,1,1,0.00,0.00,4.00,2.2n
|
%,section 1
|
||||||
65535,1,2,0.00,0.00,4.00,10uF
|
65535,0,0.00,0.00
|
||||||
65535,1,3,-0.25,0.00,4.00,10nF
|
|
||||||
65545,1,4,-0.25,0.00,4.00,100nF
|
%,section 2
|
||||||
65535,1,5,-0.25,0.00,4.00,27nF
|
65535,1,1,0.00,0.00,4.00,100nF,
|
||||||
|
65535,1,3,-0.25,0.00,4.00,0.1uF,
|
||||||
|
|
||||||
|
%,section 3
|
||||||
|
65535,3,0.00,0.00,
|
||||||
|
|
||||||
|
%,section 4
|
||||||
|
0,1,3,102.73,27.88,90,0.50,0,100,,,
|
||||||
|
|
|
|
@ -1,9 +1,6 @@
|
||||||
0,0,1,248.2850,-101.2190,0.0000
|
0,0,1,237.8710,-103.0732,270.0000
|
||||||
0,1,3,237.9000,-99.6500,270.0000
|
0,1,1,213.8680,-99.4156,270.0000
|
||||||
0,2,4,237.8710,-103.0732,270.0000
|
0,2,3,219.3061,-52.4408,210.0000
|
||||||
0,3,4,213.8680,-99.4156,270.0000
|
0,3,3,219.9640,-55.0062,180.0000
|
||||||
0,4,2,238.7600,-106.2990,180.0000
|
0,4,3,223.6470,-55.5840,90.0000
|
||||||
0,5,2,228.6000,-76.6572,0.0000
|
0,5,3,214.8840,-60.2615,90.0000
|
||||||
0,6,3,228.1961,-58.5445,270.0000
|
|
||||||
0,7,2,218.4908,-51.4071,225.0000
|
|
||||||
0,8,2,217.2284,-50.6171,250.0000
|
|
||||||
|
|
|
|
@ -22,7 +22,7 @@ cp.stderr.on("data", function(d) {
|
||||||
|
|
||||||
cp.on("close", function() {
|
cp.on("close", function() {
|
||||||
test(function(t) {
|
test(function(t) {
|
||||||
t.deepEqual(fs.readFileSync(output), fs.readFileSync(fixture), "output correct");
|
t.deepEqual(fs.readFileSync(output).toString(), fs.readFileSync(fixture).toString(), "output correct");
|
||||||
|
|
||||||
t.end();
|
t.end();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue