UNPKG

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
'use strict'; 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