From 43953c8efa9949a0aa58c880537bec48d2b8ccdf Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Fri, 23 Aug 2013 16:46:33 -0400 Subject: [PATCH] Call concat instead of using math op in FE expression parsing --- src/ol/parser/ogc/filter_v1.js | 12 +++--------- test/spec/ol/parser/ogc/filter_v1_0_0.test.js | 6 ++++-- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/ol/parser/ogc/filter_v1.js b/src/ol/parser/ogc/filter_v1.js index 43c13a82e4..a030b9bf78 100644 --- a/src/ol/parser/ogc/filter_v1.js +++ b/src/ol/parser/ogc/filter_v1.js @@ -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; }, diff --git a/test/spec/ol/parser/ogc/filter_v1_0_0.test.js b/test/spec/ol/parser/ogc/filter_v1_0_0.test.js index 941bc62bb6..c38c5de22e 100644 --- a/test/spec/ol/parser/ogc/filter_v1_0_0.test.js +++ b/test/spec/ol/parser/ogc/filter_v1_0_0.test.js @@ -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 = '10'; @@ -247,7 +249,7 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() { xml = '' + 'fooxbar'; 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() { 'x' + 'foo'; 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'); }); });