You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2007/09/19 11:45:27 UTC
svn commit: r577219 -
/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java
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;
}