peterreilly 2003/05/28 08:31:07
Modified: src/main/org/apache/tools/ant/util/regexp
JakartaOroRegexp.java Jdk14RegexpRegexp.java
src/testcases/org/apache/tools/ant/filters
TokenFilterTest.java
src/etc/testcases/filters tokenfilter.xml
Log:
fix for bug 20306 - regex handling of $ in replace string
Revision Changes Path
1.10 +4 -1
ant/src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java
Index: JakartaOroRegexp.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- JakartaOroRegexp.java 10 Feb 2003 14:14:41 -0000 1.9
+++ JakartaOroRegexp.java 28 May 2003 15:31:07 -0000 1.10
@@ -76,7 +76,10 @@
StringBuffer subst = new StringBuffer();
for (int i = 0; i < argument.length(); i++) {
char c = argument.charAt(i);
- if (c == '\\') {
+ if (c == '$') {
+ subst.append('\\');
+ subst.append('$');
+ } else if (c == '\\') {
if (++i < argument.length()) {
c = argument.charAt(i);
int value = Character.digit(c, 10);
1.12 +4 -1
ant/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpRegexp.java
Index: Jdk14RegexpRegexp.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpRegexp.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Jdk14RegexpRegexp.java 10 Feb 2003 14:14:41 -0000 1.11
+++ Jdk14RegexpRegexp.java 28 May 2003 15:31:07 -0000 1.12
@@ -83,7 +83,10 @@
StringBuffer subst = new StringBuffer();
for (int i = 0; i < argument.length(); i++) {
char c = argument.charAt(i);
- if (c == '\\') {
+ if (c == '$') {
+ subst.append('\\');
+ subst.append('$');
+ } else if (c == '\\') {
if (++i < argument.length()) {
c = argument.charAt(i);
int value = Character.digit(c, 10);
1.3 +7 -1
ant/src/testcases/org/apache/tools/ant/filters/TokenFilterTest.java
Index: TokenFilterTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/filters/TokenFilterTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TokenFilterTest.java 15 Apr 2003 13:19:41 -0000 1.2
+++ TokenFilterTest.java 28 May 2003 15:31:07 -0000 1.3
@@ -77,7 +77,7 @@
}
public void tearDown() {
- //executeTarget("cleanup");
+ executeTarget("cleanup");
}
/** make sure tokenfilter exists */
@@ -147,6 +147,12 @@
assertStringContains(contents, "world world world world");
}
+ public void testHandleDollerMatch() throws IOException {
+ if (! hasRegex("testFilterReplaceRegex"))
+ return;
+ executeTarget("dollermatch");
+ }
+
public void testTrimFile() throws IOException {
String contents = getFileString(
"trimfile", "result/trimfile");
1.3 +9 -0 ant/src/etc/testcases/filters/tokenfilter.xml
Index: tokenfilter.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/filters/tokenfilter.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- tokenfilter.xml 15 Apr 2003 13:19:41 -0000 1.2
+++ tokenfilter.xml 28 May 2003 15:31:07 -0000 1.3
@@ -181,6 +181,15 @@
</concat>
</target>
+ <target name="dollermatch">
+ <concat>
+ @hello@
+ <filterchain>
+ <replaceregex pattern="@([EMAIL PROTECTED])@" replace="${\1}"/>
+ </filterchain>
+ </concat>
+ </target>
+
<!-- need to check for existance of regex -->
<target name="containsregex">
<concat destfile="result/input">