Author: sshafroi
Date: 2008-11-17 14:43:32 +0100 (Mon, 17 Nov 2008)
New Revision: 6942

Modified:
   trunk/result-spi/src/main/java/no/sesat/search/result/StringChopper.java
Log:
remove a label, and gather return statements.


Modified: 
trunk/result-spi/src/main/java/no/sesat/search/result/StringChopper.java
===================================================================
--- trunk/result-spi/src/main/java/no/sesat/search/result/StringChopper.java    
2008-11-17 08:58:31 UTC (rev 6941)
+++ trunk/result-spi/src/main/java/no/sesat/search/result/StringChopper.java    
2008-11-17 13:43:32 UTC (rev 6942)
@@ -54,163 +54,160 @@
      */
     public static String chop(final String input, final int length, final 
boolean chop) {
 
-        if (input == null) {
-            return null;
-        }
+        if (input != null) {
+            final Deque<Integer> stack = new ArrayDeque<Integer>();
+            final char[] s = input.toCharArray();
+            final StringBuilder res = new StringBuilder(s.length);
+            State state = State.NONE;
+            int count = 0;
+            int i = 0;
 
-        final Deque<Integer> stack = new ArrayDeque<Integer>();
-        char[] s = input.toCharArray();
-        final StringBuilder res = new StringBuilder(s.length);
-        State state = State.NONE;
-        int count = 0;
-        int i = 0;
+            main: for (; i < s.length; i++) {
+                char c = s[i];
+                switch (state) {
+                case NONE:
+                    if (c == '<') {
+                        state = State.TAG;
+                    } else {
+                        count++;
+                        if (count == length) {
+                            res.append(c);
+                            break main;
+                        }
+                    }
+                    break;
 
-        main: for (; i < s.length; i++) {
-            char c = s[i];
-            switch (state) {
-            case NONE:
-                if (c == '<') {
-                    state = State.TAG;
-                } else {
-                    count++;
-                    if (count == length) {
-                        res.append(c);
-                        break main;
+                case TAG:
+                    if (c == '/') {
+                        state = State.ENDTAG;
+                    } else if (c == '!') {
+                        // ![CDATA[
+                        if (s.length > (i + 7) && s[i + 1] == '[' && (s[i + 2] 
== 'C' || s[i + 2] == 'c')
+                                && (s[i + 3] == 'D' || s[i + 3] == 'd') && 
(s[i + 4] == 'A' || s[i + 4] == 'a')
+                                && (s[i + 5] == 'T' || s[i + 5] == 't') && 
(s[i + 6] == 'A' || s[i + 6] == 'a')
+                                && s[i + 7] == '[') {
+                            state = State.CDATA;
+                            res.append("![CDATA[");
+                            i += 7;
+                            continue;
+                        }
+                        // !--
+                        else if (s.length > (i + 2) && s[i + 1] == '-' && s[i 
+ 2] == '-') {
+                            state = State.COMMENT;
+                            res.append("!--");
+                            i += 2;
+                            continue;
+                        }
+                    } else if (c == '?') {
+                        state = State.DECLARATION;
+                    } else {
+                        stack.push(i);
+                        state = State.STARTTAG;
                     }
-                }
-                break;
+                    break;
 
-            case TAG:
-                if (c == '/') {
-                    state = State.ENDTAG;
-                } else if (c == '!') {
-                    // ![CDATA[
-                    if (s.length > (i + 7) && s[i + 1] == '[' && (s[i + 2] == 
'C' || s[i + 2] == 'c')
-                            && (s[i + 3] == 'D' || s[i + 3] == 'd') && (s[i + 
4] == 'A' || s[i + 4] == 'a')
-                            && (s[i + 5] == 'T' || s[i + 5] == 't') && (s[i + 
6] == 'A' || s[i + 6] == 'a')
-                            && s[i + 7] == '[') {
-                        state = State.CDATA;
-                        res.append("![CDATA[");
-                        i += 7;
-                        continue;
+                case STARTTAG:
+                    if (c == '/') {
+                        if (s.length > (i + 1) && s[i + 1] == '>') {
+                            state = State.NONE;
+                            res.append("/>");
+                            i += 1;
+                            if (!stack.isEmpty()) {
+                                stack.pop();
+                            }
+                            continue;
+                        }
+                    } else if (c == '>') {
+                        state = State.NONE;
                     }
-                    // !--
-                    else if (s.length > (i + 2) && s[i + 1] == '-' && s[i + 2] 
== '-') {
-                        state = State.COMMENT;
-                        res.append("!--");
-                        i += 2;
-                        continue;
-                    }
-                } else if (c == '?') {
-                    state = State.DECLARATION;
-                } else {
-                    stack.push(i);
-                    state = State.STARTTAG;
-                }
-                break;
+                    break;
 
-            case STARTTAG:
-                if (c == '/') {
-                    if (s.length > (i + 1) && s[i + 1] == '>') {
+                case ENDTAG:
+                    if (c == '>') {
                         state = State.NONE;
-                        res.append("/>");
-                        i += 1;
                         if (!stack.isEmpty()) {
                             stack.pop();
                         }
-                        continue;
                     }
-                } else if (c == '>') {
-                    state = State.NONE;
-                }
-                break;
+                    break;
 
-            case ENDTAG:
-                if (c == '>') {
-                    state = State.NONE;
-                    if (!stack.isEmpty()) {
-                        stack.pop();
-                    }
-                }
-                break;
+                case CDATA:
 
-            case CDATA:
-
-                if (c == ']') {// ]]>
-                    if (s.length > (i + 2) && s[i + 1] == ']' && s[i + 2] == 
'>') {
-                        state = State.NONE;
-                        res.append("]]>");
-                        i += 2;
-                        continue;
+                    if (c == ']') {// ]]>
+                        if (s.length > (i + 2) && s[i + 1] == ']' && s[i + 2] 
== '>') {
+                            state = State.NONE;
+                            res.append("]]>");
+                            i += 2;
+                            continue;
+                        }
+                    } else {
+                        count++;
+                        if (count == length) {
+                            res.append(c);
+                            break main;
+                        }
                     }
-                } else {
-                    count++;
-                    if (count == length) {
-                        res.append(c);
-                        break main;
-                    }
-                }
-                break;
+                    break;
 
-            case COMMENT:
-                if (c == '-') {
-                    // -->
-                    if (s.length > (i + 2) && s[i + 1] == '-' && s[i + 2] == 
'>') {
-                        state = State.NONE;
-                        res.append("-->");
-                        i += 2;
-                        continue;
+                case COMMENT:
+                    if (c == '-') {
+                        // -->
+                        if (s.length > (i + 2) && s[i + 1] == '-' && s[i + 2] 
== '>') {
+                            state = State.NONE;
+                            res.append("-->");
+                            i += 2;
+                            continue;
+                        }
                     }
-                }
-                break;
+                    break;
 
-            case DECLARATION:
-                if (c == '?') {
-                    if (s.length > (i + 1) && s[i + 1] == '>') {
-                        state = State.NONE;
-                        res.append("?>");
-                        i += 1;
-                        continue;
+                case DECLARATION:
+                    if (c == '?') {
+                        if (s.length > (i + 1) && s[i + 1] == '>') {
+                            state = State.NONE;
+                            res.append("?>");
+                            i += 1;
+                            continue;
+                        }
                     }
+                    break;
                 }
-                break;
+                res.append(c);
             }
-            res.append(c);
-        }
 
-        // append dots
-        dot: if (i < s.length - 1) {
-            if (chop) {
-                res.append("...");
-            } else {
-                for (int k = i; k > 0; k--) {
-                    if (s[k] == ' ' || s[k] == ((state == State.CDATA) ? '[' : 
'>')) {
-                        res.setLength(k + 1);
-                        res.append("...");
-                        break dot;
+            // append dots
+            if (i < s.length - 1) {
+                if (!chop) {
+                    for (int k = i; k > 0 && count > 0; k--) {
+                        if (s[k] == ' ' || s[k] == ((state == State.CDATA) ? 
'[' : '>')) {
+                            res.setLength(k + 1);
+                            k = 0;
+                        }
+                        count--;
                     }
+                    res.append("...");
                 }
-                res.append("...");
             }
-        }
 
-        // close CDATA if we are in one
-        if (state == State.CDATA) {
-            res.append("]]>");
-        }
+            // close CDATA if we are in one
+            if (state == State.CDATA) {
+                res.append("]]>");
+            }
 
-        // close all other open tags
-        while (!stack.isEmpty()) {
-            int j = stack.pop();
-            char c = s[j];
-            res.append("</");
-            while (s.length > j && c != '>') {
-                res.append(c);
-                c = s[++j];
+            // close all other open tags
+            while (!stack.isEmpty()) {
+                int j = stack.pop();
+                char c = s[j];
+                res.append("</");
+                while (s.length > j && c != '>') {
+                    res.append(c);
+                    c = s[++j];
+                }
+                res.append('>');
             }
-            res.append('>');
-        }
 
-        return res.toString();
+            return res.toString();
+        }
+        return null;
     }
 }

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to