needed for applet search
[jalview.git] / src / com / stevesoft / pat / StringBufferLike.java
diff --git a/src/com/stevesoft/pat/StringBufferLike.java b/src/com/stevesoft/pat/StringBufferLike.java
new file mode 100755 (executable)
index 0000000..6987eec
--- /dev/null
@@ -0,0 +1,65 @@
+package//\r
+// This software is now distributed according to\r
+// the Lesser Gnu Public License.  Please see\r
+// http://www.gnu.org/copyleft/lesser.txt for\r
+// the details.\r
+//    -- Happy Computing!\r
+//\r
+com.stevesoft.pat;\r
+\r
+import com.stevesoft.pat.*;\r
+\r
+/** A tool that is used to make the \E, \U, \L, and \Q\r
+    elements of a substitution. */\r
+public class StringBufferLike implements BasicStringBufferLike {\r
+  BasicStringBufferLike sbl;\r
+  public StringBufferLike(BasicStringBufferLike sbl) {\r
+    this.sbl = sbl;\r
+  }\r
+  char mode = 'E', altMode = ' ';\r
+  public StringLike toStringLike() {\r
+    return sbl.toStringLike();\r
+  }\r
+  public String toString() {\r
+    return sbl.toString();\r
+  }\r
+  public void append(char c) {\r
+    \r
+    switch(mode) {\r
+    case 'u':\r
+      mode = altMode;\r
+      altMode = ' ';\r
+    case 'U':\r
+      sbl.append(CaseMgr.toUpperCase(c));\r
+      break;\r
+    case 'l':\r
+      mode = altMode;\r
+      altMode = ' ';\r
+    case 'L':\r
+      sbl.append(CaseMgr.toLowerCase(c));\r
+      break;\r
+    case 'Q':\r
+      if((c >= 'a' && c <= 'z')\r
+      || (c >= 'A' && c <= 'Z')\r
+      || (c >= '0' && c <= '9'))\r
+        ;\r
+      else\r
+        sbl.append('\\');\r
+    default:\r
+      sbl.append(c);\r
+      break;\r
+    }\r
+  }\r
+  public void append(String s) {\r
+    for(int i=0;i<s.length();i++)\r
+      append(s.charAt(i));\r
+  }\r
+  public void setMode(char c) {\r
+    if(c == 'u' || c == 'l')\r
+      if(altMode == ' ') altMode = mode;\r
+    mode = c;\r
+  }\r
+  public Object unwrap() {\r
+    return sbl.unwrap();\r
+  }\r
+}\r