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.Logical');
|
||||
goog.require('ol.expr.LogicalOp');
|
||||
goog.require('ol.expr.Math');
|
||||
goog.require('ol.expr.MathOp');
|
||||
goog.require('ol.expr.Not');
|
||||
goog.require('ol.expr.functions');
|
||||
goog.require('ol.parser.XML');
|
||||
@@ -64,13 +62,9 @@ ol.parser.ogc.Filter_v1 = function() {
|
||||
if (num === 1) {
|
||||
expr = expressions[0];
|
||||
} else {
|
||||
expr = new ol.expr.Literal('');
|
||||
if (num > 1) {
|
||||
var add = ol.expr.MathOp.ADD;
|
||||
for (var i = 0; i < num; ++i) {
|
||||
expr = new ol.expr.Math(add, expr, expressions[i]);
|
||||
}
|
||||
}
|
||||
expr = new ol.expr.Call(
|
||||
new ol.expr.Identifier(ol.expr.functions.CONCAT),
|
||||
expressions);
|
||||
}
|
||||
return expr;
|
||||
},
|
||||
|
||||
@@ -235,6 +235,8 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
});
|
||||
|
||||
describe('_expression reader', function() {
|
||||
var evaluate = ol.expr.evaluateFeature;
|
||||
|
||||
it('handles combined propertyname and text', function() {
|
||||
var xml = '<ogc:UpperBoundary xmlns:ogc="' +
|
||||
'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">' +
|
||||
'foo<ogc:PropertyName>x</ogc:PropertyName>bar</ogc:UpperBoundary>';
|
||||
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() {
|
||||
@@ -258,7 +260,7 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
'<ogc:PropertyName>x</ogc:PropertyName>' +
|
||||
'<ogc:Literal>foo</ogc:Literal></ogc:UpperBoundary>';
|
||||
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