From 94bd37031d508845a85238a77da354f79eb56a0b Mon Sep 17 00:00:00 2001 From: Bart van den Eijnden Date: Mon, 19 Mar 2012 13:07:49 +0100 Subject: [PATCH] instead, add a trimWhitespace option to OpenLayers.String.numericIf as discussed with @ahocevar --- lib/OpenLayers/BaseTypes.js | 6 +++++- lib/OpenLayers/Format/Filter/v1.js | 6 +++--- tests/BaseTypes.html | 8 ++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/OpenLayers/BaseTypes.js b/lib/OpenLayers/BaseTypes.js index ed8650ec08..0d78335817 100644 --- a/lib/OpenLayers/BaseTypes.js +++ b/lib/OpenLayers/BaseTypes.js @@ -189,12 +189,16 @@ OpenLayers.String = { * * Parameters: * value - {String} + * trimWhitespace - {Boolean} * * Returns: * {Number|String} a Number if the passed value is a number, a String * otherwise. */ - numericIf: function(value) { + numericIf: function(value, trimWhitespace) { + if (trimWhitespace === true) { + value = value.replace(/^\s*|\s*$/g, ""); + } return OpenLayers.String.isNumeric(value) ? parseFloat(value) : value; } diff --git a/lib/OpenLayers/Format/Filter/v1.js b/lib/OpenLayers/Format/Filter/v1.js index fcbe0a49a7..851fa94755 100644 --- a/lib/OpenLayers/Format/Filter/v1.js +++ b/lib/OpenLayers/Format/Filter/v1.js @@ -180,18 +180,18 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, { }, "Literal": function(node, obj) { obj.value = OpenLayers.String.numericIf( - this.getChildValue(node).replace(this.regExes.trimSpace, "")); + this.getChildValue(node), true); }, "PropertyName": function(node, filter) { filter.property = this.getChildValue(node); }, "LowerBoundary": function(node, filter) { filter.lowerBoundary = OpenLayers.String.numericIf( - this.readers.ogc._expression.call(this, node).replace(this.regExes.trimSpace, "")); + this.readers.ogc._expression.call(this, node), true); }, "UpperBoundary": function(node, filter) { filter.upperBoundary = OpenLayers.String.numericIf( - this.readers.ogc._expression.call(this, node).replace(this.regExes.trimSpace, "")); + this.readers.ogc._expression.call(this, node), true); }, "Intersects": function(node, obj) { this.readSpatial(node, obj, OpenLayers.Filter.Spatial.INTERSECTS); diff --git a/tests/BaseTypes.html b/tests/BaseTypes.html index c264d4a54f..a8af69be2b 100644 --- a/tests/BaseTypes.html +++ b/tests/BaseTypes.html @@ -220,9 +220,10 @@ {value: " 3", expect: " 3"}, {value: "1e", expect: "1e"}, {value: "1+e", expect: "1+e"}, - {value: "1-e", expect: "1-e"} + {value: "1-e", expect: "1-e"}, + {value: " 27 ", expect: " 27 "} ]; - t.plan(cases.length); + t.plan(cases.length + 1); var func = OpenLayers.String.numericIf; var obj, val, got, exp; @@ -233,6 +234,9 @@ got = func(val); t.eq(got, exp, "'" + val + "' returns " + exp); } + + // test the trimWhitespace option + t.eq(OpenLayers.String.numericIf(" 27 ", true), 27, "if trimWhitespace is true, we expect to get a Number"); }