You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by al...@apache.org on 2007/06/19 18:36:14 UTC

svn commit: r548790 - /incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java

Author: almaw
Date: Tue Jun 19 09:36:13 2007
New Revision: 548790

URL: http://svn.apache.org/viewvc?view=rev&rev=548790
Log:
WICKET-501 - Back up to search for whether we're a regexp or not.

Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java?view=diff&rev=548790&r1=548789&r2=548790
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/string/JavascriptStripper.java Tue Jun 19 09:36:13 2007
@@ -46,7 +46,7 @@
 	private final static int MULTILINE_COMMENT = 6;
 	
 	/** Inside a regular expression */
-	private final static int POSSIBLE_REG_EXP = 7;
+	private final static int REG_EXP = 7;
 
 	/**
 	 * Removes javascript comments and whitespaces from specified string.
@@ -91,8 +91,25 @@
 				}
 				else if (c == '/')
 				{
-					// Might also be a standard divide operator, though.
-					state = POSSIBLE_REG_EXP;
+					// This might be a divide operator, or it might be a regular expression.
+					// Work out if it's a regular expression by finding the previous non-whitespace char, which
+					// will be either '=' or '('. If it's not, it's just a divide operator.
+					int idx = i - 1;
+					while (idx > 0)
+					{
+						char tmp = original.charAt(idx);
+						if (Character.isWhitespace(tmp))
+						{
+							idx--;
+							continue;
+						}
+						if (tmp == '=' || tmp == '(')
+						{
+							state = REG_EXP;
+							break;
+						}
+						break;
+					}
 				}
 				else if (Character.isWhitespace(c) && Character.isWhitespace(next))
 				{
@@ -151,13 +168,9 @@
 				continue;
 			}
 			
-			if (state == POSSIBLE_REG_EXP)
+			if (state == REG_EXP)
 			{
 				if (c == '/' && prev != '\\')
-				{
-					state = REGULAR_TEXT;
-				}
-				if (c == '\r' || c == '\n')
 				{
 					state = REGULAR_TEXT;
 				}