Rename ol.expression to ol.expr
This commit is contained in:
@@ -519,54 +519,54 @@
|
||||
|
||||
/**
|
||||
* @typedef {Object} ol.style.IconOptions
|
||||
* @property {string|ol.expression.Expression} url Icon image url.
|
||||
* @property {number|ol.expression.Expression|undefined} width Width of the icon
|
||||
* @property {string|ol.expr.Expression} url Icon image url.
|
||||
* @property {number|ol.expr.Expression|undefined} width Width of the icon
|
||||
* in pixels. Default is the width of the icon image.
|
||||
* @property {number|ol.expression.Expression|undefined} height Height of the
|
||||
* @property {number|ol.expr.Expression|undefined} height Height of the
|
||||
* icon in pixels. Default is the height of the icon image.
|
||||
* @property {number|ol.expression.Expression|undefined} opacity Icon opacity
|
||||
* @property {number|ol.expr.Expression|undefined} opacity Icon opacity
|
||||
* (0-1).
|
||||
* @property {number|ol.expression.Expression|undefined} rotation Rotation in
|
||||
* @property {number|ol.expr.Expression|undefined} rotation Rotation in
|
||||
* degrees (0-360).
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} ol.style.LineOptions
|
||||
* @property {string|ol.expression.Expression|undefined} strokeColor Stroke
|
||||
* @property {string|ol.expr.Expression|undefined} strokeColor Stroke
|
||||
* color as hex color code.
|
||||
* @property {number|ol.expression.Expression|undefined} strokeWidth Stroke
|
||||
* @property {number|ol.expr.Expression|undefined} strokeWidth Stroke
|
||||
* width in pixels.
|
||||
* @property {number|ol.expression.Expression|undefined} opacity Opacity (0-1).
|
||||
* @property {number|ol.expr.Expression|undefined} opacity Opacity (0-1).
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} ol.style.PolygonOptions
|
||||
* @property {string|ol.expression.Expression|undefined} fillColor Fill color as
|
||||
* @property {string|ol.expr.Expression|undefined} fillColor Fill color as
|
||||
* hex color code.
|
||||
* @property {string|ol.expression.Expression|undefined} strokeColor Stroke
|
||||
* @property {string|ol.expr.Expression|undefined} strokeColor Stroke
|
||||
* color as hex color code.
|
||||
* @property {number|ol.expression.Expression|undefined} strokeWidth Stroke
|
||||
* @property {number|ol.expr.Expression|undefined} strokeWidth Stroke
|
||||
* width in pixels.
|
||||
* @property {number|ol.expression.Expression|undefined} opacity Opacity (0-1).
|
||||
* @property {number|ol.expr.Expression|undefined} opacity Opacity (0-1).
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} ol.style.RuleOptions
|
||||
* @property {ol.expression.Expression|string|undefined} filter Filter.
|
||||
* @property {ol.expr.Expression|string|undefined} filter Filter.
|
||||
* @property {Array.<ol.style.Symbolizer>|undefined} symbolizers Symbolizers.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} ol.style.ShapeOptions
|
||||
* @property {ol.style.ShapeType|undefined} type Type.
|
||||
* @property {number|ol.expression.Expression|undefined} size Size in pixels.
|
||||
* @property {string|ol.expression.Expression|undefined} fillColor Fill color as
|
||||
* @property {number|ol.expr.Expression|undefined} size Size in pixels.
|
||||
* @property {string|ol.expr.Expression|undefined} fillColor Fill color as
|
||||
* hex color code.
|
||||
* @property {string|ol.expression.Expression|undefined} strokeColor Stroke
|
||||
* @property {string|ol.expr.Expression|undefined} strokeColor Stroke
|
||||
* color as hex color code.
|
||||
* @property {number|ol.expression.Expression|undefined} strokeWidth Stroke
|
||||
* @property {number|ol.expr.Expression|undefined} strokeWidth Stroke
|
||||
* width in pixels.
|
||||
* @property {number|ol.expression.Expression|undefined} opacity Opacity (0-1).
|
||||
* @property {number|ol.expr.Expression|undefined} opacity Opacity (0-1).
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -576,11 +576,11 @@
|
||||
|
||||
/**
|
||||
* @typedef {Object} ol.style.TextOptions
|
||||
* @property {string|ol.expression.Expression|undefined} color Color.
|
||||
* @property {string|ol.expression.Expression|undefined} fontFamily Font family.
|
||||
* @property {number|ol.expression.Expression|undefined} fontSize Font size in pixels.
|
||||
* @property {string|ol.expression.Expression} text Text for the label.
|
||||
* @property {number|ol.expression.Expression|undefined} opacity Opacity (0-1).
|
||||
* @property {string|ol.expr.Expression|undefined} color Color.
|
||||
* @property {string|ol.expr.Expression|undefined} fontFamily Font family.
|
||||
* @property {number|ol.expr.Expression|undefined} fontSize Font size in pixels.
|
||||
* @property {string|ol.expr.Expression} text Text for the label.
|
||||
* @property {number|ol.expr.Expression|undefined} opacity Opacity (0-1).
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
3
src/ol/expr.jsdoc
Normal file
3
src/ol/expr.jsdoc
Normal file
@@ -0,0 +1,3 @@
|
||||
/**
|
||||
* @namespace ol.expr
|
||||
*/
|
||||
2
src/ol/expr/expression.exports
Normal file
2
src/ol/expr/expression.exports
Normal file
@@ -0,0 +1,2 @@
|
||||
@exportSymbol ol.expr.parse
|
||||
@exportSymbol ol.expr.register
|
||||
@@ -1,29 +1,29 @@
|
||||
goog.provide('ol.expression');
|
||||
goog.provide('ol.expr');
|
||||
|
||||
goog.require('ol.Extent');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.expression.Call');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expression.Identifier');
|
||||
goog.require('ol.expression.Parser');
|
||||
goog.require('ol.expr.Call');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.expr.Identifier');
|
||||
goog.require('ol.expr.Parser');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.GeometryType');
|
||||
|
||||
|
||||
/**
|
||||
* Evaluate an expression with a feature. The feature attributes will be used
|
||||
* as the evaluation scope. The `ol.expression.lib` functions will be used as
|
||||
* as the evaluation scope. The `ol.expr.lib` functions will be used as
|
||||
* function scope. The feature itself will be used as the `this` argument.
|
||||
*
|
||||
* @param {ol.expression.Expression} expr The expression.
|
||||
* @param {ol.expr.Expression} expr The expression.
|
||||
* @param {ol.Feature=} opt_feature The feature.
|
||||
* @return {*} The result of the expression.
|
||||
*/
|
||||
ol.expression.evaluateFeature = function(expr, opt_feature) {
|
||||
ol.expr.evaluateFeature = function(expr, opt_feature) {
|
||||
var result;
|
||||
if (goog.isDef(opt_feature)) {
|
||||
result = expr.evaluate(
|
||||
opt_feature.getAttributes(), ol.expression.lib, opt_feature);
|
||||
opt_feature.getAttributes(), ol.expr.lib, opt_feature);
|
||||
} else {
|
||||
result = expr.evaluate();
|
||||
}
|
||||
@@ -34,11 +34,11 @@ ol.expression.evaluateFeature = function(expr, opt_feature) {
|
||||
/**
|
||||
* Parse an expression.
|
||||
* @param {string} source The expression source (e.g. `'foo + 2'`).
|
||||
* @return {ol.expression.Expression} An expression instance that can be
|
||||
* @return {ol.expr.Expression} An expression instance that can be
|
||||
* evaluated within some scope to provide a value.
|
||||
*/
|
||||
ol.expression.parse = function(source) {
|
||||
var parser = new ol.expression.Parser();
|
||||
ol.expr.parse = function(source) {
|
||||
var parser = new ol.expr.Parser();
|
||||
return parser.parse(source);
|
||||
};
|
||||
|
||||
@@ -50,27 +50,27 @@ ol.expression.parse = function(source) {
|
||||
* expression. This function will be called with a feature as the `this`
|
||||
* argument when the expression is evaluated in the context of a features.
|
||||
*/
|
||||
ol.expression.register = function(name, func) {
|
||||
ol.expression.lib[name] = func;
|
||||
ol.expr.register = function(name, func) {
|
||||
ol.expr.lib[name] = func;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Determines whether an expression is a call expression that calls one of the
|
||||
* `ol.expression.lib` functions.
|
||||
* `ol.expr.lib` functions.
|
||||
*
|
||||
* @param {ol.expression.Expression} expr The candidate expression.
|
||||
* @param {ol.expr.Expression} expr The candidate expression.
|
||||
* @return {string|undefined} If the candidate expression is a call to a lib
|
||||
* function, the return will be the function name. If not, the return will be
|
||||
* `undefined`.
|
||||
*/
|
||||
ol.expression.isLibCall = function(expr) {
|
||||
ol.expr.isLibCall = function(expr) {
|
||||
var name;
|
||||
if (expr instanceof ol.expression.Call) {
|
||||
if (expr instanceof ol.expr.Call) {
|
||||
var callee = expr.getCallee();
|
||||
if (callee instanceof ol.expression.Identifier) {
|
||||
if (callee instanceof ol.expr.Identifier) {
|
||||
name = callee.getName();
|
||||
if (!ol.expression.lib.hasOwnProperty(name)) {
|
||||
if (!ol.expr.lib.hasOwnProperty(name)) {
|
||||
name = undefined;
|
||||
}
|
||||
}
|
||||
@@ -81,11 +81,11 @@ ol.expression.isLibCall = function(expr) {
|
||||
|
||||
/**
|
||||
* Library of well-known functions. These are available to expressions parsed
|
||||
* with `ol.expression.parse`.
|
||||
* with `ol.expr.parse`.
|
||||
*
|
||||
* @type {Object}
|
||||
*/
|
||||
ol.expression.lib = {
|
||||
ol.expr.lib = {
|
||||
|
||||
/**
|
||||
* Determine if a feature's extent intersects the provided extent.
|
||||
@@ -1,20 +1,20 @@
|
||||
goog.provide('ol.expression.Call');
|
||||
goog.provide('ol.expression.Comparison');
|
||||
goog.provide('ol.expression.ComparisonOp');
|
||||
goog.provide('ol.expression.Expression');
|
||||
goog.provide('ol.expression.Identifier');
|
||||
goog.provide('ol.expression.Literal');
|
||||
goog.provide('ol.expression.Logical');
|
||||
goog.provide('ol.expression.LogicalOp');
|
||||
goog.provide('ol.expression.Math');
|
||||
goog.provide('ol.expression.MathOp');
|
||||
goog.provide('ol.expression.Member');
|
||||
goog.provide('ol.expression.Not');
|
||||
goog.provide('ol.expr.Call');
|
||||
goog.provide('ol.expr.Comparison');
|
||||
goog.provide('ol.expr.ComparisonOp');
|
||||
goog.provide('ol.expr.Expression');
|
||||
goog.provide('ol.expr.Identifier');
|
||||
goog.provide('ol.expr.Literal');
|
||||
goog.provide('ol.expr.Logical');
|
||||
goog.provide('ol.expr.LogicalOp');
|
||||
goog.provide('ol.expr.Math');
|
||||
goog.provide('ol.expr.MathOp');
|
||||
goog.provide('ol.expr.Member');
|
||||
goog.provide('ol.expr.Not');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Base class for all expressions. Instances of ol.expression.Expression
|
||||
* Base class for all expressions. Instances of ol.expr.Expression
|
||||
* correspond to a limited set of ECMAScript 5.1 expressions.
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11
|
||||
*
|
||||
@@ -23,7 +23,7 @@ goog.provide('ol.expression.Not');
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
ol.expression.Expression = function() {};
|
||||
ol.expr.Expression = function() {};
|
||||
|
||||
|
||||
/**
|
||||
@@ -38,7 +38,7 @@ ol.expression.Expression = function() {};
|
||||
* expressions. If not provided, `this` will resolve to a new object.
|
||||
* @return {*} Result of the expression.
|
||||
*/
|
||||
ol.expression.Expression.prototype.evaluate = goog.abstractMethod;
|
||||
ol.expr.Expression.prototype.evaluate = goog.abstractMethod;
|
||||
|
||||
|
||||
|
||||
@@ -46,33 +46,33 @@ ol.expression.Expression.prototype.evaluate = goog.abstractMethod;
|
||||
* A call expression (e.g. `foo(bar)`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @param {ol.expression.Expression} callee An expression that resolves to a
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {ol.expr.Expression} callee An expression that resolves to a
|
||||
* function.
|
||||
* @param {Array.<ol.expression.Expression>} args Arguments.
|
||||
* @param {Array.<ol.expr.Expression>} args Arguments.
|
||||
*/
|
||||
ol.expression.Call = function(callee, args) {
|
||||
ol.expr.Call = function(callee, args) {
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.callee_ = callee;
|
||||
|
||||
/**
|
||||
* @type {Array.<ol.expression.Expression>}
|
||||
* @type {Array.<ol.expr.Expression>}
|
||||
* @private
|
||||
*/
|
||||
this.args_ = args;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Call, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Call, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Call.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
ol.expr.Call.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
var fnScope = goog.isDefAndNotNull(opt_fns) ? opt_fns : opt_scope;
|
||||
var fn = this.callee_.evaluate(fnScope);
|
||||
if (!fn || !goog.isFunction(fn)) {
|
||||
@@ -91,18 +91,18 @@ ol.expression.Call.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
|
||||
/**
|
||||
* Get the argument list.
|
||||
* @return {Array.<ol.expression.Expression>} The argument.
|
||||
* @return {Array.<ol.expr.Expression>} The argument.
|
||||
*/
|
||||
ol.expression.Call.prototype.getArgs = function() {
|
||||
ol.expr.Call.prototype.getArgs = function() {
|
||||
return this.args_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the callee expression.
|
||||
* @return {ol.expression.Expression} The callee expression.
|
||||
* @return {ol.expr.Expression} The callee expression.
|
||||
*/
|
||||
ol.expression.Call.prototype.getCallee = function() {
|
||||
ol.expr.Call.prototype.getCallee = function() {
|
||||
return this.callee_;
|
||||
};
|
||||
|
||||
@@ -110,7 +110,7 @@ ol.expression.Call.prototype.getCallee = function() {
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
ol.expression.ComparisonOp = {
|
||||
ol.expr.ComparisonOp = {
|
||||
EQ: '==',
|
||||
NEQ: '!=',
|
||||
STRICT_EQ: '===',
|
||||
@@ -127,33 +127,33 @@ ol.expression.ComparisonOp = {
|
||||
* A comparison expression (e.g. `foo >= 42`, `bar != "chicken"`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @param {ol.expression.ComparisonOp} operator Comparison operator.
|
||||
* @param {ol.expression.Expression} left Left expression.
|
||||
* @param {ol.expression.Expression} right Right expression.
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {ol.expr.ComparisonOp} operator Comparison operator.
|
||||
* @param {ol.expr.Expression} left Left expression.
|
||||
* @param {ol.expr.Expression} right Right expression.
|
||||
*/
|
||||
ol.expression.Comparison = function(operator, left, right) {
|
||||
ol.expr.Comparison = function(operator, left, right) {
|
||||
|
||||
/**
|
||||
* @type {ol.expression.ComparisonOp}
|
||||
* @type {ol.expr.ComparisonOp}
|
||||
* @private
|
||||
*/
|
||||
this.operator_ = operator;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.left_ = left;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.right_ = right;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Comparison, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Comparison, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
@@ -161,10 +161,10 @@ goog.inherits(ol.expression.Comparison, ol.expression.Expression);
|
||||
* @param {string} candidate Operator to test.
|
||||
* @return {boolean} The operator is valid.
|
||||
*/
|
||||
ol.expression.Comparison.isValidOp = (function() {
|
||||
ol.expr.Comparison.isValidOp = (function() {
|
||||
var valid = {};
|
||||
for (var key in ol.expression.ComparisonOp) {
|
||||
valid[ol.expression.ComparisonOp[key]] = true;
|
||||
for (var key in ol.expr.ComparisonOp) {
|
||||
valid[ol.expr.ComparisonOp[key]] = true;
|
||||
}
|
||||
return function isValidOp(candidate) {
|
||||
return !!valid[candidate];
|
||||
@@ -175,35 +175,35 @@ ol.expression.Comparison.isValidOp = (function() {
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Comparison.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
ol.expr.Comparison.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
opt_this) {
|
||||
var result;
|
||||
var rightVal = this.right_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
var leftVal = this.left_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
|
||||
switch (this.operator_) {
|
||||
case ol.expression.ComparisonOp.EQ:
|
||||
case ol.expr.ComparisonOp.EQ:
|
||||
result = leftVal == rightVal;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.NEQ:
|
||||
case ol.expr.ComparisonOp.NEQ:
|
||||
result = leftVal != rightVal;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.STRICT_EQ:
|
||||
case ol.expr.ComparisonOp.STRICT_EQ:
|
||||
result = leftVal === rightVal;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.STRICT_NEQ:
|
||||
case ol.expr.ComparisonOp.STRICT_NEQ:
|
||||
result = leftVal !== rightVal;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.GT:
|
||||
case ol.expr.ComparisonOp.GT:
|
||||
result = leftVal > rightVal;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.LT:
|
||||
case ol.expr.ComparisonOp.LT:
|
||||
result = leftVal < rightVal;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.GTE:
|
||||
case ol.expr.ComparisonOp.GTE:
|
||||
result = leftVal >= rightVal;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.LTE:
|
||||
case ol.expr.ComparisonOp.LTE:
|
||||
result = leftVal <= rightVal;
|
||||
break;
|
||||
default:
|
||||
@@ -217,25 +217,25 @@ ol.expression.Comparison.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
* Get the comparison operator.
|
||||
* @return {string} The comparison operator.
|
||||
*/
|
||||
ol.expression.Comparison.prototype.getOperator = function() {
|
||||
ol.expr.Comparison.prototype.getOperator = function() {
|
||||
return this.operator_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the left expression.
|
||||
* @return {ol.expression.Expression} The left expression.
|
||||
* @return {ol.expr.Expression} The left expression.
|
||||
*/
|
||||
ol.expression.Comparison.prototype.getLeft = function() {
|
||||
ol.expr.Comparison.prototype.getLeft = function() {
|
||||
return this.left_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the right expression.
|
||||
* @return {ol.expression.Expression} The right expression.
|
||||
* @return {ol.expr.Expression} The right expression.
|
||||
*/
|
||||
ol.expression.Comparison.prototype.getRight = function() {
|
||||
ol.expr.Comparison.prototype.getRight = function() {
|
||||
return this.right_;
|
||||
};
|
||||
|
||||
@@ -245,10 +245,10 @@ ol.expression.Comparison.prototype.getRight = function() {
|
||||
* An identifier expression (e.g. `foo`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {string} name An identifier name.
|
||||
*/
|
||||
ol.expression.Identifier = function(name) {
|
||||
ol.expr.Identifier = function(name) {
|
||||
|
||||
/**
|
||||
* @type {string}
|
||||
@@ -257,13 +257,13 @@ ol.expression.Identifier = function(name) {
|
||||
this.name_ = name;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Identifier, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Identifier, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Identifier.prototype.evaluate = function(opt_scope) {
|
||||
ol.expr.Identifier.prototype.evaluate = function(opt_scope) {
|
||||
if (!goog.isDefAndNotNull(opt_scope)) {
|
||||
throw new Error('Attempt to evaluate identifier with no scope');
|
||||
}
|
||||
@@ -275,7 +275,7 @@ ol.expression.Identifier.prototype.evaluate = function(opt_scope) {
|
||||
* Get the identifier name.
|
||||
* @return {string} The identifier name.
|
||||
*/
|
||||
ol.expression.Identifier.prototype.getName = function() {
|
||||
ol.expr.Identifier.prototype.getName = function() {
|
||||
return this.name_;
|
||||
};
|
||||
|
||||
@@ -285,10 +285,10 @@ ol.expression.Identifier.prototype.getName = function() {
|
||||
* A literal expression (e.g. `"chicken"`, `42`, `true`, `null`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {string|number|boolean|null} value A literal value.
|
||||
*/
|
||||
ol.expression.Literal = function(value) {
|
||||
ol.expr.Literal = function(value) {
|
||||
|
||||
/**
|
||||
* @type {string|number|boolean|null}
|
||||
@@ -297,13 +297,13 @@ ol.expression.Literal = function(value) {
|
||||
this.value_ = value;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Literal, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Literal, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Literal.prototype.evaluate = function() {
|
||||
ol.expr.Literal.prototype.evaluate = function() {
|
||||
return this.value_;
|
||||
};
|
||||
|
||||
@@ -312,7 +312,7 @@ ol.expression.Literal.prototype.evaluate = function() {
|
||||
* Get the literal value.
|
||||
* @return {string|number|boolean|null} The literal value.
|
||||
*/
|
||||
ol.expression.Literal.prototype.getValue = function() {
|
||||
ol.expr.Literal.prototype.getValue = function() {
|
||||
return this.value_;
|
||||
};
|
||||
|
||||
@@ -320,7 +320,7 @@ ol.expression.Literal.prototype.getValue = function() {
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
ol.expression.LogicalOp = {
|
||||
ol.expr.LogicalOp = {
|
||||
AND: '&&',
|
||||
OR: '||'
|
||||
};
|
||||
@@ -331,33 +331,33 @@ ol.expression.LogicalOp = {
|
||||
* A binary logical expression (e.g. `foo && bar`, `bar || "chicken"`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @param {ol.expression.LogicalOp} operator Logical operator.
|
||||
* @param {ol.expression.Expression} left Left expression.
|
||||
* @param {ol.expression.Expression} right Right expression.
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {ol.expr.LogicalOp} operator Logical operator.
|
||||
* @param {ol.expr.Expression} left Left expression.
|
||||
* @param {ol.expr.Expression} right Right expression.
|
||||
*/
|
||||
ol.expression.Logical = function(operator, left, right) {
|
||||
ol.expr.Logical = function(operator, left, right) {
|
||||
|
||||
/**
|
||||
* @type {ol.expression.LogicalOp}
|
||||
* @type {ol.expr.LogicalOp}
|
||||
* @private
|
||||
*/
|
||||
this.operator_ = operator;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.left_ = left;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.right_ = right;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Logical, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Logical, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
@@ -365,10 +365,10 @@ goog.inherits(ol.expression.Logical, ol.expression.Expression);
|
||||
* @param {string} candidate Operator to test.
|
||||
* @return {boolean} The operator is valid.
|
||||
*/
|
||||
ol.expression.Logical.isValidOp = (function() {
|
||||
ol.expr.Logical.isValidOp = (function() {
|
||||
var valid = {};
|
||||
for (var key in ol.expression.LogicalOp) {
|
||||
valid[ol.expression.LogicalOp[key]] = true;
|
||||
for (var key in ol.expr.LogicalOp) {
|
||||
valid[ol.expr.LogicalOp[key]] = true;
|
||||
}
|
||||
return function isValidOp(candidate) {
|
||||
return !!valid[candidate];
|
||||
@@ -379,15 +379,15 @@ ol.expression.Logical.isValidOp = (function() {
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Logical.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
ol.expr.Logical.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
opt_this) {
|
||||
var result;
|
||||
var rightVal = this.right_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
var leftVal = this.left_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
|
||||
if (this.operator_ === ol.expression.LogicalOp.AND) {
|
||||
if (this.operator_ === ol.expr.LogicalOp.AND) {
|
||||
result = leftVal && rightVal;
|
||||
} else if (this.operator_ === ol.expression.LogicalOp.OR) {
|
||||
} else if (this.operator_ === ol.expr.LogicalOp.OR) {
|
||||
result = leftVal || rightVal;
|
||||
} else {
|
||||
throw new Error('Unsupported logical operator: ' + this.operator_);
|
||||
@@ -400,25 +400,25 @@ ol.expression.Logical.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
* Get the logical operator.
|
||||
* @return {string} The logical operator.
|
||||
*/
|
||||
ol.expression.Logical.prototype.getOperator = function() {
|
||||
ol.expr.Logical.prototype.getOperator = function() {
|
||||
return this.operator_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the left expression.
|
||||
* @return {ol.expression.Expression} The left expression.
|
||||
* @return {ol.expr.Expression} The left expression.
|
||||
*/
|
||||
ol.expression.Logical.prototype.getLeft = function() {
|
||||
ol.expr.Logical.prototype.getLeft = function() {
|
||||
return this.left_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the right expression.
|
||||
* @return {ol.expression.Expression} The right expression.
|
||||
* @return {ol.expr.Expression} The right expression.
|
||||
*/
|
||||
ol.expression.Logical.prototype.getRight = function() {
|
||||
ol.expr.Logical.prototype.getRight = function() {
|
||||
return this.right_;
|
||||
};
|
||||
|
||||
@@ -426,7 +426,7 @@ ol.expression.Logical.prototype.getRight = function() {
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
ol.expression.MathOp = {
|
||||
ol.expr.MathOp = {
|
||||
ADD: '+',
|
||||
SUBTRACT: '-',
|
||||
MULTIPLY: '*',
|
||||
@@ -440,33 +440,33 @@ ol.expression.MathOp = {
|
||||
* A math expression (e.g. `foo + 42`, `bar % 10`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @param {ol.expression.MathOp} operator Math operator.
|
||||
* @param {ol.expression.Expression} left Left expression.
|
||||
* @param {ol.expression.Expression} right Right expression.
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {ol.expr.MathOp} operator Math operator.
|
||||
* @param {ol.expr.Expression} left Left expression.
|
||||
* @param {ol.expr.Expression} right Right expression.
|
||||
*/
|
||||
ol.expression.Math = function(operator, left, right) {
|
||||
ol.expr.Math = function(operator, left, right) {
|
||||
|
||||
/**
|
||||
* @type {ol.expression.MathOp}
|
||||
* @type {ol.expr.MathOp}
|
||||
* @private
|
||||
*/
|
||||
this.operator_ = operator;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.left_ = left;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.right_ = right;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Math, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Math, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
@@ -474,10 +474,10 @@ goog.inherits(ol.expression.Math, ol.expression.Expression);
|
||||
* @param {string} candidate Operator to test.
|
||||
* @return {boolean} The operator is valid.
|
||||
*/
|
||||
ol.expression.Math.isValidOp = (function() {
|
||||
ol.expr.Math.isValidOp = (function() {
|
||||
var valid = {};
|
||||
for (var key in ol.expression.MathOp) {
|
||||
valid[ol.expression.MathOp[key]] = true;
|
||||
for (var key in ol.expr.MathOp) {
|
||||
valid[ol.expr.MathOp[key]] = true;
|
||||
}
|
||||
return function isValidOp(candidate) {
|
||||
return !!valid[candidate];
|
||||
@@ -488,7 +488,7 @@ ol.expression.Math.isValidOp = (function() {
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Math.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
ol.expr.Math.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
var result;
|
||||
var rightVal = this.right_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
var leftVal = this.left_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
@@ -499,19 +499,19 @@ ol.expression.Math.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
*/
|
||||
|
||||
switch (this.operator_) {
|
||||
case ol.expression.MathOp.ADD:
|
||||
case ol.expr.MathOp.ADD:
|
||||
result = leftVal + rightVal;
|
||||
break;
|
||||
case ol.expression.MathOp.SUBTRACT:
|
||||
case ol.expr.MathOp.SUBTRACT:
|
||||
result = Number(leftVal) - Number(rightVal);
|
||||
break;
|
||||
case ol.expression.MathOp.MULTIPLY:
|
||||
case ol.expr.MathOp.MULTIPLY:
|
||||
result = Number(leftVal) * Number(rightVal);
|
||||
break;
|
||||
case ol.expression.MathOp.DIVIDE:
|
||||
case ol.expr.MathOp.DIVIDE:
|
||||
result = Number(leftVal) / Number(rightVal);
|
||||
break;
|
||||
case ol.expression.MathOp.MOD:
|
||||
case ol.expr.MathOp.MOD:
|
||||
result = Number(leftVal) % Number(rightVal);
|
||||
break;
|
||||
default:
|
||||
@@ -525,25 +525,25 @@ ol.expression.Math.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
* Get the math operator.
|
||||
* @return {string} The math operator.
|
||||
*/
|
||||
ol.expression.Math.prototype.getOperator = function() {
|
||||
ol.expr.Math.prototype.getOperator = function() {
|
||||
return this.operator_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the left expression.
|
||||
* @return {ol.expression.Expression} The left expression.
|
||||
* @return {ol.expr.Expression} The left expression.
|
||||
*/
|
||||
ol.expression.Math.prototype.getLeft = function() {
|
||||
ol.expr.Math.prototype.getLeft = function() {
|
||||
return this.left_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the right expression.
|
||||
* @return {ol.expression.Expression} The right expression.
|
||||
* @return {ol.expr.Expression} The right expression.
|
||||
*/
|
||||
ol.expression.Math.prototype.getRight = function() {
|
||||
ol.expr.Math.prototype.getRight = function() {
|
||||
return this.right_;
|
||||
};
|
||||
|
||||
@@ -553,33 +553,33 @@ ol.expression.Math.prototype.getRight = function() {
|
||||
* A member expression (e.g. `foo.bar`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @param {ol.expression.Expression} object An expression that resolves to an
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {ol.expr.Expression} object An expression that resolves to an
|
||||
* object.
|
||||
* @param {ol.expression.Identifier} property Identifier with name of property.
|
||||
* @param {ol.expr.Identifier} property Identifier with name of property.
|
||||
*/
|
||||
ol.expression.Member = function(object, property) {
|
||||
ol.expr.Member = function(object, property) {
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.object_ = object;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Identifier}
|
||||
* @type {ol.expr.Identifier}
|
||||
* @private
|
||||
*/
|
||||
this.property_ = property;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Member, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Member, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Member.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
ol.expr.Member.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
opt_this) {
|
||||
var obj = this.object_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
if (!goog.isObject(obj)) {
|
||||
@@ -592,18 +592,18 @@ ol.expression.Member.prototype.evaluate = function(opt_scope, opt_fns,
|
||||
|
||||
/**
|
||||
* Get the object expression.
|
||||
* @return {ol.expression.Expression} The object.
|
||||
* @return {ol.expr.Expression} The object.
|
||||
*/
|
||||
ol.expression.Member.prototype.getObject = function() {
|
||||
ol.expr.Member.prototype.getObject = function() {
|
||||
return this.object_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the property expression.
|
||||
* @return {ol.expression.Identifier} The property.
|
||||
* @return {ol.expr.Identifier} The property.
|
||||
*/
|
||||
ol.expression.Member.prototype.getProperty = function() {
|
||||
ol.expr.Member.prototype.getProperty = function() {
|
||||
return this.property_;
|
||||
};
|
||||
|
||||
@@ -613,33 +613,33 @@ ol.expression.Member.prototype.getProperty = function() {
|
||||
* A logical not expression (e.g. `!foo`).
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.expression.Expression}
|
||||
* @param {ol.expression.Expression} argument Expression to negate.
|
||||
* @extends {ol.expr.Expression}
|
||||
* @param {ol.expr.Expression} argument Expression to negate.
|
||||
*/
|
||||
ol.expression.Not = function(argument) {
|
||||
ol.expr.Not = function(argument) {
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.argument_ = argument;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.Not, ol.expression.Expression);
|
||||
goog.inherits(ol.expr.Not, ol.expr.Expression);
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.expression.Not.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
ol.expr.Not.prototype.evaluate = function(opt_scope, opt_fns, opt_this) {
|
||||
return !this.argument_.evaluate(opt_scope, opt_fns, opt_this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the argument (the negated expression).
|
||||
* @return {ol.expression.Expression} The argument.
|
||||
* @return {ol.expr.Expression} The argument.
|
||||
*/
|
||||
ol.expression.Not.prototype.getArgument = function() {
|
||||
ol.expr.Not.prototype.getArgument = function() {
|
||||
return this.argument_;
|
||||
};
|
||||
@@ -13,11 +13,11 @@
|
||||
* Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
|
||||
*/
|
||||
|
||||
goog.provide('ol.expression.Char'); // TODO: remove this - see #785
|
||||
goog.provide('ol.expression.Lexer');
|
||||
goog.provide('ol.expression.Token');
|
||||
goog.provide('ol.expression.TokenType');
|
||||
goog.provide('ol.expression.UnexpectedToken');
|
||||
goog.provide('ol.expr.Char'); // TODO: remove this - see #785
|
||||
goog.provide('ol.expr.Lexer');
|
||||
goog.provide('ol.expr.Token');
|
||||
goog.provide('ol.expr.TokenType');
|
||||
goog.provide('ol.expr.UnexpectedToken');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.debug.Error');
|
||||
@@ -26,7 +26,7 @@ goog.require('goog.debug.Error');
|
||||
/**
|
||||
* @enum {number}
|
||||
*/
|
||||
ol.expression.Char = {
|
||||
ol.expr.Char = {
|
||||
AMPERSAND: 38,
|
||||
BACKSLASH: 92,
|
||||
BANG: 33, // !
|
||||
@@ -76,7 +76,7 @@ ol.expression.Char = {
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
ol.expression.TokenType = {
|
||||
ol.expr.TokenType = {
|
||||
BOOLEAN_LITERAL: 'Boolean',
|
||||
EOF: '<end>',
|
||||
IDENTIFIER: 'Identifier',
|
||||
@@ -90,11 +90,11 @@ ol.expression.TokenType = {
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{type: (ol.expression.TokenType),
|
||||
* @typedef {{type: (ol.expr.TokenType),
|
||||
* value: (string|number|boolean|null),
|
||||
* index: (number)}}
|
||||
*/
|
||||
ol.expression.Token;
|
||||
ol.expr.Token;
|
||||
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ ol.expression.Token;
|
||||
* @constructor
|
||||
* @param {string} source Source code.
|
||||
*/
|
||||
ol.expression.Lexer = function(source) {
|
||||
ol.expr.Lexer = function(source) {
|
||||
|
||||
/**
|
||||
* Source code.
|
||||
@@ -142,11 +142,11 @@ ol.expression.Lexer = function(source) {
|
||||
* Scan the next token and throw if it isn't a punctuator that matches input.
|
||||
* @param {string} value Token value.
|
||||
*/
|
||||
ol.expression.Lexer.prototype.expect = function(value) {
|
||||
ol.expr.Lexer.prototype.expect = function(value) {
|
||||
var match = this.match(value);
|
||||
if (!match) {
|
||||
throw new ol.expression.UnexpectedToken({
|
||||
type: ol.expression.TokenType.UNKNOWN,
|
||||
throw new ol.expr.UnexpectedToken({
|
||||
type: ol.expr.TokenType.UNKNOWN,
|
||||
value: this.getCurrentChar_(),
|
||||
index: this.index_
|
||||
});
|
||||
@@ -161,7 +161,7 @@ ol.expression.Lexer.prototype.expect = function(value) {
|
||||
* @param {number} delta Delta by which the index is advanced.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.increment_ = function(delta) {
|
||||
ol.expr.Lexer.prototype.increment_ = function(delta) {
|
||||
this.index_ += delta;
|
||||
};
|
||||
|
||||
@@ -173,10 +173,10 @@ ol.expression.Lexer.prototype.increment_ = function(delta) {
|
||||
* @return {boolean} The character is a decimal digit.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isDecimalDigit_ = function(code) {
|
||||
ol.expr.Lexer.prototype.isDecimalDigit_ = function(code) {
|
||||
return (
|
||||
code >= ol.expression.Char.DIGIT_0 &&
|
||||
code <= ol.expression.Char.DIGIT_9);
|
||||
code >= ol.expr.Char.DIGIT_0 &&
|
||||
code <= ol.expr.Char.DIGIT_9);
|
||||
};
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ ol.expression.Lexer.prototype.isDecimalDigit_ = function(code) {
|
||||
* @return {boolean} The identifier is a future reserved word.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isFutureReservedWord_ = function(id) {
|
||||
ol.expr.Lexer.prototype.isFutureReservedWord_ = function(id) {
|
||||
return (
|
||||
id === 'class' ||
|
||||
id === 'enum' ||
|
||||
@@ -205,12 +205,12 @@ ol.expression.Lexer.prototype.isFutureReservedWord_ = function(id) {
|
||||
* @return {boolean} The character is a hex digit.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isHexDigit_ = function(code) {
|
||||
ol.expr.Lexer.prototype.isHexDigit_ = function(code) {
|
||||
return this.isDecimalDigit_(code) ||
|
||||
(code >= ol.expression.Char.LOWER_A &&
|
||||
code <= ol.expression.Char.LOWER_F) ||
|
||||
(code >= ol.expression.Char.UPPER_A &&
|
||||
code <= ol.expression.Char.UPPER_F);
|
||||
(code >= ol.expr.Char.LOWER_A &&
|
||||
code <= ol.expr.Char.LOWER_F) ||
|
||||
(code >= ol.expr.Char.UPPER_A &&
|
||||
code <= ol.expr.Char.UPPER_F);
|
||||
};
|
||||
|
||||
|
||||
@@ -222,10 +222,10 @@ ol.expression.Lexer.prototype.isHexDigit_ = function(code) {
|
||||
* @return {boolean} The character is a valid identifier part.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isIdentifierPart_ = function(code) {
|
||||
ol.expr.Lexer.prototype.isIdentifierPart_ = function(code) {
|
||||
return this.isIdentifierStart_(code) ||
|
||||
(code >= ol.expression.Char.DIGIT_0 &&
|
||||
code <= ol.expression.Char.DIGIT_9);
|
||||
(code >= ol.expr.Char.DIGIT_0 &&
|
||||
code <= ol.expr.Char.DIGIT_9);
|
||||
};
|
||||
|
||||
|
||||
@@ -237,20 +237,20 @@ ol.expression.Lexer.prototype.isIdentifierPart_ = function(code) {
|
||||
* @return {boolean} The character is a valid identifier start.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isIdentifierStart_ = function(code) {
|
||||
return (code === ol.expression.Char.DOLLAR) ||
|
||||
(code === ol.expression.Char.UNDERSCORE) ||
|
||||
(code >= ol.expression.Char.UPPER_A &&
|
||||
code <= ol.expression.Char.UPPER_Z) ||
|
||||
(code >= ol.expression.Char.LOWER_A &&
|
||||
code <= ol.expression.Char.LOWER_Z);
|
||||
ol.expr.Lexer.prototype.isIdentifierStart_ = function(code) {
|
||||
return (code === ol.expr.Char.DOLLAR) ||
|
||||
(code === ol.expr.Char.UNDERSCORE) ||
|
||||
(code >= ol.expr.Char.UPPER_A &&
|
||||
code <= ol.expr.Char.UPPER_Z) ||
|
||||
(code >= ol.expr.Char.LOWER_A &&
|
||||
code <= ol.expr.Char.LOWER_Z);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the given identifier is an ECMAScript keyword. These cannot
|
||||
* be used as identifiers in programs. There is no real reason these could not
|
||||
* be used in ol expressions - but they are reserved for future use.
|
||||
* be used in ol.exprs - but they are reserved for future use.
|
||||
*
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-7.6.1.1
|
||||
*
|
||||
@@ -258,7 +258,7 @@ ol.expression.Lexer.prototype.isIdentifierStart_ = function(code) {
|
||||
* @return {boolean} The identifier is a keyword.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isKeyword_ = function(id) {
|
||||
ol.expr.Lexer.prototype.isKeyword_ = function(id) {
|
||||
return (
|
||||
id === 'break' ||
|
||||
id === 'case' ||
|
||||
@@ -296,11 +296,11 @@ ol.expression.Lexer.prototype.isKeyword_ = function(id) {
|
||||
* @return {boolean} The character is a line terminator.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isLineTerminator_ = function(code) {
|
||||
return (code === ol.expression.Char.LINE_FEED) ||
|
||||
(code === ol.expression.Char.CARRIAGE_RETURN) ||
|
||||
(code === ol.expression.Char.LINE_SEPARATOR) ||
|
||||
(code === ol.expression.Char.PARAGRAPH_SEPARATOR);
|
||||
ol.expr.Lexer.prototype.isLineTerminator_ = function(code) {
|
||||
return (code === ol.expr.Char.LINE_FEED) ||
|
||||
(code === ol.expr.Char.CARRIAGE_RETURN) ||
|
||||
(code === ol.expr.Char.LINE_SEPARATOR) ||
|
||||
(code === ol.expr.Char.PARAGRAPH_SEPARATOR);
|
||||
};
|
||||
|
||||
|
||||
@@ -311,10 +311,10 @@ ol.expression.Lexer.prototype.isLineTerminator_ = function(code) {
|
||||
* @return {boolean} The character is an octal digit.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isOctalDigit_ = function(code) {
|
||||
ol.expr.Lexer.prototype.isOctalDigit_ = function(code) {
|
||||
return (
|
||||
code >= ol.expression.Char.DIGIT_0 &&
|
||||
code <= ol.expression.Char.DIGIT_7);
|
||||
code >= ol.expr.Char.DIGIT_0 &&
|
||||
code <= ol.expr.Char.DIGIT_7);
|
||||
};
|
||||
|
||||
|
||||
@@ -325,12 +325,12 @@ ol.expression.Lexer.prototype.isOctalDigit_ = function(code) {
|
||||
* @return {boolean} The character is whitespace.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.isWhitespace_ = function(code) {
|
||||
return (code === ol.expression.Char.SPACE) ||
|
||||
(code === ol.expression.Char.TAB) ||
|
||||
(code === ol.expression.Char.VERTICAL_TAB) ||
|
||||
(code === ol.expression.Char.FORM_FEED) ||
|
||||
(code === ol.expression.Char.NONBREAKING_SPACE) ||
|
||||
ol.expr.Lexer.prototype.isWhitespace_ = function(code) {
|
||||
return (code === ol.expr.Char.SPACE) ||
|
||||
(code === ol.expr.Char.TAB) ||
|
||||
(code === ol.expr.Char.VERTICAL_TAB) ||
|
||||
(code === ol.expr.Char.FORM_FEED) ||
|
||||
(code === ol.expr.Char.NONBREAKING_SPACE) ||
|
||||
(code >= 0x1680 && '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005' +
|
||||
'\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'
|
||||
.indexOf(String.fromCharCode(code)) > 0);
|
||||
@@ -344,7 +344,7 @@ ol.expression.Lexer.prototype.isWhitespace_ = function(code) {
|
||||
* @return {number} The character code.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.getCharCode_ = function(delta) {
|
||||
ol.expr.Lexer.prototype.getCharCode_ = function(delta) {
|
||||
return this.source_.charCodeAt(this.index_ + delta);
|
||||
};
|
||||
|
||||
@@ -355,7 +355,7 @@ ol.expression.Lexer.prototype.getCharCode_ = function(delta) {
|
||||
* @return {string} The current character.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.getCurrentChar_ = function() {
|
||||
ol.expr.Lexer.prototype.getCurrentChar_ = function() {
|
||||
return this.source_[this.index_];
|
||||
};
|
||||
|
||||
@@ -366,7 +366,7 @@ ol.expression.Lexer.prototype.getCurrentChar_ = function() {
|
||||
* @return {number} The current character code.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.getCurrentCharCode_ = function() {
|
||||
ol.expr.Lexer.prototype.getCurrentCharCode_ = function() {
|
||||
return this.getCharCode_(0);
|
||||
};
|
||||
|
||||
@@ -376,10 +376,10 @@ ol.expression.Lexer.prototype.getCurrentCharCode_ = function() {
|
||||
* @param {string} value Punctuator value.
|
||||
* @return {boolean} The token matches.
|
||||
*/
|
||||
ol.expression.Lexer.prototype.match = function(value) {
|
||||
ol.expr.Lexer.prototype.match = function(value) {
|
||||
var token = this.peek();
|
||||
return (
|
||||
token.type === ol.expression.TokenType.PUNCTUATOR &&
|
||||
token.type === ol.expr.TokenType.PUNCTUATOR &&
|
||||
token.value === value);
|
||||
};
|
||||
|
||||
@@ -387,28 +387,28 @@ ol.expression.Lexer.prototype.match = function(value) {
|
||||
/**
|
||||
* Scan the next token.
|
||||
*
|
||||
* @return {ol.expression.Token} Next token.
|
||||
* @return {ol.expr.Token} Next token.
|
||||
*/
|
||||
ol.expression.Lexer.prototype.next = function() {
|
||||
ol.expr.Lexer.prototype.next = function() {
|
||||
var code = this.skipWhitespace_();
|
||||
|
||||
if (this.index_ >= this.length_) {
|
||||
return {
|
||||
type: ol.expression.TokenType.EOF,
|
||||
type: ol.expr.TokenType.EOF,
|
||||
value: null,
|
||||
index: this.index_
|
||||
};
|
||||
}
|
||||
|
||||
// check for common punctuation
|
||||
if (code === ol.expression.Char.LEFT_PAREN ||
|
||||
code === ol.expression.Char.RIGHT_PAREN) {
|
||||
if (code === ol.expr.Char.LEFT_PAREN ||
|
||||
code === ol.expr.Char.RIGHT_PAREN) {
|
||||
return this.scanPunctuator_(code);
|
||||
}
|
||||
|
||||
// check for string literal
|
||||
if (code === ol.expression.Char.SINGLE_QUOTE ||
|
||||
code === ol.expression.Char.DOUBLE_QUOTE) {
|
||||
if (code === ol.expr.Char.SINGLE_QUOTE ||
|
||||
code === ol.expr.Char.DOUBLE_QUOTE) {
|
||||
return this.scanStringLiteral_(code);
|
||||
}
|
||||
|
||||
@@ -418,7 +418,7 @@ ol.expression.Lexer.prototype.next = function() {
|
||||
}
|
||||
|
||||
// check dot punctuation or decimal
|
||||
if (code === ol.expression.Char.DOT) {
|
||||
if (code === ol.expr.Char.DOT) {
|
||||
if (this.isDecimalDigit_(this.getCharCode_(1))) {
|
||||
return this.scanNumericLiteral_(code);
|
||||
}
|
||||
@@ -438,9 +438,9 @@ ol.expression.Lexer.prototype.next = function() {
|
||||
/**
|
||||
* Peek at the next token, but don't advance the index.
|
||||
*
|
||||
* @return {ol.expression.Token} The upcoming token.
|
||||
* @return {ol.expr.Token} The upcoming token.
|
||||
*/
|
||||
ol.expression.Lexer.prototype.peek = function() {
|
||||
ol.expr.Lexer.prototype.peek = function() {
|
||||
var currentIndex = this.index_;
|
||||
var token = this.next();
|
||||
this.nextIndex_ = this.index_;
|
||||
@@ -453,10 +453,10 @@ ol.expression.Lexer.prototype.peek = function() {
|
||||
* Scan hex literal as numeric token.
|
||||
*
|
||||
* @param {number} code The current character code.
|
||||
* @return {ol.expression.Token} Numeric literal token.
|
||||
* @return {ol.expr.Token} Numeric literal token.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.scanHexLiteral_ = function(code) {
|
||||
ol.expr.Lexer.prototype.scanHexLiteral_ = function(code) {
|
||||
var str = '';
|
||||
var start = this.index_ - 2;
|
||||
|
||||
@@ -470,8 +470,8 @@ ol.expression.Lexer.prototype.scanHexLiteral_ = function(code) {
|
||||
}
|
||||
|
||||
if (str.length === 0 || this.isIdentifierStart_(code)) {
|
||||
throw new ol.expression.UnexpectedToken({
|
||||
type: ol.expression.TokenType.UNKNOWN,
|
||||
throw new ol.expr.UnexpectedToken({
|
||||
type: ol.expr.TokenType.UNKNOWN,
|
||||
value: String.fromCharCode(code),
|
||||
index: this.index_
|
||||
});
|
||||
@@ -480,7 +480,7 @@ ol.expression.Lexer.prototype.scanHexLiteral_ = function(code) {
|
||||
goog.asserts.assert(!isNaN(parseInt('0x' + str, 16)), 'Valid hex: ' + str);
|
||||
|
||||
return {
|
||||
type: ol.expression.TokenType.NUMERIC_LITERAL,
|
||||
type: ol.expr.TokenType.NUMERIC_LITERAL,
|
||||
value: parseInt('0x' + str, 16),
|
||||
index: start
|
||||
};
|
||||
@@ -491,10 +491,10 @@ ol.expression.Lexer.prototype.scanHexLiteral_ = function(code) {
|
||||
* Scan identifier token.
|
||||
*
|
||||
* @param {number} code The current character code.
|
||||
* @return {ol.expression.Token} Identifier token.
|
||||
* @return {ol.expr.Token} Identifier token.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.scanIdentifier_ = function(code) {
|
||||
ol.expr.Lexer.prototype.scanIdentifier_ = function(code) {
|
||||
goog.asserts.assert(this.isIdentifierStart_(code),
|
||||
'Must be called with a valid identifier');
|
||||
|
||||
@@ -513,15 +513,15 @@ ol.expression.Lexer.prototype.scanIdentifier_ = function(code) {
|
||||
|
||||
var type;
|
||||
if (id.length === 1) {
|
||||
type = ol.expression.TokenType.IDENTIFIER;
|
||||
type = ol.expr.TokenType.IDENTIFIER;
|
||||
} else if (this.isKeyword_(id)) {
|
||||
type = ol.expression.TokenType.KEYWORD;
|
||||
type = ol.expr.TokenType.KEYWORD;
|
||||
} else if (id === 'null') {
|
||||
type = ol.expression.TokenType.NULL_LITERAL;
|
||||
type = ol.expr.TokenType.NULL_LITERAL;
|
||||
} else if (id === 'true' || id === 'false') {
|
||||
type = ol.expression.TokenType.BOOLEAN_LITERAL;
|
||||
type = ol.expr.TokenType.BOOLEAN_LITERAL;
|
||||
} else {
|
||||
type = ol.expression.TokenType.IDENTIFIER;
|
||||
type = ol.expr.TokenType.IDENTIFIER;
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -537,26 +537,26 @@ ol.expression.Lexer.prototype.scanIdentifier_ = function(code) {
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.3
|
||||
*
|
||||
* @param {number} code The current character code.
|
||||
* @return {ol.expression.Token} Numeric literal token.
|
||||
* @return {ol.expr.Token} Numeric literal token.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
ol.expr.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
goog.asserts.assert(
|
||||
code === ol.expression.Char.DOT || this.isDecimalDigit_(code),
|
||||
code === ol.expr.Char.DOT || this.isDecimalDigit_(code),
|
||||
'Valid start for numeric literal: ' + String.fromCharCode(code));
|
||||
|
||||
// start assembling numeric string
|
||||
var str = '';
|
||||
var start = this.index_;
|
||||
|
||||
if (code !== ol.expression.Char.DOT) {
|
||||
if (code !== ol.expr.Char.DOT) {
|
||||
|
||||
if (code === ol.expression.Char.DIGIT_0) {
|
||||
if (code === ol.expr.Char.DIGIT_0) {
|
||||
var nextCode = this.getCharCode_(1);
|
||||
|
||||
// hex literals start with 0X or 0x
|
||||
if (nextCode === ol.expression.Char.UPPER_X ||
|
||||
nextCode === ol.expression.Char.LOWER_X) {
|
||||
if (nextCode === ol.expr.Char.UPPER_X ||
|
||||
nextCode === ol.expr.Char.LOWER_X) {
|
||||
this.increment_(2);
|
||||
return this.scanHexLiteral_(this.getCurrentCharCode_());
|
||||
}
|
||||
@@ -569,8 +569,8 @@ ol.expression.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
|
||||
// numbers like 09 not allowed
|
||||
if (this.isDecimalDigit_(nextCode)) {
|
||||
throw new ol.expression.UnexpectedToken({
|
||||
type: ol.expression.TokenType.UNKNOWN,
|
||||
throw new ol.expr.UnexpectedToken({
|
||||
type: ol.expr.TokenType.UNKNOWN,
|
||||
value: String.fromCharCode(nextCode),
|
||||
index: this.index_
|
||||
});
|
||||
@@ -586,7 +586,7 @@ ol.expression.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
}
|
||||
|
||||
// scan fractional part
|
||||
if (code === ol.expression.Char.DOT) {
|
||||
if (code === ol.expr.Char.DOT) {
|
||||
str += String.fromCharCode(code);
|
||||
this.increment_(1);
|
||||
code = this.getCurrentCharCode_();
|
||||
@@ -600,22 +600,22 @@ ol.expression.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
}
|
||||
|
||||
// scan exponent
|
||||
if (code === ol.expression.Char.UPPER_E ||
|
||||
code === ol.expression.Char.LOWER_E) {
|
||||
if (code === ol.expr.Char.UPPER_E ||
|
||||
code === ol.expr.Char.LOWER_E) {
|
||||
str += 'E';
|
||||
this.increment_(1);
|
||||
|
||||
code = this.getCurrentCharCode_();
|
||||
if (code === ol.expression.Char.PLUS ||
|
||||
code === ol.expression.Char.MINUS) {
|
||||
if (code === ol.expr.Char.PLUS ||
|
||||
code === ol.expr.Char.MINUS) {
|
||||
str += String.fromCharCode(code);
|
||||
this.increment_(1);
|
||||
code = this.getCurrentCharCode_();
|
||||
}
|
||||
|
||||
if (!this.isDecimalDigit_(code)) {
|
||||
throw new ol.expression.UnexpectedToken({
|
||||
type: ol.expression.TokenType.UNKNOWN,
|
||||
throw new ol.expr.UnexpectedToken({
|
||||
type: ol.expr.TokenType.UNKNOWN,
|
||||
value: String.fromCharCode(code),
|
||||
index: this.index_
|
||||
});
|
||||
@@ -630,8 +630,8 @@ ol.expression.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
}
|
||||
|
||||
if (this.isIdentifierStart_(code)) {
|
||||
throw new ol.expression.UnexpectedToken({
|
||||
type: ol.expression.TokenType.UNKNOWN,
|
||||
throw new ol.expr.UnexpectedToken({
|
||||
type: ol.expr.TokenType.UNKNOWN,
|
||||
value: String.fromCharCode(code),
|
||||
index: this.index_
|
||||
});
|
||||
@@ -640,7 +640,7 @@ ol.expression.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
goog.asserts.assert(!isNaN(parseFloat(str)), 'Valid number: ' + str);
|
||||
|
||||
return {
|
||||
type: ol.expression.TokenType.NUMERIC_LITERAL,
|
||||
type: ol.expr.TokenType.NUMERIC_LITERAL,
|
||||
value: parseFloat(str),
|
||||
index: start
|
||||
};
|
||||
@@ -652,10 +652,10 @@ ol.expression.Lexer.prototype.scanNumericLiteral_ = function(code) {
|
||||
* Scan octal literal as numeric token.
|
||||
*
|
||||
* @param {number} code The current character code.
|
||||
* @return {ol.expression.Token} Numeric literal token.
|
||||
* @return {ol.expr.Token} Numeric literal token.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.scanOctalLiteral_ = function(code) {
|
||||
ol.expr.Lexer.prototype.scanOctalLiteral_ = function(code) {
|
||||
goog.asserts.assert(this.isOctalDigit_(code));
|
||||
|
||||
var str = '0' + String.fromCharCode(code);
|
||||
@@ -674,8 +674,8 @@ ol.expression.Lexer.prototype.scanOctalLiteral_ = function(code) {
|
||||
code = this.getCurrentCharCode_();
|
||||
if (this.isIdentifierStart_(code) ||
|
||||
this.isDecimalDigit_(code)) {
|
||||
throw new ol.expression.UnexpectedToken({
|
||||
type: ol.expression.TokenType.UNKNOWN,
|
||||
throw new ol.expr.UnexpectedToken({
|
||||
type: ol.expr.TokenType.UNKNOWN,
|
||||
value: String.fromCharCode(code),
|
||||
index: this.index_
|
||||
});
|
||||
@@ -684,7 +684,7 @@ ol.expression.Lexer.prototype.scanOctalLiteral_ = function(code) {
|
||||
goog.asserts.assert(!isNaN(parseInt(str, 8)), 'Valid octal: ' + str);
|
||||
|
||||
return {
|
||||
type: ol.expression.TokenType.NUMERIC_LITERAL,
|
||||
type: ol.expr.TokenType.NUMERIC_LITERAL,
|
||||
value: parseInt(str, 8),
|
||||
index: start
|
||||
};
|
||||
@@ -695,28 +695,28 @@ ol.expression.Lexer.prototype.scanOctalLiteral_ = function(code) {
|
||||
* Scan punctuator token (a subset of allowed tokens in 7.7).
|
||||
*
|
||||
* @param {number} code The current character code.
|
||||
* @return {ol.expression.Token} Punctuator token.
|
||||
* @return {ol.expr.Token} Punctuator token.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.scanPunctuator_ = function(code) {
|
||||
ol.expr.Lexer.prototype.scanPunctuator_ = function(code) {
|
||||
var start = this.index_;
|
||||
|
||||
// single char punctuation that also doesn't start longer punctuation
|
||||
// (we disallow assignment, so no += etc.)
|
||||
if (code === ol.expression.Char.DOT ||
|
||||
code === ol.expression.Char.LEFT_PAREN ||
|
||||
code === ol.expression.Char.RIGHT_PAREN ||
|
||||
code === ol.expression.Char.COMMA ||
|
||||
code === ol.expression.Char.PLUS ||
|
||||
code === ol.expression.Char.MINUS ||
|
||||
code === ol.expression.Char.STAR ||
|
||||
code === ol.expression.Char.SLASH ||
|
||||
code === ol.expression.Char.PERCENT ||
|
||||
code === ol.expression.Char.TILDE) {
|
||||
if (code === ol.expr.Char.DOT ||
|
||||
code === ol.expr.Char.LEFT_PAREN ||
|
||||
code === ol.expr.Char.RIGHT_PAREN ||
|
||||
code === ol.expr.Char.COMMA ||
|
||||
code === ol.expr.Char.PLUS ||
|
||||
code === ol.expr.Char.MINUS ||
|
||||
code === ol.expr.Char.STAR ||
|
||||
code === ol.expr.Char.SLASH ||
|
||||
code === ol.expr.Char.PERCENT ||
|
||||
code === ol.expr.Char.TILDE) {
|
||||
|
||||
this.increment_(1);
|
||||
return {
|
||||
type: ol.expression.TokenType.PUNCTUATOR,
|
||||
type: ol.expr.TokenType.PUNCTUATOR,
|
||||
value: String.fromCharCode(code),
|
||||
index: start
|
||||
};
|
||||
@@ -726,34 +726,34 @@ ol.expression.Lexer.prototype.scanPunctuator_ = function(code) {
|
||||
var nextCode = this.getCharCode_(1);
|
||||
|
||||
// assignment or comparison (and we don't allow assignment)
|
||||
if (nextCode === ol.expression.Char.EQUAL) {
|
||||
if (code === ol.expression.Char.BANG || code === ol.expression.Char.EQUAL) {
|
||||
if (nextCode === ol.expr.Char.EQUAL) {
|
||||
if (code === ol.expr.Char.BANG || code === ol.expr.Char.EQUAL) {
|
||||
// we're looking at !=, ==, !==, or ===
|
||||
this.increment_(2);
|
||||
|
||||
// check for triple
|
||||
if (this.getCurrentCharCode_() === ol.expression.Char.EQUAL) {
|
||||
if (this.getCurrentCharCode_() === ol.expr.Char.EQUAL) {
|
||||
this.increment_(1);
|
||||
return {
|
||||
type: ol.expression.TokenType.PUNCTUATOR,
|
||||
type: ol.expr.TokenType.PUNCTUATOR,
|
||||
value: String.fromCharCode(code) + '==',
|
||||
index: start
|
||||
};
|
||||
} else {
|
||||
// != or ==
|
||||
return {
|
||||
type: ol.expression.TokenType.PUNCTUATOR,
|
||||
type: ol.expr.TokenType.PUNCTUATOR,
|
||||
value: String.fromCharCode(code) + '=',
|
||||
index: start
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (code === ol.expression.Char.GREATER ||
|
||||
code === ol.expression.Char.LESS) {
|
||||
if (code === ol.expr.Char.GREATER ||
|
||||
code === ol.expr.Char.LESS) {
|
||||
this.increment_(2);
|
||||
return {
|
||||
type: ol.expression.TokenType.PUNCTUATOR,
|
||||
type: ol.expr.TokenType.PUNCTUATOR,
|
||||
value: String.fromCharCode(code) + '=',
|
||||
index: start
|
||||
};
|
||||
@@ -762,13 +762,13 @@ ol.expression.Lexer.prototype.scanPunctuator_ = function(code) {
|
||||
|
||||
// remaining 2-charcter punctuators are || and &&
|
||||
if (code === nextCode &&
|
||||
(code === ol.expression.Char.PIPE ||
|
||||
code === ol.expression.Char.AMPERSAND)) {
|
||||
(code === ol.expr.Char.PIPE ||
|
||||
code === ol.expr.Char.AMPERSAND)) {
|
||||
|
||||
this.increment_(2);
|
||||
var str = String.fromCharCode(code);
|
||||
return {
|
||||
type: ol.expression.TokenType.PUNCTUATOR,
|
||||
type: ol.expr.TokenType.PUNCTUATOR,
|
||||
value: str + str,
|
||||
index: start
|
||||
};
|
||||
@@ -778,22 +778,22 @@ ol.expression.Lexer.prototype.scanPunctuator_ = function(code) {
|
||||
// and the allowed 3-character punctuators (!==, ===) are already consumed
|
||||
|
||||
// other single character punctuators
|
||||
if (code === ol.expression.Char.GREATER ||
|
||||
code === ol.expression.Char.LESS ||
|
||||
code === ol.expression.Char.BANG ||
|
||||
code === ol.expression.Char.AMPERSAND ||
|
||||
code === ol.expression.Char.PIPE) {
|
||||
if (code === ol.expr.Char.GREATER ||
|
||||
code === ol.expr.Char.LESS ||
|
||||
code === ol.expr.Char.BANG ||
|
||||
code === ol.expr.Char.AMPERSAND ||
|
||||
code === ol.expr.Char.PIPE) {
|
||||
|
||||
this.increment_(1);
|
||||
return {
|
||||
type: ol.expression.TokenType.PUNCTUATOR,
|
||||
type: ol.expr.TokenType.PUNCTUATOR,
|
||||
value: String.fromCharCode(code),
|
||||
index: start
|
||||
};
|
||||
}
|
||||
|
||||
throw new ol.expression.UnexpectedToken({
|
||||
type: ol.expression.TokenType.UNKNOWN,
|
||||
throw new ol.expr.UnexpectedToken({
|
||||
type: ol.expr.TokenType.UNKNOWN,
|
||||
value: String.fromCharCode(code),
|
||||
index: this.index_
|
||||
});
|
||||
@@ -804,12 +804,12 @@ ol.expression.Lexer.prototype.scanPunctuator_ = function(code) {
|
||||
* Scan string literal token.
|
||||
*
|
||||
* @param {number} quote The current character code.
|
||||
* @return {ol.expression.Token} String literal token.
|
||||
* @return {ol.expr.Token} String literal token.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.scanStringLiteral_ = function(quote) {
|
||||
goog.asserts.assert(quote === ol.expression.Char.SINGLE_QUOTE ||
|
||||
quote === ol.expression.Char.DOUBLE_QUOTE,
|
||||
ol.expr.Lexer.prototype.scanStringLiteral_ = function(quote) {
|
||||
goog.asserts.assert(quote === ol.expr.Char.SINGLE_QUOTE ||
|
||||
quote === ol.expr.Char.DOUBLE_QUOTE,
|
||||
'Strings must start with a quote: ' + String.fromCharCode(quote));
|
||||
|
||||
var start = this.index_;
|
||||
@@ -825,7 +825,7 @@ ol.expression.Lexer.prototype.scanStringLiteral_ = function(quote) {
|
||||
break;
|
||||
}
|
||||
// look for escaped quote or backslash
|
||||
if (code === ol.expression.Char.BACKSLASH) {
|
||||
if (code === ol.expr.Char.BACKSLASH) {
|
||||
str += this.getCurrentChar_();
|
||||
this.increment_(1);
|
||||
} else {
|
||||
@@ -835,11 +835,11 @@ ol.expression.Lexer.prototype.scanStringLiteral_ = function(quote) {
|
||||
|
||||
if (quote !== 0) {
|
||||
// unterminated string literal
|
||||
throw new ol.expression.UnexpectedToken(this.peek());
|
||||
throw new ol.expr.UnexpectedToken(this.peek());
|
||||
}
|
||||
|
||||
return {
|
||||
type: ol.expression.TokenType.STRING_LITERAL,
|
||||
type: ol.expr.TokenType.STRING_LITERAL,
|
||||
value: str,
|
||||
index: start
|
||||
};
|
||||
@@ -849,7 +849,7 @@ ol.expression.Lexer.prototype.scanStringLiteral_ = function(quote) {
|
||||
/**
|
||||
* After peeking, skip may be called to advance the cursor without re-scanning.
|
||||
*/
|
||||
ol.expression.Lexer.prototype.skip = function() {
|
||||
ol.expr.Lexer.prototype.skip = function() {
|
||||
this.index_ = this.nextIndex_;
|
||||
};
|
||||
|
||||
@@ -859,7 +859,7 @@ ol.expression.Lexer.prototype.skip = function() {
|
||||
* @return {number} The character code of the first non-whitespace character.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Lexer.prototype.skipWhitespace_ = function() {
|
||||
ol.expr.Lexer.prototype.skipWhitespace_ = function() {
|
||||
var code = NaN;
|
||||
while (this.index_ < this.length_) {
|
||||
code = this.getCurrentCharCode_();
|
||||
@@ -876,25 +876,25 @@ ol.expression.Lexer.prototype.skipWhitespace_ = function() {
|
||||
|
||||
/**
|
||||
* Error object for unexpected tokens.
|
||||
* @param {ol.expression.Token} token The unexpected token.
|
||||
* @param {ol.expr.Token} token The unexpected token.
|
||||
* @param {string=} opt_message Custom error message.
|
||||
* @constructor
|
||||
* @extends {goog.debug.Error}
|
||||
*/
|
||||
ol.expression.UnexpectedToken = function(token, opt_message) {
|
||||
ol.expr.UnexpectedToken = function(token, opt_message) {
|
||||
var message = goog.isDef(opt_message) ? opt_message :
|
||||
'Unexpected token ' + token.value + ' at index ' + token.index;
|
||||
|
||||
goog.debug.Error.call(this, message);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Token}
|
||||
* @type {ol.expr.Token}
|
||||
*/
|
||||
this.token = token;
|
||||
|
||||
};
|
||||
goog.inherits(ol.expression.UnexpectedToken, goog.debug.Error);
|
||||
goog.inherits(ol.expr.UnexpectedToken, goog.debug.Error);
|
||||
|
||||
|
||||
/** @override */
|
||||
ol.expression.UnexpectedToken.prototype.name = 'UnexpectedToken';
|
||||
ol.expr.UnexpectedToken.prototype.name = 'UnexpectedToken';
|
||||
@@ -13,31 +13,31 @@
|
||||
* Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
|
||||
*/
|
||||
|
||||
goog.provide('ol.expression.Parser');
|
||||
goog.provide('ol.expr.Parser');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
|
||||
goog.require('ol.expression.Call');
|
||||
goog.require('ol.expression.Comparison');
|
||||
goog.require('ol.expression.ComparisonOp');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expression.Identifier');
|
||||
goog.require('ol.expression.Lexer');
|
||||
goog.require('ol.expression.Literal');
|
||||
goog.require('ol.expression.Logical');
|
||||
goog.require('ol.expression.LogicalOp');
|
||||
goog.require('ol.expression.Math');
|
||||
goog.require('ol.expression.MathOp');
|
||||
goog.require('ol.expression.Member');
|
||||
goog.require('ol.expression.Not');
|
||||
goog.require('ol.expression.Token');
|
||||
goog.require('ol.expression.TokenType');
|
||||
goog.require('ol.expression.UnexpectedToken');
|
||||
goog.require('ol.expr.Call');
|
||||
goog.require('ol.expr.Comparison');
|
||||
goog.require('ol.expr.ComparisonOp');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.expr.Identifier');
|
||||
goog.require('ol.expr.Lexer');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.expr.Logical');
|
||||
goog.require('ol.expr.LogicalOp');
|
||||
goog.require('ol.expr.Math');
|
||||
goog.require('ol.expr.MathOp');
|
||||
goog.require('ol.expr.Member');
|
||||
goog.require('ol.expr.Not');
|
||||
goog.require('ol.expr.Token');
|
||||
goog.require('ol.expr.TokenType');
|
||||
goog.require('ol.expr.UnexpectedToken');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Instances of ol.expression.Parser parse a very limited set of ECMAScript
|
||||
* Instances of ol.expr.Parser parse a very limited set of ECMAScript
|
||||
* expressions (http://www.ecma-international.org/ecma-262/5.1/#sec-11).
|
||||
*
|
||||
* - Primary Expression (11.1):
|
||||
@@ -60,50 +60,50 @@ goog.require('ol.expression.UnexpectedToken');
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
ol.expression.Parser = function() {
|
||||
ol.expr.Parser = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Determine the precedence for the given token.
|
||||
*
|
||||
* @param {ol.expression.Token} token A token.
|
||||
* @param {ol.expr.Token} token A token.
|
||||
* @return {number} The precedence for the given token. Higher gets more
|
||||
* precedence.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.binaryPrecedence_ = function(token) {
|
||||
ol.expr.Parser.prototype.binaryPrecedence_ = function(token) {
|
||||
var precedence = 0;
|
||||
if (token.type !== ol.expression.TokenType.PUNCTUATOR) {
|
||||
if (token.type !== ol.expr.TokenType.PUNCTUATOR) {
|
||||
return precedence;
|
||||
}
|
||||
|
||||
switch (token.value) {
|
||||
case ol.expression.LogicalOp.OR:
|
||||
case ol.expr.LogicalOp.OR:
|
||||
precedence = 1;
|
||||
break;
|
||||
case ol.expression.LogicalOp.AND:
|
||||
case ol.expr.LogicalOp.AND:
|
||||
precedence = 2;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.EQ:
|
||||
case ol.expression.ComparisonOp.NEQ:
|
||||
case ol.expression.ComparisonOp.STRICT_EQ:
|
||||
case ol.expression.ComparisonOp.STRICT_NEQ:
|
||||
case ol.expr.ComparisonOp.EQ:
|
||||
case ol.expr.ComparisonOp.NEQ:
|
||||
case ol.expr.ComparisonOp.STRICT_EQ:
|
||||
case ol.expr.ComparisonOp.STRICT_NEQ:
|
||||
precedence = 3;
|
||||
break;
|
||||
case ol.expression.ComparisonOp.GT:
|
||||
case ol.expression.ComparisonOp.LT:
|
||||
case ol.expression.ComparisonOp.GTE:
|
||||
case ol.expression.ComparisonOp.LTE:
|
||||
case ol.expr.ComparisonOp.GT:
|
||||
case ol.expr.ComparisonOp.LT:
|
||||
case ol.expr.ComparisonOp.GTE:
|
||||
case ol.expr.ComparisonOp.LTE:
|
||||
precedence = 4;
|
||||
break;
|
||||
case ol.expression.MathOp.ADD:
|
||||
case ol.expression.MathOp.SUBTRACT:
|
||||
case ol.expr.MathOp.ADD:
|
||||
case ol.expr.MathOp.SUBTRACT:
|
||||
precedence = 5;
|
||||
break;
|
||||
case ol.expression.MathOp.MULTIPLY:
|
||||
case ol.expression.MathOp.DIVIDE:
|
||||
case ol.expression.MathOp.MOD:
|
||||
case ol.expr.MathOp.MULTIPLY:
|
||||
case ol.expr.MathOp.DIVIDE:
|
||||
case ol.expr.MathOp.MOD:
|
||||
precedence = 6;
|
||||
break;
|
||||
default:
|
||||
@@ -119,25 +119,25 @@ ol.expression.Parser.prototype.binaryPrecedence_ = function(token) {
|
||||
* Create a binary expression.
|
||||
*
|
||||
* @param {string} operator Operator.
|
||||
* @param {ol.expression.Expression} left Left expression.
|
||||
* @param {ol.expression.Expression} right Right expression.
|
||||
* @return {ol.expression.Expression} The expression.
|
||||
* @param {ol.expr.Expression} left Left expression.
|
||||
* @param {ol.expr.Expression} right Right expression.
|
||||
* @return {ol.expr.Expression} The expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.createBinaryExpression_ = function(operator,
|
||||
ol.expr.Parser.prototype.createBinaryExpression_ = function(operator,
|
||||
left, right) {
|
||||
var expr;
|
||||
if (ol.expression.Comparison.isValidOp(operator)) {
|
||||
expr = new ol.expression.Comparison(
|
||||
/** @type {ol.expression.ComparisonOp.<string>} */ (operator),
|
||||
if (ol.expr.Comparison.isValidOp(operator)) {
|
||||
expr = new ol.expr.Comparison(
|
||||
/** @type {ol.expr.ComparisonOp.<string>} */ (operator),
|
||||
left, right);
|
||||
} else if (ol.expression.Logical.isValidOp(operator)) {
|
||||
expr = new ol.expression.Logical(
|
||||
/** @type {ol.expression.LogicalOp.<string>} */ (operator),
|
||||
} else if (ol.expr.Logical.isValidOp(operator)) {
|
||||
expr = new ol.expr.Logical(
|
||||
/** @type {ol.expr.LogicalOp.<string>} */ (operator),
|
||||
left, right);
|
||||
} else if (ol.expression.Math.isValidOp(operator)) {
|
||||
expr = new ol.expression.Math(
|
||||
/** @type {ol.expression.MathOp.<string>} */ (operator),
|
||||
} else if (ol.expr.Math.isValidOp(operator)) {
|
||||
expr = new ol.expr.Math(
|
||||
/** @type {ol.expr.MathOp.<string>} */ (operator),
|
||||
left, right);
|
||||
} else {
|
||||
throw new Error('Unsupported binary operator: ' + operator);
|
||||
@@ -149,13 +149,13 @@ ol.expression.Parser.prototype.createBinaryExpression_ = function(operator,
|
||||
/**
|
||||
* Create a call expression.
|
||||
*
|
||||
* @param {ol.expression.Expression} callee Expression for function.
|
||||
* @param {Array.<ol.expression.Expression>} args Arguments array.
|
||||
* @return {ol.expression.Call} Call expression.
|
||||
* @param {ol.expr.Expression} callee Expression for function.
|
||||
* @param {Array.<ol.expr.Expression>} args Arguments array.
|
||||
* @return {ol.expr.Call} Call expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.createCallExpression_ = function(callee, args) {
|
||||
return new ol.expression.Call(callee, args);
|
||||
ol.expr.Parser.prototype.createCallExpression_ = function(callee, args) {
|
||||
return new ol.expr.Call(callee, args);
|
||||
};
|
||||
|
||||
|
||||
@@ -163,11 +163,11 @@ ol.expression.Parser.prototype.createCallExpression_ = function(callee, args) {
|
||||
* Create an identifier expression.
|
||||
*
|
||||
* @param {string} name Identifier name.
|
||||
* @return {ol.expression.Identifier} Identifier expression.
|
||||
* @return {ol.expr.Identifier} Identifier expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.createIdentifier_ = function(name) {
|
||||
return new ol.expression.Identifier(name);
|
||||
ol.expr.Parser.prototype.createIdentifier_ = function(name) {
|
||||
return new ol.expr.Identifier(name);
|
||||
};
|
||||
|
||||
|
||||
@@ -175,26 +175,26 @@ ol.expression.Parser.prototype.createIdentifier_ = function(name) {
|
||||
* Create a literal expression.
|
||||
*
|
||||
* @param {string|number|boolean|null} value Literal value.
|
||||
* @return {ol.expression.Literal} The literal expression.
|
||||
* @return {ol.expr.Literal} The literal expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.createLiteral_ = function(value) {
|
||||
return new ol.expression.Literal(value);
|
||||
ol.expr.Parser.prototype.createLiteral_ = function(value) {
|
||||
return new ol.expr.Literal(value);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Create a member expression.
|
||||
*
|
||||
* // TODO: make exp {ol.expression.Member|ol.expression.Identifier}
|
||||
* @param {ol.expression.Expression} object Expression.
|
||||
* @param {ol.expression.Identifier} property Member name.
|
||||
* @return {ol.expression.Member} The member expression.
|
||||
* // TODO: make exp {ol.expr.Member|ol.expr.Identifier}
|
||||
* @param {ol.expr.Expression} object Expression.
|
||||
* @param {ol.expr.Identifier} property Member name.
|
||||
* @return {ol.expr.Member} The member expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.createMemberExpression_ = function(object,
|
||||
ol.expr.Parser.prototype.createMemberExpression_ = function(object,
|
||||
property) {
|
||||
return new ol.expression.Member(object, property);
|
||||
return new ol.expr.Member(object, property);
|
||||
};
|
||||
|
||||
|
||||
@@ -203,18 +203,18 @@ ol.expression.Parser.prototype.createMemberExpression_ = function(object,
|
||||
* "!". For +/-, we apply the operator to literal expressions and return
|
||||
* another literal.
|
||||
*
|
||||
* @param {ol.expression.Token} op Operator.
|
||||
* @param {ol.expression.Expression} argument Expression.
|
||||
* @return {ol.expression.Expression} The unary expression.
|
||||
* @param {ol.expr.Token} op Operator.
|
||||
* @param {ol.expr.Expression} argument Expression.
|
||||
* @return {ol.expr.Expression} The unary expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.createUnaryExpression_ = function(op, argument) {
|
||||
ol.expr.Parser.prototype.createUnaryExpression_ = function(op, argument) {
|
||||
goog.asserts.assert(op.value === '!' || op.value === '+' || op.value === '-');
|
||||
var expr;
|
||||
if (op.value === '!') {
|
||||
expr = new ol.expression.Not(argument);
|
||||
} else if (!(argument instanceof ol.expression.Literal)) {
|
||||
throw new ol.expression.UnexpectedToken(op);
|
||||
expr = new ol.expr.Not(argument);
|
||||
} else if (!(argument instanceof ol.expr.Literal)) {
|
||||
throw new ol.expr.UnexpectedToken(op);
|
||||
} else {
|
||||
// we've got +/- literal
|
||||
if (op.value === '+') {
|
||||
@@ -233,14 +233,14 @@ ol.expression.Parser.prototype.createUnaryExpression_ = function(op, argument) {
|
||||
* Parse an expression.
|
||||
*
|
||||
* @param {string} source Expression source.
|
||||
* @return {ol.expression.Expression} Expression.
|
||||
* @return {ol.expr.Expression} Expression.
|
||||
*/
|
||||
ol.expression.Parser.prototype.parse = function(source) {
|
||||
var lexer = new ol.expression.Lexer(source);
|
||||
ol.expr.Parser.prototype.parse = function(source) {
|
||||
var lexer = new ol.expr.Lexer(source);
|
||||
var expr = this.parseExpression_(lexer);
|
||||
var token = lexer.peek();
|
||||
if (token.type !== ol.expression.TokenType.EOF) {
|
||||
throw new ol.expression.UnexpectedToken(token);
|
||||
if (token.type !== ol.expr.TokenType.EOF) {
|
||||
throw new ol.expr.UnexpectedToken(token);
|
||||
}
|
||||
return expr;
|
||||
};
|
||||
@@ -250,11 +250,11 @@ ol.expression.Parser.prototype.parse = function(source) {
|
||||
* Parse call arguments
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11.2.4
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {Array.<ol.expression.Expression>} Arguments.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {Array.<ol.expr.Expression>} Arguments.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parseArguments_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parseArguments_ = function(lexer) {
|
||||
var args = [];
|
||||
|
||||
lexer.expect('(');
|
||||
@@ -292,11 +292,11 @@ ol.expression.Parser.prototype.parseArguments_ = function(lexer) {
|
||||
* - Binary Logical Operators (`&&`, `||`)
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11.11
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {ol.expression.Expression} Expression.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {ol.expr.Expression} Expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parseBinaryExpression_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parseBinaryExpression_ = function(lexer) {
|
||||
var left = this.parseUnaryExpression_(lexer);
|
||||
|
||||
var operator = lexer.peek();
|
||||
@@ -343,11 +343,11 @@ ol.expression.Parser.prototype.parseBinaryExpression_ = function(lexer) {
|
||||
* Parse a group expression.
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11.1.6
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {ol.expression.Expression} Expression.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {ol.expr.Expression} Expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parseGroupExpression_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parseGroupExpression_ = function(lexer) {
|
||||
lexer.expect('(');
|
||||
var expr = this.parseExpression_(lexer);
|
||||
lexer.expect(')');
|
||||
@@ -360,18 +360,18 @@ ol.expression.Parser.prototype.parseGroupExpression_ = function(lexer) {
|
||||
* and Call Expressions.
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11.2
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {ol.expression.Expression} Expression.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {ol.expr.Expression} Expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parseLeftHandSideExpression_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parseLeftHandSideExpression_ = function(lexer) {
|
||||
var expr = this.parsePrimaryExpression_(lexer);
|
||||
var token = lexer.peek();
|
||||
if (token.value === '(') {
|
||||
// only allow calls on identifiers (e.g. `foo()` not `foo.bar()`)
|
||||
if (!(expr instanceof ol.expression.Identifier)) {
|
||||
if (!(expr instanceof ol.expr.Identifier)) {
|
||||
// TODO: more helpful error messages for restricted syntax
|
||||
throw new ol.expression.UnexpectedToken(token);
|
||||
throw new ol.expr.UnexpectedToken(token);
|
||||
}
|
||||
var args = this.parseArguments_(lexer);
|
||||
expr = this.createCallExpression_(expr, args);
|
||||
@@ -391,19 +391,19 @@ ol.expression.Parser.prototype.parseLeftHandSideExpression_ = function(lexer) {
|
||||
* Parse non-computed member.
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11.2
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {ol.expression.Identifier} Expression.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {ol.expr.Identifier} Expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parseNonComputedMember_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parseNonComputedMember_ = function(lexer) {
|
||||
lexer.expect('.');
|
||||
|
||||
var token = lexer.next();
|
||||
if (token.type !== ol.expression.TokenType.IDENTIFIER &&
|
||||
token.type !== ol.expression.TokenType.KEYWORD &&
|
||||
token.type !== ol.expression.TokenType.BOOLEAN_LITERAL &&
|
||||
token.type !== ol.expression.TokenType.NULL_LITERAL) {
|
||||
throw new ol.expression.UnexpectedToken(token);
|
||||
if (token.type !== ol.expr.TokenType.IDENTIFIER &&
|
||||
token.type !== ol.expr.TokenType.KEYWORD &&
|
||||
token.type !== ol.expr.TokenType.BOOLEAN_LITERAL &&
|
||||
token.type !== ol.expr.TokenType.NULL_LITERAL) {
|
||||
throw new ol.expr.UnexpectedToken(token);
|
||||
}
|
||||
|
||||
return this.createIdentifier_(String(token.value));
|
||||
@@ -414,11 +414,11 @@ ol.expression.Parser.prototype.parseNonComputedMember_ = function(lexer) {
|
||||
* Parse primary expression.
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11.1
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {ol.expression.Expression} Expression.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {ol.expr.Expression} Expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parsePrimaryExpression_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parsePrimaryExpression_ = function(lexer) {
|
||||
var token = lexer.peek();
|
||||
if (token.value === '(') {
|
||||
return this.parseGroupExpression_(lexer);
|
||||
@@ -426,19 +426,19 @@ ol.expression.Parser.prototype.parsePrimaryExpression_ = function(lexer) {
|
||||
lexer.skip();
|
||||
var expr;
|
||||
var type = token.type;
|
||||
if (type === ol.expression.TokenType.IDENTIFIER) {
|
||||
if (type === ol.expr.TokenType.IDENTIFIER) {
|
||||
expr = this.createIdentifier_(/** @type {string} */ (token.value));
|
||||
} else if (type === ol.expression.TokenType.STRING_LITERAL ||
|
||||
type === ol.expression.TokenType.NUMERIC_LITERAL) {
|
||||
} else if (type === ol.expr.TokenType.STRING_LITERAL ||
|
||||
type === ol.expr.TokenType.NUMERIC_LITERAL) {
|
||||
// numeric and string literals are already the correct type
|
||||
expr = this.createLiteral_(token.value);
|
||||
} else if (type === ol.expression.TokenType.BOOLEAN_LITERAL) {
|
||||
} else if (type === ol.expr.TokenType.BOOLEAN_LITERAL) {
|
||||
// because booleans are valid member properties, tokens are still string
|
||||
expr = this.createLiteral_(token.value === 'true');
|
||||
} else if (type === ol.expression.TokenType.NULL_LITERAL) {
|
||||
} else if (type === ol.expr.TokenType.NULL_LITERAL) {
|
||||
expr = this.createLiteral_(null);
|
||||
} else {
|
||||
throw new ol.expression.UnexpectedToken(token);
|
||||
throw new ol.expr.UnexpectedToken(token);
|
||||
}
|
||||
return expr;
|
||||
};
|
||||
@@ -448,14 +448,14 @@ ol.expression.Parser.prototype.parsePrimaryExpression_ = function(lexer) {
|
||||
* Parse expression with a unary operator. Limited to logical not operator.
|
||||
* http://www.ecma-international.org/ecma-262/5.1/#sec-11.4
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {ol.expression.Expression} Expression.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {ol.expr.Expression} Expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parseUnaryExpression_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parseUnaryExpression_ = function(lexer) {
|
||||
var expr;
|
||||
var operator = lexer.peek();
|
||||
if (operator.type !== ol.expression.TokenType.PUNCTUATOR) {
|
||||
if (operator.type !== ol.expr.TokenType.PUNCTUATOR) {
|
||||
expr = this.parseLeftHandSideExpression_(lexer);
|
||||
} else if (operator.value === '!' || operator.value === '-' ||
|
||||
operator.value === '+') {
|
||||
@@ -472,10 +472,10 @@ ol.expression.Parser.prototype.parseUnaryExpression_ = function(lexer) {
|
||||
/**
|
||||
* Parse an expression.
|
||||
*
|
||||
* @param {ol.expression.Lexer} lexer Lexer.
|
||||
* @return {ol.expression.Expression} Expression.
|
||||
* @param {ol.expr.Lexer} lexer Lexer.
|
||||
* @return {ol.expr.Expression} Expression.
|
||||
* @private
|
||||
*/
|
||||
ol.expression.Parser.prototype.parseExpression_ = function(lexer) {
|
||||
ol.expr.Parser.prototype.parseExpression_ = function(lexer) {
|
||||
return this.parseBinaryExpression_(lexer);
|
||||
};
|
||||
@@ -1,3 +0,0 @@
|
||||
/**
|
||||
* @namespace ol.expression
|
||||
*/
|
||||
@@ -1,2 +0,0 @@
|
||||
@exportSymbol ol.expression.parse
|
||||
@exportSymbol ol.expression.register
|
||||
@@ -5,10 +5,10 @@ goog.require('goog.asserts');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.expression');
|
||||
goog.require('ol.expression.Literal');
|
||||
goog.require('ol.expression.Logical');
|
||||
goog.require('ol.expression.LogicalOp');
|
||||
goog.require('ol.expr');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.expr.Logical');
|
||||
goog.require('ol.expr.LogicalOp');
|
||||
goog.require('ol.geom.GeometryType');
|
||||
goog.require('ol.geom.SharedVertices');
|
||||
goog.require('ol.layer.Layer');
|
||||
@@ -83,7 +83,7 @@ ol.layer.FeatureCache.prototype.add = function(feature) {
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.expression.Expression=} opt_expr Expression for filtering.
|
||||
* @param {ol.expr.Expression=} opt_expr Expression for filtering.
|
||||
* @return {Object.<string, ol.Feature>} Object of features, keyed by id.
|
||||
*/
|
||||
ol.layer.FeatureCache.prototype.getFeaturesObject = function(opt_expr) {
|
||||
@@ -92,48 +92,48 @@ ol.layer.FeatureCache.prototype.getFeaturesObject = function(opt_expr) {
|
||||
features = this.idLookup_;
|
||||
} else {
|
||||
// check for geometryType or extent expression
|
||||
var name = ol.expression.isLibCall(opt_expr);
|
||||
var name = ol.expr.isLibCall(opt_expr);
|
||||
if (name === 'geometryType') {
|
||||
var args = /** @type {ol.expression.Call} */ (opt_expr).getArgs();
|
||||
var args = /** @type {ol.expr.Call} */ (opt_expr).getArgs();
|
||||
goog.asserts.assert(args.length === 1);
|
||||
goog.asserts.assert(args[0] instanceof ol.expression.Literal);
|
||||
var type = /** @type {ol.expression.Literal } */ (args[0]).evaluate();
|
||||
goog.asserts.assert(args[0] instanceof ol.expr.Literal);
|
||||
var type = /** @type {ol.expr.Literal } */ (args[0]).evaluate();
|
||||
goog.asserts.assertString(type);
|
||||
features = this.geometryTypeIndex_[type];
|
||||
} else if (name === 'extent') {
|
||||
var args = /** @type {ol.expression.Call} */ (opt_expr).getArgs();
|
||||
var args = /** @type {ol.expr.Call} */ (opt_expr).getArgs();
|
||||
goog.asserts.assert(args.length === 4);
|
||||
var extent = [];
|
||||
for (var i = 0; i < 4; ++i) {
|
||||
goog.asserts.assert(args[i] instanceof ol.expression.Literal);
|
||||
extent[i] = /** @type {ol.expression.Literal} */ (args[i]).evaluate();
|
||||
goog.asserts.assert(args[i] instanceof ol.expr.Literal);
|
||||
extent[i] = /** @type {ol.expr.Literal} */ (args[i]).evaluate();
|
||||
goog.asserts.assertNumber(extent[i]);
|
||||
}
|
||||
features = this.rTree_.searchReturningObject(extent);
|
||||
} else {
|
||||
// not a call expression, check logical
|
||||
if (opt_expr instanceof ol.expression.Logical) {
|
||||
var op = /** @type {ol.expression.Logical} */ (opt_expr).getOperator();
|
||||
if (op === ol.expression.LogicalOp.AND) {
|
||||
if (opt_expr instanceof ol.expr.Logical) {
|
||||
var op = /** @type {ol.expr.Logical} */ (opt_expr).getOperator();
|
||||
if (op === ol.expr.LogicalOp.AND) {
|
||||
var expressions = [opt_expr.getLeft(), opt_expr.getRight()];
|
||||
var expr, args, type, extent;
|
||||
for (var i = 0; i <= 1; ++i) {
|
||||
expr = expressions[i];
|
||||
name = ol.expression.isLibCall(expr);
|
||||
name = ol.expr.isLibCall(expr);
|
||||
if (name === 'geometryType') {
|
||||
args = /** @type {ol.expression.Call} */ (expr).getArgs();
|
||||
args = /** @type {ol.expr.Call} */ (expr).getArgs();
|
||||
goog.asserts.assert(args.length === 1);
|
||||
goog.asserts.assert(args[0] instanceof ol.expression.Literal);
|
||||
type = /** @type {ol.expression.Literal } */ (args[0]).evaluate();
|
||||
goog.asserts.assert(args[0] instanceof ol.expr.Literal);
|
||||
type = /** @type {ol.expr.Literal } */ (args[0]).evaluate();
|
||||
goog.asserts.assertString(type);
|
||||
} else if (name === 'extent') {
|
||||
args = /** @type {ol.expression.Call} */ (expr).getArgs();
|
||||
args = /** @type {ol.expr.Call} */ (expr).getArgs();
|
||||
goog.asserts.assert(args.length === 4);
|
||||
extent = [];
|
||||
for (var j = 0; j < 4; ++j) {
|
||||
goog.asserts.assert(args[j] instanceof ol.expression.Literal);
|
||||
goog.asserts.assert(args[j] instanceof ol.expr.Literal);
|
||||
extent[j] =
|
||||
/** @type {ol.expression.Literal} */ (args[j]).evaluate();
|
||||
/** @type {ol.expr.Literal} */ (args[j]).evaluate();
|
||||
goog.asserts.assertNumber(extent[j]);
|
||||
}
|
||||
}
|
||||
@@ -152,7 +152,7 @@ ol.layer.FeatureCache.prototype.getFeaturesObject = function(opt_expr) {
|
||||
features = {};
|
||||
for (i in candidates) {
|
||||
feature = candidates[i];
|
||||
if (ol.expression.evaluateFeature(opt_expr, feature)) {
|
||||
if (ol.expr.evaluateFeature(opt_expr, feature)) {
|
||||
features[i] = feature;
|
||||
}
|
||||
}
|
||||
@@ -278,7 +278,7 @@ ol.layer.Vector.prototype.getVectorSource = function() {
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.expression.Expression=} opt_expr Expression for filtering.
|
||||
* @param {ol.expr.Expression=} opt_expr Expression for filtering.
|
||||
* @return {Array.<ol.Feature>} Array of features.
|
||||
*/
|
||||
ol.layer.Vector.prototype.getFeatures = function(opt_expr) {
|
||||
@@ -288,7 +288,7 @@ ol.layer.Vector.prototype.getFeatures = function(opt_expr) {
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.expression.Expression=} opt_expr Expression for filtering.
|
||||
* @param {ol.expr.Expression=} opt_expr Expression for filtering.
|
||||
* @return {Object.<string, ol.Feature>} Features.
|
||||
*/
|
||||
ol.layer.Vector.prototype.getFeaturesObject = function(opt_expr) {
|
||||
|
||||
@@ -3,9 +3,9 @@ goog.provide('ol.style.IconLiteral');
|
||||
goog.provide('ol.style.IconType');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.expression');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expression.Literal');
|
||||
goog.require('ol.expr');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.style.Point');
|
||||
goog.require('ol.style.PointLiteral');
|
||||
|
||||
@@ -70,47 +70,47 @@ ol.style.Icon = function(options) {
|
||||
goog.asserts.assert(options.url, 'url must be set');
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.url_ = (options.url instanceof ol.expression.Expression) ?
|
||||
options.url : new ol.expression.Literal(options.url);
|
||||
this.url_ = (options.url instanceof ol.expr.Expression) ?
|
||||
options.url : new ol.expr.Literal(options.url);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.width_ = !goog.isDef(options.width) ?
|
||||
null :
|
||||
(options.width instanceof ol.expression.Expression) ?
|
||||
options.width : new ol.expression.Literal(options.width);
|
||||
(options.width instanceof ol.expr.Expression) ?
|
||||
options.width : new ol.expr.Literal(options.width);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.height_ = !goog.isDef(options.height) ?
|
||||
null :
|
||||
(options.height instanceof ol.expression.Expression) ?
|
||||
options.height : new ol.expression.Literal(options.height);
|
||||
(options.height instanceof ol.expr.Expression) ?
|
||||
options.height : new ol.expr.Literal(options.height);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.opacity_ = !goog.isDef(options.opacity) ?
|
||||
new ol.expression.Literal(ol.style.IconDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expression.Expression) ?
|
||||
options.opacity : new ol.expression.Literal(options.opacity);
|
||||
new ol.expr.Literal(ol.style.IconDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expr.Expression) ?
|
||||
options.opacity : new ol.expr.Literal(options.opacity);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.rotation_ = !goog.isDef(options.rotation) ?
|
||||
new ol.expression.Literal(ol.style.IconDefaults.rotation) :
|
||||
(options.rotation instanceof ol.expression.Expression) ?
|
||||
options.rotation : new ol.expression.Literal(options.rotation);
|
||||
new ol.expr.Literal(ol.style.IconDefaults.rotation) :
|
||||
(options.rotation instanceof ol.expr.Expression) ?
|
||||
options.rotation : new ol.expr.Literal(options.rotation);
|
||||
|
||||
};
|
||||
|
||||
@@ -121,26 +121,26 @@ ol.style.Icon = function(options) {
|
||||
*/
|
||||
ol.style.Icon.prototype.createLiteral = function(opt_feature) {
|
||||
|
||||
var url = ol.expression.evaluateFeature(this.url_, opt_feature);
|
||||
var url = ol.expr.evaluateFeature(this.url_, opt_feature);
|
||||
goog.asserts.assertString(url, 'url must be a string');
|
||||
goog.asserts.assert(url != '#', 'url must not be "#"');
|
||||
|
||||
var width;
|
||||
if (!goog.isNull(this.width_)) {
|
||||
width = ol.expression.evaluateFeature(this.width_, opt_feature);
|
||||
width = ol.expr.evaluateFeature(this.width_, opt_feature);
|
||||
goog.asserts.assertNumber(width, 'width must be a number');
|
||||
}
|
||||
|
||||
var height;
|
||||
if (!goog.isNull(this.height_)) {
|
||||
height = ol.expression.evaluateFeature(this.height_, opt_feature);
|
||||
height = ol.expr.evaluateFeature(this.height_, opt_feature);
|
||||
goog.asserts.assertNumber(height, 'height must be a number');
|
||||
}
|
||||
|
||||
var opacity = ol.expression.evaluateFeature(this.opacity_, opt_feature);
|
||||
var opacity = ol.expr.evaluateFeature(this.opacity_, opt_feature);
|
||||
goog.asserts.assertNumber(opacity, 'opacity must be a number');
|
||||
|
||||
var rotation = ol.expression.evaluateFeature(this.rotation_, opt_feature);
|
||||
var rotation = ol.expr.evaluateFeature(this.rotation_, opt_feature);
|
||||
goog.asserts.assertNumber(rotation, 'rotation must be a number');
|
||||
|
||||
return new ol.style.IconLiteral({
|
||||
|
||||
@@ -2,9 +2,9 @@ goog.provide('ol.style.Line');
|
||||
goog.provide('ol.style.LineLiteral');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.expression');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expression.Literal');
|
||||
goog.require('ol.expr');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.style.Symbolizer');
|
||||
goog.require('ol.style.SymbolizerLiteral');
|
||||
|
||||
@@ -64,31 +64,31 @@ ol.style.Line = function(options) {
|
||||
goog.base(this);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.strokeColor_ = !goog.isDef(options.strokeColor) ?
|
||||
new ol.expression.Literal(ol.style.LineDefaults.strokeColor) :
|
||||
(options.strokeColor instanceof ol.expression.Expression) ?
|
||||
options.strokeColor : new ol.expression.Literal(options.strokeColor);
|
||||
new ol.expr.Literal(ol.style.LineDefaults.strokeColor) :
|
||||
(options.strokeColor instanceof ol.expr.Expression) ?
|
||||
options.strokeColor : new ol.expr.Literal(options.strokeColor);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.strokeWidth_ = !goog.isDef(options.strokeWidth) ?
|
||||
new ol.expression.Literal(ol.style.LineDefaults.strokeWidth) :
|
||||
(options.strokeWidth instanceof ol.expression.Expression) ?
|
||||
options.strokeWidth : new ol.expression.Literal(options.strokeWidth);
|
||||
new ol.expr.Literal(ol.style.LineDefaults.strokeWidth) :
|
||||
(options.strokeWidth instanceof ol.expr.Expression) ?
|
||||
options.strokeWidth : new ol.expr.Literal(options.strokeWidth);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.opacity_ = !goog.isDef(options.opacity) ?
|
||||
new ol.expression.Literal(ol.style.LineDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expression.Expression) ?
|
||||
options.opacity : new ol.expression.Literal(options.opacity);
|
||||
new ol.expr.Literal(ol.style.LineDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expr.Expression) ?
|
||||
options.opacity : new ol.expr.Literal(options.opacity);
|
||||
|
||||
};
|
||||
goog.inherits(ol.style.Line, ol.style.Symbolizer);
|
||||
@@ -100,15 +100,15 @@ goog.inherits(ol.style.Line, ol.style.Symbolizer);
|
||||
*/
|
||||
ol.style.Line.prototype.createLiteral = function(opt_feature) {
|
||||
|
||||
var strokeColor = ol.expression.evaluateFeature(
|
||||
var strokeColor = ol.expr.evaluateFeature(
|
||||
this.strokeColor_, opt_feature);
|
||||
goog.asserts.assertString(strokeColor, 'strokeColor must be a string');
|
||||
|
||||
var strokeWidth = ol.expression.evaluateFeature(
|
||||
var strokeWidth = ol.expr.evaluateFeature(
|
||||
this.strokeWidth_, opt_feature);
|
||||
goog.asserts.assertNumber(strokeWidth, 'strokeWidth must be a number');
|
||||
|
||||
var opacity = ol.expression.evaluateFeature(this.opacity_, opt_feature);
|
||||
var opacity = ol.expr.evaluateFeature(this.opacity_, opt_feature);
|
||||
goog.asserts.assertNumber(opacity, 'opacity must be a number');
|
||||
|
||||
return new ol.style.LineLiteral({
|
||||
|
||||
@@ -2,9 +2,9 @@ goog.provide('ol.style.Polygon');
|
||||
goog.provide('ol.style.PolygonLiteral');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.expression');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expression.Literal');
|
||||
goog.require('ol.expr');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.style.Symbolizer');
|
||||
goog.require('ol.style.SymbolizerLiteral');
|
||||
|
||||
@@ -81,13 +81,13 @@ ol.style.Polygon = function(options) {
|
||||
goog.base(this);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.fillColor_ = !goog.isDefAndNotNull(options.fillColor) ?
|
||||
null :
|
||||
(options.fillColor instanceof ol.expression.Expression) ?
|
||||
options.fillColor : new ol.expression.Literal(options.fillColor);
|
||||
(options.fillColor instanceof ol.expr.Expression) ?
|
||||
options.fillColor : new ol.expr.Literal(options.fillColor);
|
||||
|
||||
// stroke handling - if any stroke property is supplied, use defaults
|
||||
var strokeColor = null,
|
||||
@@ -97,32 +97,32 @@ ol.style.Polygon = function(options) {
|
||||
goog.isDefAndNotNull(options.strokeWidth)) {
|
||||
|
||||
if (goog.isDefAndNotNull(options.strokeColor)) {
|
||||
strokeColor = (options.strokeColor instanceof ol.expression.Expression) ?
|
||||
strokeColor = (options.strokeColor instanceof ol.expr.Expression) ?
|
||||
options.strokeColor :
|
||||
new ol.expression.Literal(options.strokeColor);
|
||||
new ol.expr.Literal(options.strokeColor);
|
||||
} else {
|
||||
strokeColor = new ol.expression.Literal(
|
||||
strokeColor = new ol.expr.Literal(
|
||||
/** @type {string} */ (ol.style.PolygonDefaults.strokeColor));
|
||||
}
|
||||
|
||||
if (goog.isDefAndNotNull(options.strokeWidth)) {
|
||||
strokeWidth = (options.strokeWidth instanceof ol.expression.Expression) ?
|
||||
strokeWidth = (options.strokeWidth instanceof ol.expr.Expression) ?
|
||||
options.strokeWidth :
|
||||
new ol.expression.Literal(options.strokeWidth);
|
||||
new ol.expr.Literal(options.strokeWidth);
|
||||
} else {
|
||||
strokeWidth = new ol.expression.Literal(
|
||||
strokeWidth = new ol.expr.Literal(
|
||||
/** @type {number} */ (ol.style.PolygonDefaults.strokeWidth));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.strokeColor_ = strokeColor;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.strokeWidth_ = strokeWidth;
|
||||
@@ -133,13 +133,13 @@ ol.style.Polygon = function(options) {
|
||||
'Stroke or fill properties must be provided');
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.opacity_ = !goog.isDef(options.opacity) ?
|
||||
new ol.expression.Literal(ol.style.PolygonDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expression.Expression) ?
|
||||
options.opacity : new ol.expression.Literal(options.opacity);
|
||||
new ol.expr.Literal(ol.style.PolygonDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expr.Expression) ?
|
||||
options.opacity : new ol.expr.Literal(options.opacity);
|
||||
|
||||
};
|
||||
goog.inherits(ol.style.Polygon, ol.style.Symbolizer);
|
||||
@@ -153,19 +153,19 @@ ol.style.Polygon.prototype.createLiteral = function(opt_feature) {
|
||||
|
||||
var fillColor;
|
||||
if (!goog.isNull(this.fillColor_)) {
|
||||
fillColor = ol.expression.evaluateFeature(this.fillColor_, opt_feature);
|
||||
fillColor = ol.expr.evaluateFeature(this.fillColor_, opt_feature);
|
||||
goog.asserts.assertString(fillColor, 'fillColor must be a string');
|
||||
}
|
||||
|
||||
var strokeColor;
|
||||
if (!goog.isNull(this.strokeColor_)) {
|
||||
strokeColor = ol.expression.evaluateFeature(this.strokeColor_, opt_feature);
|
||||
strokeColor = ol.expr.evaluateFeature(this.strokeColor_, opt_feature);
|
||||
goog.asserts.assertString(strokeColor, 'strokeColor must be a string');
|
||||
}
|
||||
|
||||
var strokeWidth;
|
||||
if (!goog.isNull(this.strokeWidth_)) {
|
||||
strokeWidth = ol.expression.evaluateFeature(this.strokeWidth_, opt_feature);
|
||||
strokeWidth = ol.expr.evaluateFeature(this.strokeWidth_, opt_feature);
|
||||
goog.asserts.assertNumber(strokeWidth, 'strokeWidth must be a number');
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ ol.style.Polygon.prototype.createLiteral = function(opt_feature) {
|
||||
(goog.isDef(strokeColor) && goog.isDef(strokeWidth)),
|
||||
'either fillColor or strokeColor and strokeWidth must be defined');
|
||||
|
||||
var opacity = ol.expression.evaluateFeature(this.opacity_, opt_feature);
|
||||
var opacity = ol.expr.evaluateFeature(this.opacity_, opt_feature);
|
||||
goog.asserts.assertNumber(opacity, 'opacity must be a number');
|
||||
|
||||
return new ol.style.PolygonLiteral({
|
||||
|
||||
@@ -3,8 +3,8 @@ goog.provide('ol.style.Rule');
|
||||
goog.require('goog.asserts');
|
||||
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.expression');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expr');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.style.Symbolizer');
|
||||
|
||||
|
||||
@@ -19,15 +19,15 @@ ol.style.Rule = function(options) {
|
||||
var filter = null;
|
||||
if (goog.isDef(options.filter)) {
|
||||
if (goog.isString(options.filter)) {
|
||||
filter = ol.expression.parse(options.filter);
|
||||
filter = ol.expr.parse(options.filter);
|
||||
} else {
|
||||
goog.asserts.assert(options.filter instanceof ol.expression.Expression);
|
||||
goog.asserts.assert(options.filter instanceof ol.expr.Expression);
|
||||
filter = options.filter;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.filter_ = filter;
|
||||
@@ -48,7 +48,7 @@ ol.style.Rule = function(options) {
|
||||
*/
|
||||
ol.style.Rule.prototype.applies = function(feature) {
|
||||
return goog.isNull(this.filter_) ?
|
||||
true : !!ol.expression.evaluateFeature(this.filter_, feature);
|
||||
true : !!ol.expr.evaluateFeature(this.filter_, feature);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@ goog.provide('ol.style.ShapeLiteral');
|
||||
goog.provide('ol.style.ShapeType');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.expression');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expression.Literal');
|
||||
goog.require('ol.expr');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.style.Point');
|
||||
goog.require('ol.style.PointLiteral');
|
||||
|
||||
@@ -107,22 +107,22 @@ ol.style.Shape = function(options) {
|
||||
options.type : ol.style.ShapeDefaults.type);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.size_ = !goog.isDef(options.size) ?
|
||||
new ol.expression.Literal(ol.style.ShapeDefaults.size) :
|
||||
(options.size instanceof ol.expression.Expression) ?
|
||||
options.size : new ol.expression.Literal(options.size);
|
||||
new ol.expr.Literal(ol.style.ShapeDefaults.size) :
|
||||
(options.size instanceof ol.expr.Expression) ?
|
||||
options.size : new ol.expr.Literal(options.size);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.fillColor_ = !goog.isDefAndNotNull(options.fillColor) ?
|
||||
null :
|
||||
(options.fillColor instanceof ol.expression.Expression) ?
|
||||
options.fillColor : new ol.expression.Literal(options.fillColor);
|
||||
(options.fillColor instanceof ol.expr.Expression) ?
|
||||
options.fillColor : new ol.expr.Literal(options.fillColor);
|
||||
|
||||
// stroke handling - if any stroke property is supplied, use defaults
|
||||
var strokeColor = null,
|
||||
@@ -132,33 +132,33 @@ ol.style.Shape = function(options) {
|
||||
goog.isDefAndNotNull(options.strokeWidth)) {
|
||||
|
||||
if (goog.isDefAndNotNull(options.strokeColor)) {
|
||||
strokeColor = (options.strokeColor instanceof ol.expression.Expression) ?
|
||||
strokeColor = (options.strokeColor instanceof ol.expr.Expression) ?
|
||||
options.strokeColor :
|
||||
new ol.expression.Literal(options.strokeColor);
|
||||
new ol.expr.Literal(options.strokeColor);
|
||||
} else {
|
||||
strokeColor = new ol.expression.Literal(
|
||||
strokeColor = new ol.expr.Literal(
|
||||
/** @type {string} */ (ol.style.ShapeDefaults.strokeColor));
|
||||
}
|
||||
|
||||
if (goog.isDefAndNotNull(options.strokeWidth)) {
|
||||
strokeWidth = (options.strokeWidth instanceof ol.expression.Expression) ?
|
||||
strokeWidth = (options.strokeWidth instanceof ol.expr.Expression) ?
|
||||
options.strokeWidth :
|
||||
new ol.expression.Literal(options.strokeWidth);
|
||||
new ol.expr.Literal(options.strokeWidth);
|
||||
} else {
|
||||
strokeWidth = new ol.expression.Literal(
|
||||
strokeWidth = new ol.expr.Literal(
|
||||
/** @type {number} */ (ol.style.ShapeDefaults.strokeWidth));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.strokeColor_ = strokeColor;
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.strokeWidth_ = strokeWidth;
|
||||
@@ -169,13 +169,13 @@ ol.style.Shape = function(options) {
|
||||
'Stroke or fill properties must be provided');
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.opacity_ = !goog.isDef(options.opacity) ?
|
||||
new ol.expression.Literal(ol.style.ShapeDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expression.Expression) ?
|
||||
options.opacity : new ol.expression.Literal(options.opacity);
|
||||
new ol.expr.Literal(ol.style.ShapeDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expr.Expression) ?
|
||||
options.opacity : new ol.expr.Literal(options.opacity);
|
||||
|
||||
};
|
||||
|
||||
@@ -186,24 +186,24 @@ ol.style.Shape = function(options) {
|
||||
*/
|
||||
ol.style.Shape.prototype.createLiteral = function(opt_feature) {
|
||||
|
||||
var size = ol.expression.evaluateFeature(this.size_, opt_feature);
|
||||
var size = ol.expr.evaluateFeature(this.size_, opt_feature);
|
||||
goog.asserts.assertNumber(size, 'size must be a number');
|
||||
|
||||
var fillColor;
|
||||
if (!goog.isNull(this.fillColor_)) {
|
||||
fillColor = ol.expression.evaluateFeature(this.fillColor_, opt_feature);
|
||||
fillColor = ol.expr.evaluateFeature(this.fillColor_, opt_feature);
|
||||
goog.asserts.assertString(fillColor, 'fillColor must be a string');
|
||||
}
|
||||
|
||||
var strokeColor;
|
||||
if (!goog.isNull(this.strokeColor_)) {
|
||||
strokeColor = ol.expression.evaluateFeature(this.strokeColor_, opt_feature);
|
||||
strokeColor = ol.expr.evaluateFeature(this.strokeColor_, opt_feature);
|
||||
goog.asserts.assertString(strokeColor, 'strokeColor must be a string');
|
||||
}
|
||||
|
||||
var strokeWidth;
|
||||
if (!goog.isNull(this.strokeWidth_)) {
|
||||
strokeWidth = ol.expression.evaluateFeature(this.strokeWidth_, opt_feature);
|
||||
strokeWidth = ol.expr.evaluateFeature(this.strokeWidth_, opt_feature);
|
||||
goog.asserts.assertNumber(strokeWidth, 'strokeWidth must be a number');
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ ol.style.Shape.prototype.createLiteral = function(opt_feature) {
|
||||
(goog.isDef(strokeColor) && goog.isDef(strokeWidth)),
|
||||
'either fillColor or strokeColor and strokeWidth must be defined');
|
||||
|
||||
var opacity = ol.expression.evaluateFeature(this.opacity_, opt_feature);
|
||||
var opacity = ol.expr.evaluateFeature(this.opacity_, opt_feature);
|
||||
goog.asserts.assertNumber(opacity, 'opacity must be a number');
|
||||
|
||||
return new ol.style.ShapeLiteral({
|
||||
|
||||
@@ -2,9 +2,9 @@ goog.provide('ol.style.Text');
|
||||
goog.provide('ol.style.TextLiteral');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.expression');
|
||||
goog.require('ol.expression.Expression');
|
||||
goog.require('ol.expression.Literal');
|
||||
goog.require('ol.expr');
|
||||
goog.require('ol.expr.Expression');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.style.Symbolizer');
|
||||
goog.require('ol.style.SymbolizerLiteral');
|
||||
|
||||
@@ -71,47 +71,47 @@ ol.style.TextLiteral.prototype.equals = function(textLiteral) {
|
||||
ol.style.Text = function(options) {
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.color_ = !goog.isDef(options.color) ?
|
||||
new ol.expression.Literal(ol.style.TextDefaults.color) :
|
||||
(options.color instanceof ol.expression.Expression) ?
|
||||
options.color : new ol.expression.Literal(options.color);
|
||||
new ol.expr.Literal(ol.style.TextDefaults.color) :
|
||||
(options.color instanceof ol.expr.Expression) ?
|
||||
options.color : new ol.expr.Literal(options.color);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.fontFamily_ = !goog.isDef(options.fontFamily) ?
|
||||
new ol.expression.Literal(ol.style.TextDefaults.fontFamily) :
|
||||
(options.fontFamily instanceof ol.expression.Expression) ?
|
||||
options.fontFamily : new ol.expression.Literal(options.fontFamily);
|
||||
new ol.expr.Literal(ol.style.TextDefaults.fontFamily) :
|
||||
(options.fontFamily instanceof ol.expr.Expression) ?
|
||||
options.fontFamily : new ol.expr.Literal(options.fontFamily);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.fontSize_ = !goog.isDef(options.fontSize) ?
|
||||
new ol.expression.Literal(ol.style.TextDefaults.fontSize) :
|
||||
(options.fontSize instanceof ol.expression.Expression) ?
|
||||
options.fontSize : new ol.expression.Literal(options.fontSize);
|
||||
new ol.expr.Literal(ol.style.TextDefaults.fontSize) :
|
||||
(options.fontSize instanceof ol.expr.Expression) ?
|
||||
options.fontSize : new ol.expr.Literal(options.fontSize);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.text_ = (options.text instanceof ol.expression.Expression) ?
|
||||
options.text : new ol.expression.Literal(options.text);
|
||||
this.text_ = (options.text instanceof ol.expr.Expression) ?
|
||||
options.text : new ol.expr.Literal(options.text);
|
||||
|
||||
/**
|
||||
* @type {ol.expression.Expression}
|
||||
* @type {ol.expr.Expression}
|
||||
* @private
|
||||
*/
|
||||
this.opacity_ = !goog.isDef(options.opacity) ?
|
||||
new ol.expression.Literal(ol.style.TextDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expression.Expression) ?
|
||||
options.opacity : new ol.expression.Literal(options.opacity);
|
||||
new ol.expr.Literal(ol.style.TextDefaults.opacity) :
|
||||
(options.opacity instanceof ol.expr.Expression) ?
|
||||
options.opacity : new ol.expr.Literal(options.opacity);
|
||||
|
||||
};
|
||||
goog.inherits(ol.style.Text, ol.style.Symbolizer);
|
||||
@@ -123,19 +123,19 @@ goog.inherits(ol.style.Text, ol.style.Symbolizer);
|
||||
*/
|
||||
ol.style.Text.prototype.createLiteral = function(opt_feature) {
|
||||
|
||||
var color = ol.expression.evaluateFeature(this.color_, opt_feature);
|
||||
var color = ol.expr.evaluateFeature(this.color_, opt_feature);
|
||||
goog.asserts.assertString(color, 'color must be a string');
|
||||
|
||||
var fontFamily = ol.expression.evaluateFeature(this.fontFamily_, opt_feature);
|
||||
var fontFamily = ol.expr.evaluateFeature(this.fontFamily_, opt_feature);
|
||||
goog.asserts.assertString(fontFamily, 'fontFamily must be a string');
|
||||
|
||||
var fontSize = ol.expression.evaluateFeature(this.fontSize_, opt_feature);
|
||||
var fontSize = ol.expr.evaluateFeature(this.fontSize_, opt_feature);
|
||||
goog.asserts.assertNumber(fontSize, 'fontSize must be a number');
|
||||
|
||||
var text = ol.expression.evaluateFeature(this.text_, opt_feature);
|
||||
var text = ol.expr.evaluateFeature(this.text_, opt_feature);
|
||||
goog.asserts.assertString(text, 'text must be a string');
|
||||
|
||||
var opacity = ol.expression.evaluateFeature(this.opacity_, opt_feature);
|
||||
var opacity = ol.expr.evaluateFeature(this.opacity_, opt_feature);
|
||||
goog.asserts.assertNumber(opacity, 'opacity must be a number');
|
||||
|
||||
return new ol.style.TextLiteral({
|
||||
|
||||
Reference in New Issue
Block a user