UNPKG

babelute

Version:

Internal Domain Specific (Multi)Modeling javascript framework

87 lines (69 loc) 2.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.addToInitializer = exports.createInitializer = exports.Initializer = undefined; var _babelute = require('../babelute'); var _babelute2 = _interopRequireDefault(_babelute); var _extends = require('../utils/extends'); var _extends2 = _interopRequireDefault(_extends); 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"); } } // removed in production /* * @Author: Gilles Coomans * @Date: 2017-03-10 13:25:25 * @Last Modified by: Gilles Coomans * @Last Modified time: 2017-05-10 11:03:28 */ /** * Initializer Class * @protected */ var Initializer = function Initializer() { _classCallCheck(this, Initializer); }; /** * extends Initializer * @param {Class} BaseInitializer the Initializer to extends * @return {Class} the extended Initalizer class */ Initializer.extends = _extends2.default; /** * create a Initializer (based on a Babelute subclass) and instanciate it * @param {Babelute} BabeluteClass a Babelute subclass from where create initializer * @param {?Initializer} BaseInitializer a parent initializer to be extended (optional) * @return {Initializer} the Initializer instance * @protected */ function createInitializer(BabeluteClass) { var BaseInitializer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var Init = BabeluteClass.Initializer = BaseInitializer ? Initializer.extends(BaseInitializer) : Initializer; BabeluteClass.initializer = new Init(); BabeluteClass.initializer._empty = function () { return new BabeluteClass(); }; BabeluteClass.initializer.Class = BabeluteClass; Object.keys(BabeluteClass).forEach(function (i) { return addToInitializer(Init, i); }); return BabeluteClass.initializer; } /** * add method to initializer * @protected * @param {Initializer} Initializer Initializer class where add methods in proto * @param {string} methodName the name of method to add */ function addToInitializer(Initializer, methodName) { Initializer.prototype[methodName] = function () { var _ref; return (_ref = new this.Class())[methodName].apply(_ref, arguments); }; } // add base Babelute's api ['_use', '_each', '_if', '_append', '_lexicon'].forEach(function (methodName) { addToInitializer(Initializer, methodName); }); exports.Initializer = Initializer; exports.createInitializer = createInitializer; exports.addToInitializer = addToInitializer;