UNPKG

@jsbailey/reactive-form-validators

Version:

[![npm version](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators.svg)](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators) [![Gitter](https://badges.gitter.im/rx-web/Lobby.svg)](https://gitter.im/rxweb-project/rxweb?utm_source=badge

94 lines (93 loc) 11.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ export class Linq { /** * @param {?} expression * @return {?} */ static functionCreator(expression) { /** @type {?} */ var functionSetter = []; /** @type {?} */ var match = expression.match(/^\s*\(?\s*([^)]*)\s*\)?\s*=>(.*)/); /** @type {?} */ var splitSelect = match[2].split(","); for (var i = 0; i < splitSelect.length; i++) { /** @type {?} */ var equalToOperator = splitSelect[i].match(/^\s*\(?\s*([^)]*)\s*\)?\s*==(.*)/); if (equalToOperator !== null) { functionSetter = new Function(match[1], "return " + equalToOperator[0]); } else { equalToOperator = splitSelect[i].match(/^\s*\(?\s*([^)]*)\s*\)?\s*=(.*)/); if (equalToOperator === null) { functionSetter = new Function(match[1], "return " + splitSelect[i]); } else { functionSetter = new Function(match[1], "return " + equalToOperator[2]); } } } if (splitSelect.length == 0) functionSetter = { accessFunction: new Function(match[1], "return " + match[2]) }; return functionSetter; } /** * @param {?} jObject * @param {?} expression * @param {?} parentObject * @return {?} */ static IsPassed(jObject, expression, parentObject) { /** @type {?} */ let expressionFunction = expression; if (parentObject && typeof expression == "string") expressionFunction = Linq.functionCreator(expression); if (parentObject && expressionFunction) return expressionFunction(parentObject, jObject); return true; } /** * @param {?} expression * @return {?} */ static expressionColumns(expression) { /** @type {?} */ var columns = []; /** @type {?} */ let splitExpressions = []; if (typeof expression == "string") expression.split("=>")[1].split(" && ").forEach(t => { t.split(" || ").forEach(x => { splitExpressions.push(x.trim().split(' ')[0]); }); }); else String(expression).split(" return ")[1].split(" && ").forEach(t => { t.split(" || ").forEach(x => { splitExpressions.push(x.trim().split(' ')[0]); }); }); splitExpressions.forEach(t => { /** @type {?} */ var splitText = t.split('.'); if (splitText.length == 2) columns.push({ propName: splitText[1].trim() }); else { /** @type {?} */ var arrayProp = splitText[1].split('['); /** @type {?} */ let jObject = { propName: splitText[splitText.length - 1].trim(), objectPropName: arrayProp[0], arrayIndex: arrayProp.length > 1 ? arrayProp[1].replace("]", "") : undefined }; columns.push(jObject); } }); return columns; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlucS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bqc2JhaWxleS9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJ1dGlsL2xpbnEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE1BQU07Ozs7O0lBQ0YsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVOztRQUM3QixJQUFJLGNBQWMsR0FBUSxFQUFFLENBQUM7O1FBQzdCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQzs7UUFDakUsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7WUFDMUMsSUFBSSxlQUFlLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQy9FLEVBQUUsQ0FBQyxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixjQUFjLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzRTtZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNKLGVBQWUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQzFFLEVBQUUsQ0FBQyxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUMzQixjQUFjLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENB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QUksT0FBTyxHQUFHO29CQUNWLFFBQVEsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2hELGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUM1QixVQUFVLEVBQUUsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUMvRSxDQUFBO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekI7U0FDSixDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsT0FBTyxDQUFDO0tBQ2xCO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTGlucSB7XHJcbiAgICBzdGF0aWMgZnVuY3Rpb25DcmVhdG9yKGV4cHJlc3Npb24pOiBhbnkge1xyXG4gICAgICAgIHZhciBmdW5jdGlvblNldHRlcjogYW55ID0gW107XHJcbiAgICAgICAgdmFyIG1hdGNoID0gZXhwcmVzc2lvbi5tYXRjaCgvXlxccypcXCg/XFxzKihbXildKilcXHMqXFwpP1xccyo9PiguKikvKTtcclxuICAgICAgICB2YXIgc3BsaXRTZWxlY3QgPSBtYXRjaFsyXS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGxpdFNlbGVjdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgZXF1YWxUb09wZXJhdG9yID0gc3BsaXRTZWxlY3RbaV0ubWF0Y2goL15cXHMqXFwoP1xccyooW14pXSopXFxzKlxcKT9cXHMqPT0oLiopLyk7XHJcbiAgICAgICAgICAgIGlmIChlcXVhbFRvT3BlcmF0b3IgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uU2V0dGVyID0gbmV3IEZ1bmN0aW9uKG1hdGNoWzFdLCBcInJldHVybiBcIiArIGVxdWFsVG9PcGVyYXRvclswXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlcXVhbFRvT3BlcmF0b3IgPSBzcGxpdFNlbGVjdFtpXS5tYXRjaCgvXlxccypcXCg/XFxzKihbXildKilcXHMqXFwpP1xccyo9KC4qKS8pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVxdWFsVG9PcGVyYXRvciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU2V0dGVyID0gbmV3IEZ1bmN0aW9uKG1hdGNoWzFdLCBcInJldHVybiBcIiArIHNwbGl0U2VsZWN0W2ldKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25TZXR0ZXIgPSBuZXcgRnVuY3Rpb24obWF0Y2hbMV0sIFwicmV0dXJuIFwiICsgZXF1YWxUb09wZXJhdG9yWzJdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3BsaXRTZWxlY3QubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uU2V0dGVyID0geyBhY2Nlc3NGdW5jdGlvbjogbmV3IEZ1bmN0aW9uKG1hdGNoWzFdLCBcInJldHVybiBcIiArIG1hdGNoWzJdKSB9O1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvblNldHRlcjtcclxuICAgIH1cclxuICAgIHN0YXRpYyBJc1Bhc3NlZChqT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBleHByZXNzaW9uOiBhbnksIHBhcmVudE9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBleHByZXNzaW9uRnVuY3Rpb246IEZ1bmN0aW9uID0gZXhwcmVzc2lvbjtcclxuICAgICAgICBpZiAocGFyZW50T2JqZWN0ICYmIHR5cGVvZiBleHByZXNzaW9uID09IFwic3RyaW5nXCIpXHJcbiAgICAgICAgICAgIGV4cHJlc3Npb25GdW5jdGlvbiA9IExpbnEuZnVuY3Rpb25DcmVhdG9yKGV4cHJlc3Npb24pO1xyXG4gICAgICAgIGlmIChwYXJlbnRPYmplY3QgJiYgZXhwcmVzc2lvbkZ1bmN0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm4gZXhwcmVzc2lvbkZ1bmN0aW9uKHBhcmVudE9iamVjdCwgak9iamVjdCk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGV4cHJlc3Npb25Db2x1bW5zKGV4cHJlc3Npb246IGFueSkge1xyXG4gICAgICAgIHZhciBjb2x1bW5zID0gW107XHJcbiAgICAgICAgbGV0IHNwbGl0RXhwcmVzc2lvbnMgPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mIGV4cHJlc3Npb24gPT0gXCJzdHJpbmdcIilcclxuICAgICAgICBleHByZXNzaW9uLnNwbGl0KFwiPT5cIilbMV0uc3BsaXQoXCIgJiYgXCIpLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgIHQuc3BsaXQoXCIgfHwgXCIpLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgICAgICBzcGxpdEV4cHJlc3Npb25zLnB1c2goeC50cmltKCkuc3BsaXQoJyAnKVswXSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBTdHJpbmcoZXhwcmVzc2lvbikuc3BsaXQoXCIgcmV0dXJuIFwiKVsxXS5zcGxpdChcIiAmJiBcIikuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHQuc3BsaXQoXCIgfHwgXCIpLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BsaXRFeHByZXNzaW9ucy5wdXNoKHgudHJpbSgpLnNwbGl0KCcgJylbMF0pXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICBzcGxpdEV4cHJlc3Npb25zLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBzcGxpdFRleHQgPSB0LnNwbGl0KCcuJyk7XHJcbiAgICAgICAgICAgIGlmIChzcGxpdFRleHQubGVuZ3RoID09IDIpXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goeyBwcm9wTmFtZTogc3BsaXRUZXh0WzFdLnRyaW0oKSB9KTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXJyYXlQcm9wID0gc3BsaXRUZXh0WzFdLnNwbGl0KCdbJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgak9iamVjdCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZTogc3BsaXRUZXh0W3NwbGl0VGV4dC5sZW5ndGggLSAxXS50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJvcE5hbWU6IGFycmF5UHJvcFswXSxcclxuICAgICAgICAgICAgICAgICAgICBhcnJheUluZGV4OiBhcnJheVByb3AubGVuZ3RoID4gMSA/IGFycmF5UHJvcFsxXS5yZXBsYWNlKFwiXVwiLCBcIlwiKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29sdW1ucy5wdXNoKGpPYmplY3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gY29sdW1ucztcclxuICAgIH1cclxuXHJcbn1cclxuIl19