Formatting
[jalview.git] / src / com / stevesoft / pat / parsePerl.java
index 5cdbabe..5de9f07 100755 (executable)
 package com.stevesoft.pat;\r
 \r
 /** This class provides a method for parsing the "s/.../.../" constructs\r
-of Regex.perlCode.\r
-@see Regex#perlCode\r
-*/\r
-class parsePerl {\r
-    final static char close(char c) {\r
-        // This switch statement does not behave\r
-        // properly when compiled with jdk1.1.5\r
-        // and the -O flag.\r
-        /*\r
-        switch(c) {\r
-        case '[':\r
-          return ']';\r
-        case '(':\r
-          return ')';\r
-        case '{':\r
-          return '}';\r
-        }\r
-        return c;*/\r
-       if(c == '<')\r
-           return '>';\r
-        if(c == '[')\r
-            return ']';\r
-        if(c == '(')\r
-            return ')';\r
-        if(c == '{')\r
-            return '}';\r
-        return c;\r
+ of Regex.perlCode.\r
+ @see Regex#perlCode\r
+ */\r
+class parsePerl\r
+{\r
+  final static char close(char c)\r
+  {\r
+    // This switch statement does not behave\r
+    // properly when compiled with jdk1.1.5\r
+    // and the -O flag.\r
+    /*\r
+             switch(c) {\r
+             case '[':\r
+      return ']';\r
+             case '(':\r
+      return ')';\r
+             case '{':\r
+      return '}';\r
+             }\r
+             return c;*/\r
+    if (c == '<')\r
+    {\r
+      return '>';\r
     }\r
-\r
-    final public static String codify(String s,boolean keepbs) {\r
-        return codify(s,0,s.length(),keepbs);\r
+    if (c == '[')\r
+    {\r
+      return ']';\r
+    }\r
+    if (c == '(')\r
+    {\r
+      return ')';\r
+    }\r
+    if (c == '{')\r
+    {\r
+      return '}';\r
     }\r
-    final public static String codify(String s,int i0,int iN,boolean keepbs) {\r
-        StringBuffer sb = new StringBuffer();\r
-        boolean ucmode = false, lcmode = false, litmode = false;\r
-        boolean uc1 = false, lc1 = false;\r
-        boolean modified = false;\r
-        for(int i=i0;i<iN;i++) {\r
-            char c = s.charAt(i);\r
-            boolean mf = true, app=true;\r
-            if(c=='\\') {\r
-                app=false;\r
-                i++;\r
-                if(i<s.length()) {\r
-                    char c2 = s.charAt(i);\r
-                    switch(c2) {\r
-                    case 'Q':\r
-                        litmode = true;\r
-                        break;\r
-                    case 'U':\r
-                        ucmode = true;\r
-                        break;\r
-                    case 'L':\r
-                        lcmode = true;\r
-                        break;\r
-                    case 'u':\r
-                        uc1 = true;\r
-                        break;\r
-                    case 'l':\r
-                        lc1 = true;\r
-                        break;\r
-                    case 'E':\r
-                        uc1=lc1=ucmode=lcmode=litmode=false;\r
-                        break;\r
-                    default:\r
-                        if(keepbs)\r
-                            sb.append('\\');\r
-                        c=c2;\r
-                        if(keepbs) mf = false;\r
-                        app = true;\r
-                        break;\r
-                    }\r
-                    modified |= mf;\r
-                }\r
-            }\r
-            if(app) {\r
-                if(lc1) {\r
-                    c=lc(c);\r
-                    lc1=false;\r
-                } else if(uc1) {\r
-                    c=uc(c);\r
-                    uc1=false;\r
-                } else if(ucmode) {\r
-                    c=uc(c);\r
-                } else if(lcmode) {\r
-                    c=lc(c);\r
-                }\r
-                if(litmode && needbs(c))\r
-                    sb.append('\\');\r
-                sb.append(c);\r
-            }\r
+    return c;\r
+  }\r
+\r
+  final public static String codify(String s, boolean keepbs)\r
+  {\r
+    return codify(s, 0, s.length(), keepbs);\r
+  }\r
+\r
+  final public static String codify(String s, int i0, int iN, boolean keepbs)\r
+  {\r
+    StringBuffer sb = new StringBuffer();\r
+    boolean ucmode = false, lcmode = false, litmode = false;\r
+    boolean uc1 = false, lc1 = false;\r
+    boolean modified = false;\r
+    for (int i = i0; i < iN; i++)\r
+    {\r
+      char c = s.charAt(i);\r
+      boolean mf = true, app = true;\r
+      if (c == '\\')\r
+      {\r
+        app = false;\r
+        i++;\r
+        if (i < s.length())\r
+        {\r
+          char c2 = s.charAt(i);\r
+          switch (c2)\r
+          {\r
+            case 'Q':\r
+              litmode = true;\r
+              break;\r
+            case 'U':\r
+              ucmode = true;\r
+              break;\r
+            case 'L':\r
+              lcmode = true;\r
+              break;\r
+            case 'u':\r
+              uc1 = true;\r
+              break;\r
+            case 'l':\r
+              lc1 = true;\r
+              break;\r
+            case 'E':\r
+              uc1 = lc1 = ucmode = lcmode = litmode = false;\r
+              break;\r
+            default:\r
+              if (keepbs)\r
+              {\r
+                sb.append('\\');\r
+              }\r
+              c = c2;\r
+              if (keepbs)\r
+              {\r
+                mf = false;\r
+              }\r
+              app = true;\r
+              break;\r
+          }\r
+          modified |= mf;\r
+        }\r
+      }\r
+      if (app)\r
+      {\r
+        if (lc1)\r
+        {\r
+          c = lc(c);\r
+          lc1 = false;\r
+        }\r
+        else if (uc1)\r
+        {\r
+          c = uc(c);\r
+          uc1 = false;\r
+        }\r
+        else if (ucmode)\r
+        {\r
+          c = uc(c);\r
+        }\r
+        else if (lcmode)\r
+        {\r
+          c = lc(c);\r
+        }\r
+        if (litmode && needbs(c))\r
+        {\r
+          sb.append('\\');\r
         }\r
-        return modified ? sb.toString() : s;\r
+        sb.append(c);\r
+      }\r
+    }\r
+    return modified ? sb.toString() : s;\r
+  }\r
+\r
+  final static char uc(char c)\r
+  {\r
+    return CaseMgr.toUpperCase(c);\r
+  }\r
+\r
+  final static char lc(char c)\r
+  {\r
+    return CaseMgr.toLowerCase(c);\r
+  }\r
+\r
+  final static boolean needbs(char c)\r
+  {\r
+    if (c >= 'a' && c <= 'z')\r
+    {\r
+      return false;\r
     }\r
-    final static char uc(char c) {\r
-        return CaseMgr.toUpperCase(c);\r
+    if (c >= 'A' && c <= 'Z')\r
+    {\r
+      return false;\r
     }\r
-    final static char lc(char c) {\r
-        return CaseMgr.toLowerCase(c);\r
+    if (c >= '0' && c <= '9')\r
+    {\r
+      return false;\r
     }\r
-    final static boolean needbs(char c) {\r
-        if(c >= 'a' && c <= 'z')\r
-            return false;\r
-        if(c >= 'A' && c <= 'Z')\r
-            return false;\r
-        if(c >= '0' && c <= '9')\r
-            return false;\r
-        if(c == '_')\r
-            return false;\r
-        return true;\r
+    if (c == '_')\r
+    {\r
+      return false;\r
     }\r
-    final static Regex parse(String s) {\r
-        boolean igncase = false, optim = false, gFlag = false;\r
-        boolean sFlag = false, mFlag = false, xFlag = false;\r
+    return true;\r
+  }\r
 \r
-        StringBuffer s1 = new StringBuffer();\r
-        StringBuffer s2 = new StringBuffer();\r
-        int i=0,count=0;\r
-        char mode,delim='/',cdelim='/';\r
-        if(s.length() >= 3 && s.charAt(0)=='s') {\r
-            mode = 's';\r
-            delim = s.charAt(1);\r
-            cdelim = close(delim);\r
-            i=2;\r
-        } else if(s.length() >= 2 && s.charAt(0)=='m') {\r
-            mode = 'm';\r
-            delim = s.charAt(1);\r
-            cdelim = close(delim);\r
-            i=2;\r
-        } else if(s.length() >= 1 && s.charAt(0)=='/') {\r
-            mode = 'm';\r
-            i=1;\r
-        } else {\r
-            try {\r
-                RegSyntaxError.endItAll(\r
-                   "Regex.perlCode should be of the "+\r
-                    "form s/// or m// or //");\r
-            } catch(RegSyntax rs) {}\r
-            return null;\r
-        }\r
-        for(;i<s.length();i++) {\r
-            if(s.charAt(i)=='\\') {\r
-                s1.append('\\');\r
-                i++;\r
-            } else if(s.charAt(i)==cdelim && count==0) {\r
-                i++;\r
-                break;\r
-            } else if(s.charAt(i)==delim && cdelim != delim) {\r
-                count++;\r
-            } else if(s.charAt(i)==cdelim && cdelim != delim) {\r
-                count--;\r
-            }\r
-            s1.append(s.charAt(i));\r
+  final static Regex parse(String s)\r
+  {\r
+    boolean igncase = false, optim = false, gFlag = false;\r
+    boolean sFlag = false, mFlag = false, xFlag = false;\r
+\r
+    StringBuffer s1 = new StringBuffer();\r
+    StringBuffer s2 = new StringBuffer();\r
+    int i = 0, count = 0;\r
+    char mode, delim = '/', cdelim = '/';\r
+    if (s.length() >= 3 && s.charAt(0) == 's')\r
+    {\r
+      mode = 's';\r
+      delim = s.charAt(1);\r
+      cdelim = close(delim);\r
+      i = 2;\r
+    }\r
+    else if (s.length() >= 2 && s.charAt(0) == 'm')\r
+    {\r
+      mode = 'm';\r
+      delim = s.charAt(1);\r
+      cdelim = close(delim);\r
+      i = 2;\r
+    }\r
+    else if (s.length() >= 1 && s.charAt(0) == '/')\r
+    {\r
+      mode = 'm';\r
+      i = 1;\r
+    }\r
+    else\r
+    {\r
+      try\r
+      {\r
+        RegSyntaxError.endItAll(\r
+            "Regex.perlCode should be of the " +\r
+            "form s/// or m// or //");\r
+      }\r
+      catch (RegSyntax rs)\r
+      {}\r
+      return null;\r
+    }\r
+    for (; i < s.length(); i++)\r
+    {\r
+      if (s.charAt(i) == '\\')\r
+      {\r
+        s1.append('\\');\r
+        i++;\r
+      }\r
+      else if (s.charAt(i) == cdelim && count == 0)\r
+      {\r
+        i++;\r
+        break;\r
+      }\r
+      else if (s.charAt(i) == delim && cdelim != delim)\r
+      {\r
+        count++;\r
+      }\r
+      else if (s.charAt(i) == cdelim && cdelim != delim)\r
+      {\r
+        count--;\r
+      }\r
+      s1.append(s.charAt(i));\r
+    }\r
+    if (mode == 's' && cdelim != delim)\r
+    {\r
+      while (i < s.length() && Prop.isWhite(s.charAt(i)))\r
+      {\r
+        i++;\r
+      }\r
+      if (i >= s.length())\r
+      {\r
+        try\r
+        {\r
+          RegSyntaxError.endItAll("" + mode + delim + " needs " + cdelim);\r
         }\r
-        if(mode=='s' && cdelim != delim) {\r
-            while(i<s.length() && Prop.isWhite(s.charAt(i)) )\r
-                i++;\r
-            if(i>=s.length()) {\r
-                try {\r
-                    RegSyntaxError.endItAll(""+mode+delim+" needs "+cdelim);\r
-                } catch(RegSyntax rs) {}\r
-                return null;\r
-            }\r
-            cdelim = close(delim = s.charAt(i));\r
-            i++;\r
+        catch (RegSyntax rs)\r
+        {}\r
+        return null;\r
+      }\r
+      cdelim = close(delim = s.charAt(i));\r
+      i++;\r
+    }\r
+    count = 0;\r
+    if (mode == 's')\r
+    {\r
+      for (; i < s.length(); i++)\r
+      {\r
+        if (s.charAt(i) == '\\')\r
+        {\r
+          s2.append('\\');\r
+          i++;\r
         }\r
-        count=0;\r
-        if(mode=='s') {\r
-            for(;i<s.length();i++) {\r
-                if(s.charAt(i)=='\\') {\r
-                    s2.append('\\');\r
-                    i++;\r
-                } else if(s.charAt(i)==cdelim && count==0) {\r
-                    i++;\r
-                    break;\r
-                } else if(s.charAt(i)==delim && cdelim != delim) {\r
-                    count++;\r
-                } else if(s.charAt(i)==cdelim && cdelim != delim) {\r
-                    count--;\r
-                }\r
-                s2.append(s.charAt(i));\r
-            }\r
+        else if (s.charAt(i) == cdelim && count == 0)\r
+        {\r
+          i++;\r
+          break;\r
         }\r
-        for(;i<s.length();i++) {\r
-            char c = s.charAt(i);\r
-            switch(c) {\r
-           case 'x':\r
-               xFlag = true;\r
-               break;\r
-            case 'i':\r
-                igncase = true;\r
-                break;\r
-            case 'o':\r
-                optim = true;\r
-                break;\r
-            case 's':\r
-                sFlag = true;\r
-                break;\r
-            case 'm':\r
-               mFlag = true;\r
-                break;\r
-            case 'g':\r
-                gFlag = true;\r
-                break;\r
-            default:\r
-                // syntax error!\r
-                try {\r
-                    RegSyntaxError.endItAll("Illegal flag to pattern: "+c);\r
-                } catch(RegSyntax rs) {}\r
-                return null;\r
-            }\r
+        else if (s.charAt(i) == delim && cdelim != delim)\r
+        {\r
+          count++;\r
         }\r
-        Regex r = new Regex();\r
-        try {\r
-            String pat=s1.toString(),reprul=s2.toString();\r
-           if(xFlag) {\r
-             pat = strip(pat);\r
-             reprul = strip(reprul);\r
-           }\r
-            r.compile(pat);\r
-            r.ignoreCase |= igncase;\r
-            r.gFlag |= gFlag;\r
-            r.sFlag |= sFlag;\r
-           r.mFlag |= mFlag;\r
-            if(optim) r.optimize();\r
-           if(delim=='\'')\r
-              r.setReplaceRule(new StringRule(reprul));\r
-           else\r
-              r.setReplaceRule(ReplaceRule.perlCode(reprul));\r
-        } catch(RegSyntax rs) {\r
-            r = null;\r
+        else if (s.charAt(i) == cdelim && cdelim != delim)\r
+        {\r
+          count--;\r
         }\r
-        return r;\r
+        s2.append(s.charAt(i));\r
+      }\r
+    }\r
+    for (; i < s.length(); i++)\r
+    {\r
+      char c = s.charAt(i);\r
+      switch (c)\r
+      {\r
+        case 'x':\r
+          xFlag = true;\r
+          break;\r
+        case 'i':\r
+          igncase = true;\r
+          break;\r
+        case 'o':\r
+          optim = true;\r
+          break;\r
+        case 's':\r
+          sFlag = true;\r
+          break;\r
+        case 'm':\r
+          mFlag = true;\r
+          break;\r
+        case 'g':\r
+          gFlag = true;\r
+          break;\r
+        default:\r
+\r
+          // syntax error!\r
+          try\r
+          {\r
+            RegSyntaxError.endItAll("Illegal flag to pattern: " + c);\r
+          }\r
+          catch (RegSyntax rs)\r
+          {}\r
+          return null;\r
+      }\r
+    }\r
+    Regex r = new Regex();\r
+    try\r
+    {\r
+      String pat = s1.toString(), reprul = s2.toString();\r
+      if (xFlag)\r
+      {\r
+        pat = strip(pat);\r
+        reprul = strip(reprul);\r
+      }\r
+      r.compile(pat);\r
+      r.ignoreCase |= igncase;\r
+      r.gFlag |= gFlag;\r
+      r.sFlag |= sFlag;\r
+      r.mFlag |= mFlag;\r
+      if (optim)\r
+      {\r
+        r.optimize();\r
+      }\r
+      if (delim == '\'')\r
+      {\r
+        r.setReplaceRule(new StringRule(reprul));\r
+      }\r
+      else\r
+      {\r
+        r.setReplaceRule(ReplaceRule.perlCode(reprul));\r
+      }\r
     }\r
-    static String strip(String s) {\r
-      StringBuffer sb = new StringBuffer();\r
-      for(int i=0;i<s.length();i++) {\r
-        char c = s.charAt(i);\r
-       if(Prop.isWhite(c)) {\r
-         ;\r
-       } else if(c == '#') {\r
-         i++;\r
-         while(i<s.length()) {\r
-           if(s.charAt(i) == '\n')\r
-             break;\r
-           i++;\r
-         }\r
-        } else if(c == '\\') {\r
-         sb.append(c);\r
-         sb.append(s.charAt(++i));\r
-       } else\r
-         sb.append(c);\r
+    catch (RegSyntax rs)\r
+    {\r
+      r = null;\r
+    }\r
+    return r;\r
+  }\r
+\r
+  static String strip(String s)\r
+  {\r
+    StringBuffer sb = new StringBuffer();\r
+    for (int i = 0; i < s.length(); i++)\r
+    {\r
+      char c = s.charAt(i);\r
+      if (Prop.isWhite(c))\r
+      {\r
+        ;\r
+      }\r
+      else if (c == '#')\r
+      {\r
+        i++;\r
+        while (i < s.length())\r
+        {\r
+          if (s.charAt(i) == '\n')\r
+          {\r
+            break;\r
+          }\r
+          i++;\r
+        }\r
+      }\r
+      else if (c == '\\')\r
+      {\r
+        sb.append(c);\r
+        sb.append(s.charAt(++i));\r
+      }\r
+      else\r
+      {\r
+        sb.append(c);\r
       }\r
-      return sb.toString();\r
     }\r
+    return sb.toString();\r
+  }\r
 }\r