JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / src / com / stevesoft / pat / StringBufferLike.java
1 package //
2 // This software is now distributed according to
3 // the Lesser Gnu Public License.  Please see
4 // http://www.gnu.org/copyleft/lesser.txt for
5 // the details.
6 //    -- Happy Computing!
7 //
8 com.stevesoft.pat;
9
10 /**
11  * A tool that is used to make the \E, \U, \L, and \Q elements of a
12  * substitution.
13  */
14 public class StringBufferLike implements BasicStringBufferLike
15 {
16   BasicStringBufferLike sbl;
17
18   public StringBufferLike(BasicStringBufferLike sbl)
19   {
20     this.sbl = sbl;
21   }
22
23   char mode = 'E', altMode = ' ';
24
25   public StringLike toStringLike()
26   {
27     return sbl.toStringLike();
28   }
29
30   public String toString()
31   {
32     return sbl.toString();
33   }
34
35   public void appendC(char c)
36   {
37
38     switch (mode)
39     {
40     case 'u':
41       mode = altMode;
42       altMode = ' ';
43     case 'U':
44       sbl.appendC(CaseMgr.toUpperCaseC(c));
45       break;
46     case 'l':
47       mode = altMode;
48       altMode = ' ';
49     case 'L':
50       sbl.appendC(CaseMgr.toLowerCaseC(c));
51       break;
52     case 'Q':
53       if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
54               || (c >= '0' && c <= '9'))
55       {
56         ;
57       }
58       else
59       {
60         sbl.appendC('\\');
61       }
62     default:
63       sbl.appendC(c);
64       break;
65     }
66   }
67
68   public void append(String s)
69   {
70     for (int i = 0; i < s.length(); i++)
71     {
72       appendC(s.charAt(i));
73     }
74   }
75
76   public void setMode(char c)
77   {
78     if (c == 'u' || c == 'l')
79     {
80       if (altMode == ' ')
81       {
82         altMode = mode;
83       }
84     }
85     mode = c;
86   }
87
88   public Object unwrap()
89   {
90     return sbl.unwrap();
91   }
92 }