Convenient factories for logical filters

This commit is contained in:
Tim Schaub
2013-04-07 17:37:31 -06:00
parent ceb9541031
commit 27e23cce9c
2 changed files with 84 additions and 0 deletions
+37
View File
@@ -1,5 +1,8 @@
goog.provide('ol.filter.Logical');
goog.provide('ol.filter.LogicalOperator');
goog.provide('ol.filter.and');
goog.provide('ol.filter.not');
goog.provide('ol.filter.or');
goog.require('goog.asserts');
goog.require('ol.filter.Filter');
@@ -79,3 +82,37 @@ ol.filter.LogicalOperator = {
OR: '||',
NOT: '!'
};
/**
* Create a filter that evaluates to true if any of the provided filters
* evaluate to true.
* @param {...ol.filter.Filter} var_filters Filters.
* @return {ol.filter.Logical} A logical filter.
*/
ol.filter.and = function(var_filters) {
var filters = Array.prototype.slice.call(arguments);
return new ol.filter.Logical(filters, ol.filter.LogicalOperator.AND);
};
/**
* Create a new filter that is the logical compliment of another.
* @param {ol.filter.Filter} filter The filter to negate.
* @return {ol.filter.Logical} A logical filter.
*/
ol.filter.not = function(filter) {
return new ol.filter.Logical([filter], ol.filter.LogicalOperator.NOT);
};
/**
* Create a filter that evaluates to true if all of the provided filters
* evaluate to true.
* @param {...ol.filter.Filter} var_filters Filters.
* @return {ol.filter.Logical} A logical filter.
*/
ol.filter.or = function(var_filters) {
var filters = Array.prototype.slice.call(arguments);
return new ol.filter.Logical(filters, ol.filter.LogicalOperator.OR);
};