to-xml
Version:
toXML - Pure JavaScript XML Writer
65 lines (50 loc) • 1.33 kB
JavaScript
var fs = require("fs");
var toXML = require("../").toXML;
CLI(Array.prototype.slice.call(process.argv, 2));
function CLI(args) {
var indent = (args[0] < 0) && -args.shift();
var input = args[0];
var output = args[1];
input = (input && input !== "-") ? fs.createReadStream(input) : process.stdin;
readFromStream(input, function(err, data) {
if (err) return fatal(err);
try {
data = JSON.parse(data);
data = toXML(data, null, indent);
} catch (e) {
return fatal(e);
}
output = (output && output !== "-") ? fs.createWriteStream(output) : process.stdout;
output.write(data);
});
}
function fatal(reason) {
process.stderr.write(reason);
process.exit(1);
}
/**
* Read all data from stream
*
* @param stream {Stream}
* @param callback {Function} function(err, str) {...}
* @license MIT
* @see https://gist.github.com/kawanet/c6c998b00500fe05eb8dfd0ee80deacf
*/
function readFromStream(stream, callback) {
var buf = [];
stream.on("data", onData);
stream.on("end", onEnd);
stream.on("error", onError);
function onData(data) {
buf.push(data);
}
function onEnd() {
if (callback) callback(null, buf.join(""));
callback = null;
}
function onError(err) {
if (callback) callback(err);
callback = null;
}
}