Revision: 476
Author:
ryandesign.com
Date: Wed Aug 28 01:29:59 2013 UTC
Log: support reading from stdin and/or writing to stdout
http://code.google.com/p/canviz/source/detail?r=476
Modified:
/canviz/trunk/bin/xdot2png
=======================================
--- /canviz/trunk/bin/xdot2png Sat Aug 24 10:37:54 2013 UTC
+++ /canviz/trunk/bin/xdot2png Wed Aug 28 01:29:59 2013 UTC
@@ -3,22 +3,38 @@
var Canviz = require('../src/Canviz.js');
var fs = require('fs');
-if (process.argv.length != 4) {
- process.stderr.write('usage: xdot2png infile.xdot outfile.png\n');
+var args = process.argv.slice(2);
+
+var inFileName = args.shift();
+if (!inFileName) inFileName = '-';
+
+var outFileName = args.shift();
+if (!outFileName) outFileName = '-';
+
+if (args.length) {
+ process.stderr.write('usage: xdot2png [infile.xdot [outfile.png]]\n');
process.exit(1);
}
-var inFileName = process.argv[2], outFileName = process.argv[3];
+var inFile = '-' == inFileName ? process.stdin :
fs.createReadStream(inFileName);
+var outFile = '-' == outFileName ? process.stdout :
fs.createWriteStream(outFileName);
-var canviz = Canviz();
-canviz.setTextMode('canvas');
-canviz.parse(fs.readFileSync(inFileName, {encoding: 'utf8'}));
+inFile.setEncoding('utf8');
+var chunks = [];
+inFile.on('data', function (chunk) {
+ chunks.push(chunk);
+});
+inFile.on('end', writeFile);
+inFile.resume();
+
+function writeFile() {
+ var canviz = Canviz();
+ canviz.setTextMode('canvas');
+ canviz.parse(chunks.join(''));
-var outfile = fs.createWriteStream(outFileName);
-outfile.on('open', function () {
var stream = canviz.canvas.pngStream();
stream.on('data', function (chunk) {
- outfile.write(chunk);
+ outFile.write(chunk);
});
stream.on('end', function () {});
-});
+}