Graphical bits moved into files to save jar size
[jalview.git] / src / com / stevesoft / pat / StringBufferLike.java
1 package//\r
2 // This software is now distributed according to\r
3 // the Lesser Gnu Public License.  Please see\r
4 // http://www.gnu.org/copyleft/lesser.txt for\r
5 // the details.\r
6 //    -- Happy Computing!\r
7 //\r
8 com.stevesoft.pat;\r
9 \r
10 \r
11 /** A tool that is used to make the \E, \U, \L, and \Q\r
12     elements of a substitution. */\r
13 public class StringBufferLike implements BasicStringBufferLike {\r
14   BasicStringBufferLike sbl;\r
15   public StringBufferLike(BasicStringBufferLike sbl) {\r
16     this.sbl = sbl;\r
17   }\r
18   char mode = 'E', altMode = ' ';\r
19   public StringLike toStringLike() {\r
20     return sbl.toStringLike();\r
21   }\r
22   public String toString() {\r
23     return sbl.toString();\r
24   }\r
25   public void append(char c) {\r
26     \r
27     switch(mode) {\r
28     case 'u':\r
29       mode = altMode;\r
30       altMode = ' ';\r
31     case 'U':\r
32       sbl.append(CaseMgr.toUpperCase(c));\r
33       break;\r
34     case 'l':\r
35       mode = altMode;\r
36       altMode = ' ';\r
37     case 'L':\r
38       sbl.append(CaseMgr.toLowerCase(c));\r
39       break;\r
40     case 'Q':\r
41       if((c >= 'a' && c <= 'z')\r
42       || (c >= 'A' && c <= 'Z')\r
43       || (c >= '0' && c <= '9'))\r
44         ;\r
45       else\r
46         sbl.append('\\');\r
47     default:\r
48       sbl.append(c);\r
49       break;\r
50     }\r
51   }\r
52   public void append(String s) {\r
53     for(int i=0;i<s.length();i++)\r
54       append(s.charAt(i));\r
55   }\r
56   public void setMode(char c) {\r
57     if(c == 'u' || c == 'l')\r
58       if(altMode == ' ') altMode = mode;\r
59     mode = c;\r
60   }\r
61   public Object unwrap() {\r
62     return sbl.unwrap();\r
63   }\r
64 }\r