Author: knopp
Date: Wed Sep 19 02:45:26 2007
New Revision: 577219
URL: http://svn.apache.org/viewvc?rev=577219&view=rev
Log:
WICKET-987
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java?rev=577219&r1=577218&r2=577219&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java
Wed Sep 19 02:45:26 2007
@@ -48,6 +48,24 @@
/** Inside a regular expression */
private final static int REG_EXP = 7;
+ private static int getPrevCount(String s, int fromIndex, char c)
+ {
+ int count = 0;
+ --fromIndex;
+ while (fromIndex >= 0)
+ {
+ if (s.charAt(fromIndex--) == c)
+ {
+ ++count;
+ }
+ else
+ {
+ break;
+ }
+ }
+ return count;
+ }
+
/**
* Removes javascript comments and whitespaces from specified string.
*
@@ -151,7 +169,9 @@
if (state == STRING_SINGLE_QUOTE)
{
- if (c == '\'' && prev != '\\')
+ // to leave a string expression we need even
(or zero) number of backslashes
+ int count = getPrevCount(original, i, '\\');
+ if (c == '\'' && count % 2 == 0)
{
state = REGULAR_TEXT;
}
@@ -161,7 +181,9 @@
if (state == STRING_DOUBLE_QUOTES)
{
- if (c == '"' && prev != '\\')
+ // to leave a string expression we need even
(or zero) number of backslashes
+ int count = getPrevCount(original, i, '\\');
+ if (c == '"' && count % 2 == 0)
{
state = REGULAR_TEXT;
}
@@ -171,7 +193,9 @@
if (state == REG_EXP)
{
- if (c == '/' && prev != '\\')
+ // to leave regular expression we need even (or
zero) number of backslashes
+ int count = getPrevCount(original, i, '\\');
+ if (c == '/' && count % 2 == 0)
{
state = REGULAR_TEXT;
}