UNPKG

class-o-mat

Version:

ALPHA VERSION ONLY: class-o-mats will help to create getter-setter functionality with validations that can be attached to a container class for easier coding. Some basic validations are included. class-o-mats also has the ability to store params as bloc

189 lines (144 loc) 5.57 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _bunyan = require('bunyan'); var _bunyan2 = _interopRequireDefault(_bunyan); var _v = require('uuid/v4'); var _v2 = _interopRequireDefault(_v); var _types = require('../constants/types'); var _autonumGenerator = require('../util/autonum-generator'); var _autonumGenerator2 = _interopRequireDefault(_autonumGenerator); var _classGroup = require('../prototype/class-group'); var _classGroup2 = _interopRequireDefault(_classGroup); var _classOMat = require('./class-o-mat'); var _classOMat2 = _interopRequireDefault(_classOMat); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var log = _bunyan2.default.createLogger({ name: "ClassOMatGroup" }); /** * this is a class to be internalized by the ClassOMat * even though it hosts the ids of all the ClassOMats. * */ var ClassOMatGroup = function () { function ClassOMatGroup() { _classCallCheck(this, ClassOMatGroup); this.TYPE = _types.CLASS_O_MAT_GROUP; this._params = { uid: (0, _v2.default)(), classGroup: new _classGroup2.default(), classOMats: [], classOMatsUidIndex: {}, classOMatsKeyIndex: {} }; this._autonumGenerator = new _autonumGenerator2.default(); } _createClass(ClassOMatGroup, [{ key: '$', value: function $() { var _this = this; for (var _len = arguments.length, classOMats = Array(_len), _key = 0; _key < _len; _key++) { classOMats[_key] = arguments[_key]; } if (classOMats.length === 0) classOMats = this._params.classOMats; var classGroup = this._params.classGroup; var Classes = classGroup.classes(); classOMats.forEach(function (classOMat) { Classes[classOMat.id()] = classOMat.buildClass(classGroup, _this); }); classOMats.forEach(function (classOMat) { var Class = Classes[classOMat.id()] = classOMat.addChildAccessors(classGroup); }); classGroup.classes(Classes); return classGroup; } }, { key: 'uid', value: function uid() { return this._params.uid; } /** * Add a set to the group. If this set is already in * this group, then return false as isNew and its id. * If this set is part of another group, then replace the group * of that set with this group. * @param {ClassOMat} set * @return { Array} [Boolean:isNew, uint:id] */ }, { key: 'add', value: function add(classOMat) { var _params = this._params, classOMats = _params.classOMats, classOMatsUidIndex = _params.classOMatsUidIndex, classOMatsKeyIndex = _params.classOMatsKeyIndex, uid = _params.uid; var COMUid = classOMat.uid(); if (COMUid in classOMatsUidIndex === true) return [false, COMId, _types.DUPLICATE_UID]; var COMKey = classOMat.key(); // if (COMKey in classOMatsKeyIndex === true) { // log.info('OUT! ') // return [ false, COMId, DUPLICATE_KEY ]; // } var COMId = classOMat.id(); if (classOMat.group() !== this.uid) { classOMat.group(this); } COMId = this._autonumGenerator.next(); classOMat.id(COMId); classOMats[COMId] = classOMat; classOMatsUidIndex[COMUid] = COMId; classOMatsKeyIndex[COMKey] = COMId; return [true, COMId, _types.CLASS_O_MAT_ADDED]; } /** * Get the set by its id * @param {uint} setId * @return {ClassOMat} the set. */ }, { key: 'get', value: function get(classOMatId) { return this._classOMats[classOMatId] || _types.NONE; } }, { key: 'getByUid', value: function getByUid(classOMatUid) { var _params2 = this._params, classOMats = _params2.classOMats, classOMatsUidIndex = _params2.classOMatsUidIndex; if (classOMatUid in classOMatsUidIndex === true) { return classOMats[classOMatsUidIndex[classOMatUid]]; } return _types.NONE; } }, { key: 'getByKey', value: function getByKey(classOMatKey) { var _params3 = this._params, classOMats = _params3.classOMats, classOMatsKeyIndex = _params3.classOMatsKeyIndex; if (classOMatKey in classOMatsKeyIndex === true) { return classOMats[classOMatsKeyIndex[classOMatKey]]; } return _types.NONE; } }, { key: 'addSetChild', value: function addSetChild(set, childSet) { this._classOMats[set.id()].childCount++; } }, { key: 'setUids', value: function setUids() { return this._params.classOMats.map(function (s) { return s.uid(); }); } }]); return ClassOMatGroup; }(); exports.default = ClassOMatGroup; //# sourceMappingURL=class-o-mat-group.js.map