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


Reply via email to