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;
 				}