From 75b129191b8fd61ae3d7120c09b1e096ad59c831 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Tue, 26 Aug 2008 18:03:41 +0000 Subject: [PATCH] rule.value2regex does now unescape double escape. Patch by tcoulter. r=me (closes #1453) git-svn-id: http://svn.openlayers.org/trunk/openlayers@7866 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Filter/Comparison.js | 3 ++- tests/Filter/Comparison.html | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/OpenLayers/Filter/Comparison.js b/lib/OpenLayers/Filter/Comparison.js index 04f41a2f55..0b9e4a673a 100644 --- a/lib/OpenLayers/Filter/Comparison.js +++ b/lib/OpenLayers/Filter/Comparison.js @@ -137,13 +137,14 @@ OpenLayers.Filter.Comparison = OpenLayers.Class(OpenLayers.Filter, { return null; } + // set UMN MapServer defaults for unspecified parameters wildCard = wildCard ? wildCard : "*"; singleChar = singleChar ? singleChar : "."; escapeChar = escapeChar ? escapeChar : "!"; this.value = this.value.replace( - new RegExp("\\"+escapeChar, "g"), "\\"); + new RegExp("\\"+escapeChar+"(.|$)", "g"), "\\$1") this.value = this.value.replace( new RegExp("\\"+singleChar, "g"), "."); this.value = this.value.replace( diff --git a/tests/Filter/Comparison.html b/tests/Filter/Comparison.html index 5275ff4a7e..03e6cd4d9e 100644 --- a/tests/Filter/Comparison.html +++ b/tests/Filter/Comparison.html @@ -23,7 +23,7 @@ } function test_Comparison_value2regex(t) { - t.plan(2); + t.plan(4); var filter = new OpenLayers.Filter.Comparison({ property: "foo", @@ -35,6 +35,15 @@ filter.value = "%b.r!%!.%"; filter.value2regex("%", ".", "!"); t.eq(filter.value, ".*b.r\\%\\..*", "Regular expression with different wildcard and escape chars generated correctly."); + + filter.value = "!!"; + filter.value2regex(); + t.eq(filter.value, "\\!", "!! successfully unescaped to \\!"); + + // Big one. + filter.value = "!!c!!!d!e"; + filter.value2regex(); + t.eq(filter.value, "\\!c\\!\\d\\e", "!!c!!!d!e successfully unescaped to \\!c\\!\\d\\e"); } function test_regex2value(t) {