Formatting
[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 /** A tool that is used to make the \E, \U, \L, and \Q\r
11     elements of a substitution. */\r
12 public class StringBufferLike\r
13     implements BasicStringBufferLike\r
14 {\r
15   BasicStringBufferLike sbl;\r
16   public StringBufferLike(BasicStringBufferLike sbl)\r
17   {\r
18     this.sbl = sbl;\r
19   }\r
20 \r
21   char mode = 'E', altMode = ' ';\r
22   public StringLike toStringLike()\r
23   {\r
24     return sbl.toStringLike();\r
25   }\r
26 \r
27   public String toString()\r
28   {\r
29     return sbl.toString();\r
30   }\r
31 \r
32   public void append(char c)\r
33   {\r
34 \r
35     switch (mode)\r
36     {\r
37       case 'u':\r
38         mode = altMode;\r
39         altMode = ' ';\r
40       case 'U':\r
41         sbl.append(CaseMgr.toUpperCase(c));\r
42         break;\r
43       case 'l':\r
44         mode = altMode;\r
45         altMode = ' ';\r
46       case 'L':\r
47         sbl.append(CaseMgr.toLowerCase(c));\r
48         break;\r
49       case 'Q':\r
50         if ( (c >= 'a' && c <= 'z')\r
51             || (c >= 'A' && c <= 'Z')\r
52             || (c >= '0' && c <= '9'))\r
53         {\r
54           ;\r
55         }\r
56         else\r
57         {\r
58           sbl.append('\\');\r
59         }\r
60       default:\r
61         sbl.append(c);\r
62         break;\r
63     }\r
64   }\r
65 \r
66   public void append(String s)\r
67   {\r
68     for (int i = 0; i < s.length(); i++)\r
69     {\r
70       append(s.charAt(i));\r
71     }\r
72   }\r
73 \r
74   public void setMode(char c)\r
75   {\r
76     if (c == 'u' || c == 'l')\r
77     {\r
78       if (altMode == ' ')\r
79       {\r
80         altMode = mode;\r
81       }\r
82     }\r
83     mode = c;\r
84   }\r
85 \r
86   public Object unwrap()\r
87   {\r
88     return sbl.unwrap();\r
89   }\r
90 }\r