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…
	
	Add table
		
		Reference in a new issue