class-o-mat-data-object-plugin
Version:
a plugin to allow a class-o-mat instance to output the full tree of its own parameters and any of its children
80 lines (58 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _bunyan = require('bunyan');
var _bunyan2 = _interopRequireDefault(_bunyan);
var _classOMat = require('class-o-mat');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var log = _bunyan2.default.createLogger({ name: "COM-CLI" });
var plugin = new _classOMat.Plugin('classOMatDataObject');
var getData = function getData(minion) {
if (Array.isArray(minion) === true) {
return minion.map(function (thisMinion) {
return getDataFromMinion(thisMinion);
});
}
if ((typeof minion === 'undefined' ? 'undefined' : _typeof(minion)) !== 'object') {
return null;
}
if (typeof minion.___isClassOMat !== 'function') {
var keys = Object.keys(minion);
var data = {};
keys.forEach(function (key) {
data[key] = getDataFromMinion(minion[key]);
});
return data;
}
return getDataFromMinion(minion);
};
var getDataFromMinion = function getDataFromMinion(minion) {
var workingParams = {};
var params = minion._params;
var keys = Object.keys(params);
keys.forEach(function (key) {
if (key.slice(0, 3) === '___') return;
workingParams[key] = params[key];
});
if (typeof minion.___children !== 'function') return workingParams;
var children = minion.___children();
var childKeys = Object.keys(children);
if (childKeys.length === 0) return workingParams;
childKeys.forEach(function (key) {
workingParams[key] = getData(children[key]);
});
return workingParams;
};
var mixins = {
___data: function ___data() {
return getData(this);
},
___json: function ___json() {
return JSON.stringify(getData(this));
}
};
plugin.addMixins(mixins);
exports.default = plugin;
//# sourceMappingURL=index.js.map