You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.5 KiB
108 lines
2.5 KiB
var app = require('./app.js');
|
|
|
|
module.exports = {
|
|
toColumnArray: toColumnArray,
|
|
toObject: toObject,
|
|
toSchemaObject: toSchemaObject,
|
|
toArray: toArray,
|
|
transform: transform,
|
|
stringify: stringify
|
|
}
|
|
|
|
function chopLines(str) {
|
|
return str.split(/[\n\r]/ig);
|
|
}
|
|
|
|
function transform(func) {
|
|
var stream = require('stream');
|
|
return new stream.Transform({
|
|
readableObjectMode: true,
|
|
writableObjectMode: true,
|
|
transform: func
|
|
});
|
|
}
|
|
|
|
function stringify(space) {
|
|
return transform(function (data, encoding, callback) {
|
|
this.push(JSON.stringify(data, null, space))
|
|
callback()
|
|
});
|
|
}
|
|
|
|
function _toColumnArray(data, encoding, callback, trans) {
|
|
var lines = chopLines(data.toString());
|
|
if (!trans._head) {
|
|
var head = lines.shift();
|
|
trans._head = head;
|
|
trans._opts.headers = head;
|
|
}
|
|
this.push(app.toColumnArray(lines.join('\n'), trans._opts))
|
|
callback()
|
|
}
|
|
|
|
function toColumnArray(opts) {
|
|
opts = opts || {};
|
|
var trans = transform(function (data, encoding, callback) {
|
|
_toColumnArray.call(this, data, encoding, callback, trans);
|
|
});
|
|
trans._head = opts.headers ? opts.headers : null;
|
|
trans._opts = opts;
|
|
return trans;
|
|
}
|
|
|
|
function _toObject(data, encoding, callback, trans) {
|
|
var lines = chopLines(data.toString());
|
|
if (!trans._head) {
|
|
var head = lines.shift();
|
|
trans._head = head;
|
|
trans._opts.headers = head;
|
|
}
|
|
this.push(app.toObject(lines.join('\n'), trans._opts))
|
|
callback()
|
|
}
|
|
|
|
function toObject(opts) {
|
|
opts = opts || {};
|
|
var trans = transform(function (data, encoding, callback) {
|
|
_toObject.call(this, data, encoding, callback, trans);
|
|
});
|
|
trans._head = opts.headers ? opts.headers : null;
|
|
trans._opts = opts;
|
|
return trans;
|
|
}
|
|
|
|
function _toSchemaObject(data, encoding, callback, trans) {
|
|
var lines = chopLines(data.toString());
|
|
if (!trans._head) {
|
|
var head = lines.shift();
|
|
trans._head = head;
|
|
trans._opts.headers = head;
|
|
}
|
|
this.push(app.toSchemaObject(lines.join('\n'), trans._opts))
|
|
callback()
|
|
}
|
|
|
|
function toSchemaObject(opts) {
|
|
opts = opts || {};
|
|
var trans = transform(function (data, encoding, callback) {
|
|
_toSchemaObject.call(this, data, encoding, callback, trans);
|
|
});
|
|
trans._head = opts.headers ? opts.headers : null;
|
|
trans._opts = opts;
|
|
return trans;
|
|
}
|
|
|
|
function _toArray(data, encoding, callback, trans) {
|
|
var lines = chopLines(data.toString());
|
|
this.push(app.toArray(lines.join('\n'), trans._opts))
|
|
callback()
|
|
}
|
|
|
|
function toArray(opts) {
|
|
opts = opts || {};
|
|
var trans = transform(function (data, encoding, callback) {
|
|
_toArray.call(this, data, encoding, callback, trans);
|
|
});
|
|
trans._opts = opts;
|
|
return trans;
|
|
} |