Enum for checking built-in lib functions internally
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
goog.provide('ol.expr');
|
goog.provide('ol.expr');
|
||||||
|
goog.provide('ol.expr.functions');
|
||||||
|
|
||||||
goog.require('ol.Extent');
|
goog.require('ol.Extent');
|
||||||
goog.require('ol.Feature');
|
goog.require('ol.Feature');
|
||||||
@@ -83,11 +84,23 @@ ol.expr.isLibCall = function(expr) {
|
|||||||
* Library of well-known functions. These are available to expressions parsed
|
* Library of well-known functions. These are available to expressions parsed
|
||||||
* with `ol.expr.parse`.
|
* with `ol.expr.parse`.
|
||||||
*
|
*
|
||||||
* @type {Object}
|
* @type {Object.<string, function(...)>}
|
||||||
*/
|
*/
|
||||||
ol.expr.lib = {
|
ol.expr.lib = {};
|
||||||
|
|
||||||
/**
|
|
||||||
|
/**
|
||||||
|
* Enumeration of library function names.
|
||||||
|
*
|
||||||
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
ol.expr.functions = {
|
||||||
|
EXTENT: 'extent',
|
||||||
|
GEOMETRY_TYPE: 'geometryType'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* Determine if a feature's extent intersects the provided extent.
|
* Determine if a feature's extent intersects the provided extent.
|
||||||
* @param {number} minX Minimum x-coordinate value.
|
* @param {number} minX Minimum x-coordinate value.
|
||||||
* @param {number} maxX Maximum x-coordinate value.
|
* @param {number} maxX Maximum x-coordinate value.
|
||||||
@@ -96,7 +109,7 @@ ol.expr.lib = {
|
|||||||
* @return {boolean} The provided extent intersects the feature's extent.
|
* @return {boolean} The provided extent intersects the feature's extent.
|
||||||
* @this {ol.Feature}
|
* @this {ol.Feature}
|
||||||
*/
|
*/
|
||||||
'extent': function(minX, maxX, minY, maxY) {
|
ol.expr.lib[ol.expr.functions.EXTENT] = function(minX, maxX, minY, maxY) {
|
||||||
var intersects = false;
|
var intersects = false;
|
||||||
var geometry = this.getGeometry();
|
var geometry = this.getGeometry();
|
||||||
if (geometry) {
|
if (geometry) {
|
||||||
@@ -104,22 +117,22 @@ ol.expr.lib = {
|
|||||||
[minX, maxX, minY, maxY]);
|
[minX, maxX, minY, maxY]);
|
||||||
}
|
}
|
||||||
return intersects;
|
return intersects;
|
||||||
},
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if a feature's default geometry is of the given type.
|
* Determine if a feature's default geometry is of the given type.
|
||||||
* @param {ol.geom.GeometryType} type Geometry type.
|
* @param {ol.geom.GeometryType} type Geometry type.
|
||||||
* @return {boolean} The feature's default geometry is of the given type.
|
* @return {boolean} The feature's default geometry is of the given type.
|
||||||
* @this {ol.Feature}
|
* @this {ol.Feature}
|
||||||
*/
|
*/
|
||||||
'geometryType': function(type) {
|
ol.expr.lib[ol.expr.functions.GEOMETRY_TYPE] = function(type) {
|
||||||
var same = false;
|
var same = false;
|
||||||
var geometry = this.getGeometry();
|
var geometry = this.getGeometry();
|
||||||
if (geometry) {
|
if (geometry) {
|
||||||
same = geometry.getType() === type;
|
same = geometry.getType() === type;
|
||||||
}
|
}
|
||||||
return same;
|
return same;
|
||||||
}
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ goog.require('ol.expr');
|
|||||||
goog.require('ol.expr.Literal');
|
goog.require('ol.expr.Literal');
|
||||||
goog.require('ol.expr.Logical');
|
goog.require('ol.expr.Logical');
|
||||||
goog.require('ol.expr.LogicalOp');
|
goog.require('ol.expr.LogicalOp');
|
||||||
|
goog.require('ol.expr.functions');
|
||||||
goog.require('ol.geom.GeometryType');
|
goog.require('ol.geom.GeometryType');
|
||||||
goog.require('ol.geom.SharedVertices');
|
goog.require('ol.geom.SharedVertices');
|
||||||
goog.require('ol.layer.Layer');
|
goog.require('ol.layer.Layer');
|
||||||
@@ -93,14 +94,14 @@ ol.layer.FeatureCache.prototype.getFeaturesObject = function(opt_expr) {
|
|||||||
} else {
|
} else {
|
||||||
// check for geometryType or extent expression
|
// check for geometryType or extent expression
|
||||||
var name = ol.expr.isLibCall(opt_expr);
|
var name = ol.expr.isLibCall(opt_expr);
|
||||||
if (name === 'geometryType') {
|
if (name === ol.expr.functions.GEOMETRY_TYPE) {
|
||||||
var args = /** @type {ol.expr.Call} */ (opt_expr).getArgs();
|
var args = /** @type {ol.expr.Call} */ (opt_expr).getArgs();
|
||||||
goog.asserts.assert(args.length === 1);
|
goog.asserts.assert(args.length === 1);
|
||||||
goog.asserts.assert(args[0] instanceof ol.expr.Literal);
|
goog.asserts.assert(args[0] instanceof ol.expr.Literal);
|
||||||
var type = /** @type {ol.expr.Literal } */ (args[0]).evaluate();
|
var type = /** @type {ol.expr.Literal } */ (args[0]).evaluate();
|
||||||
goog.asserts.assertString(type);
|
goog.asserts.assertString(type);
|
||||||
features = this.geometryTypeIndex_[type];
|
features = this.geometryTypeIndex_[type];
|
||||||
} else if (name === 'extent') {
|
} else if (name === ol.expr.functions.EXTENT) {
|
||||||
var args = /** @type {ol.expr.Call} */ (opt_expr).getArgs();
|
var args = /** @type {ol.expr.Call} */ (opt_expr).getArgs();
|
||||||
goog.asserts.assert(args.length === 4);
|
goog.asserts.assert(args.length === 4);
|
||||||
var extent = [];
|
var extent = [];
|
||||||
@@ -120,13 +121,13 @@ ol.layer.FeatureCache.prototype.getFeaturesObject = function(opt_expr) {
|
|||||||
for (var i = 0; i <= 1; ++i) {
|
for (var i = 0; i <= 1; ++i) {
|
||||||
expr = expressions[i];
|
expr = expressions[i];
|
||||||
name = ol.expr.isLibCall(expr);
|
name = ol.expr.isLibCall(expr);
|
||||||
if (name === 'geometryType') {
|
if (name === ol.expr.functions.GEOMETRY_TYPE) {
|
||||||
args = /** @type {ol.expr.Call} */ (expr).getArgs();
|
args = /** @type {ol.expr.Call} */ (expr).getArgs();
|
||||||
goog.asserts.assert(args.length === 1);
|
goog.asserts.assert(args.length === 1);
|
||||||
goog.asserts.assert(args[0] instanceof ol.expr.Literal);
|
goog.asserts.assert(args[0] instanceof ol.expr.Literal);
|
||||||
type = /** @type {ol.expr.Literal } */ (args[0]).evaluate();
|
type = /** @type {ol.expr.Literal } */ (args[0]).evaluate();
|
||||||
goog.asserts.assertString(type);
|
goog.asserts.assertString(type);
|
||||||
} else if (name === 'extent') {
|
} else if (name === ol.expr.functions.EXTENT) {
|
||||||
args = /** @type {ol.expr.Call} */ (expr).getArgs();
|
args = /** @type {ol.expr.Call} */ (expr).getArgs();
|
||||||
goog.asserts.assert(args.length === 4);
|
goog.asserts.assert(args.length === 4);
|
||||||
extent = [];
|
extent = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user