UNPKG

maycur-business

Version:

maycur business react components of web

201 lines (157 loc) 4.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _formula = _interopRequireDefault(require("./formula")); 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"); } } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function isString(val) { return typeof val === 'string'; } function has() { var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var key = arguments.length > 1 ? arguments[1] : undefined; return obj.hasOwnProperty(key); } function remove() { var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var filterCb = arguments.length > 1 ? arguments[1] : undefined; var index; if (!Array.isArray(array)) return; array.forEach(function (val, idx) { if (typeof filterCb === 'function' && filterCb(val)) { index = idx; } }); if (index >= 0) { array.splice(index, 1); } } function isObject(obj) { if (obj !== null && Object !== undefined) { return _typeof(obj) === 'object'; } } var _ = { isString: isString, remove: remove, has: has, isObject: isObject }; var innerCustomFn = ['getObj']; var FormulaParser = function FormulaParser() { var _this = this; var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, FormulaParser); this.setVariable = function (name, value) { try { _this.parser.setVariable(name, value); _this.pool[name] = value; _this.modifyVariablesList(name); } catch (err) { console.log(err); } }; this.setFunction = function (name, fn) { if (typeof fn !== 'function') { console.log('the value is not function'); return; } if (innerCustomFn.includes(name)) { console.log('the name is occupied by inner function'); return; } try { _this.parser.setFunction(name, fn); _this.modifyFunctionsList(name); } catch (err) { console.log(err); } }; this.modifyVariablesList = function (name) { var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'add'; if (!_.isString(name)) return; switch (action) { case 'add': if (!_this.variablesList.includes(name)) { _this.variablesList.push(name); } break; case 'remove': if (_this.variablesList.includes(name)) { _.remove(_this.variablesList, function (val) { return val === name; }); } break; default: break; } }; this.modifyFunctionsList = function (name) { var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'add'; if (!_.isString(name)) return; switch (action) { case 'add': if (!_this.functionsList.includes(name)) { _this.functionsList.push(name); } break; case 'remove': if (_this.functionsList.includes(name)) { _.remove(_this.functionsList, function (val) { return val === name; }); } break; default: break; } }; this.removeVariable = function (name) { if (_.isString(name)) { delete _this.parser.variables[name]; _this.modifyVariablesList(name, 'remove'); } }; this.removeFunction = function (name) { if (_.isString(name)) { delete _this.parser.functions[name]; _this.modifyFunctionsList(name, 'remove'); } }; this.parse = function (express) { _this.synchVariableValues(_this.pool); return _this.parser.parse(express); }; this.synchVariableValues = function (nextData) { if (nextData && _.isObject(nextData)) { _this.variablesList.forEach(function (key) { if (_.has(nextData, key)) { _this.setVariable(key, nextData[key]); } }); } }; this.updateDataPool = function () { var partial = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var clonePartial = {}; Object.keys(partial).forEach(function (key) { clonePartial[key] = partial[key]; _this.setVariable(key, partial[key]); }); }; var compat = props.compat; this.pool = {}; this.parser = new _formula["default"]({ compat: compat }); this.variablesList = []; this.functionsList = []; } /* 设置变量 */ ; var _default = FormulaParser; exports["default"] = _default;