fuel-ui/static/expression.js
Vitaly Kramskikh 6e33036ddc Remove unused modelPaths extracting from Expression and helpers
This functionality is not used anymore

Change-Id: I5157aaf2a33ca1978394a80f7a2f9f06de0245f9
Partial-Bug: #1561530
2016-03-29 00:16:09 +03:00

55 lines
1.7 KiB
JavaScript

/*
* Copyright 2014 Mirantis, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
**/
import _ from 'underscore';
import ExpressionParser from 'expression/parser';
import * as expressionObjects from 'expression/objects';
var expressionCache = {};
class Expression {
constructor(expressionText, models = {}, {strict = true} = {}) {
this.strict = strict;
this.expressionText = expressionText;
this.models = models;
this.compiledExpression = this.getCompiledExpression();
return this;
}
evaluate(extraModels) {
// FIXME(vkramskikh): currently Jison supports sharing state
// only via ExpressionParser.yy. It is unsafe and could lead to
// issues in case we start to use webworkers
ExpressionParser.yy.expression = this;
this.extraModels = extraModels;
var value = this.compiledExpression.evaluate();
delete this.extraModels;
return value;
}
getCompiledExpression() {
var cacheEntry = expressionCache[this.expressionText];
if (!cacheEntry) {
cacheEntry = expressionCache[this.expressionText] =
ExpressionParser.parse(this.expressionText);
}
return cacheEntry;
}
}
_.extend(ExpressionParser.yy, expressionObjects);
export default Expression;