UNPKG

jaydata-reso

Version:

Jaydata fork for RESO Web API

54 lines (42 loc) 2.08 kB
$C('$data.Expressions.ExpressionMonitor', $data.Expressions.EntityExpressionVisitor, null, { constructor: function (monitorDefinition) { this.Visit = function (expression, context) { var result = expression; var methodName; if (this.canVisit(expression)) { //if (monitorDefinition.FilterExpressionNode) { //}; if (monitorDefinition.VisitExpressionNode) { monitorDefinition.VisitExpressionNode.apply(monitorDefinition, arguments); }; methodName = "Visit" + expression.getType().name; if (methodName in monitorDefinition) { result = monitorDefinition[methodName].apply(monitorDefinition, arguments); } } //apply is about 3-4 times faster then call on webkit var args = arguments; if (result !== expression) args = [result, context]; result = $data.Expressions.EntityExpressionVisitor.prototype.Visit.apply(this, args); args = [result, context]; if (this.canVisit(result)) { var expressionTypeName = result.getType().name; if (monitorDefinition.MonitorExpressionNode) { monitorDefinition.MonitorExpressionNode.apply(monitorDefinition, args); } methodName = "Monitor" + expressionTypeName; if (methodName in monitorDefinition) { monitorDefinition[methodName].apply(monitorDefinition, args); } if (monitorDefinition.MutateExpressionNode) { monitorDefinition.MutateExpressionNode.apply(monitorDefinition, args); } methodName = "Mutate" + expressionTypeName; if (methodName in monitorDefinition) { result = monitorDefinition[methodName].apply(monitorDefinition, args); } } return result; }; } });