Call concat instead of using math op in FE expression parsing
This commit is contained in:
@@ -12,8 +12,6 @@ goog.require('ol.expr.Identifier');
|
|||||||
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.Math');
|
|
||||||
goog.require('ol.expr.MathOp');
|
|
||||||
goog.require('ol.expr.Not');
|
goog.require('ol.expr.Not');
|
||||||
goog.require('ol.expr.functions');
|
goog.require('ol.expr.functions');
|
||||||
goog.require('ol.parser.XML');
|
goog.require('ol.parser.XML');
|
||||||
@@ -64,13 +62,9 @@ ol.parser.ogc.Filter_v1 = function() {
|
|||||||
if (num === 1) {
|
if (num === 1) {
|
||||||
expr = expressions[0];
|
expr = expressions[0];
|
||||||
} else {
|
} else {
|
||||||
expr = new ol.expr.Literal('');
|
expr = new ol.expr.Call(
|
||||||
if (num > 1) {
|
new ol.expr.Identifier(ol.expr.functions.CONCAT),
|
||||||
var add = ol.expr.MathOp.ADD;
|
expressions);
|
||||||
for (var i = 0; i < num; ++i) {
|
|
||||||
expr = new ol.expr.Math(add, expr, expressions[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return expr;
|
return expr;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -235,6 +235,8 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('_expression reader', function() {
|
describe('_expression reader', function() {
|
||||||
|
var evaluate = ol.expr.evaluateFeature;
|
||||||
|
|
||||||
it('handles combined propertyname and text', function() {
|
it('handles combined propertyname and text', function() {
|
||||||
var xml = '<ogc:UpperBoundary xmlns:ogc="' +
|
var xml = '<ogc:UpperBoundary xmlns:ogc="' +
|
||||||
'http://www.opengis.net/ogc">10</ogc:UpperBoundary>';
|
'http://www.opengis.net/ogc">10</ogc:UpperBoundary>';
|
||||||
@@ -247,7 +249,7 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
|||||||
xml = '<ogc:UpperBoundary xmlns:ogc="http://www.opengis.net/ogc">' +
|
xml = '<ogc:UpperBoundary xmlns:ogc="http://www.opengis.net/ogc">' +
|
||||||
'foo<ogc:PropertyName>x</ogc:PropertyName>bar</ogc:UpperBoundary>';
|
'foo<ogc:PropertyName>x</ogc:PropertyName>bar</ogc:UpperBoundary>';
|
||||||
expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
|
expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
|
||||||
expect(expr.evaluate({x: 4})).to.eql('foo4bar');
|
expect(evaluate(expr, new ol.Feature({x: 4}))).to.eql('foo4bar');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles combined propertyname and literal', function() {
|
it('handles combined propertyname and literal', function() {
|
||||||
@@ -258,7 +260,7 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
|||||||
'<ogc:PropertyName>x</ogc:PropertyName>' +
|
'<ogc:PropertyName>x</ogc:PropertyName>' +
|
||||||
'<ogc:Literal>foo</ogc:Literal></ogc:UpperBoundary>';
|
'<ogc:Literal>foo</ogc:Literal></ogc:UpperBoundary>';
|
||||||
var expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
|
var expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
|
||||||
expect(expr.evaluate({x: 42})).to.eql('bar42foo');
|
expect(evaluate(expr, new ol.Feature({x: 42}))).to.eql('bar42foo');
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user