Formatting
[jalview.git] / src / com / stevesoft / pat / oneChar.java
1 //\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 package com.stevesoft.pat;\r
9 \r
10 import java.util.*;\r
11 \r
12 /** This class matches a single character. */\r
13 class oneChar\r
14     extends Pattern\r
15 {\r
16   char c, altc, altc2;\r
17   int mask;\r
18   public oneChar(char ci)\r
19   {\r
20     c = ci;\r
21     char cu, cl, ct;\r
22     cu = CaseMgr.toUpperCase(c);\r
23     cl = CaseMgr.toLowerCase(c);\r
24     ct = CaseMgr.toTitleCase(c);\r
25     if (c == cu)\r
26     {\r
27       altc = cl;\r
28       altc2 = ct;\r
29     }\r
30     else if (c == cl)\r
31     {\r
32       altc = cu;\r
33       altc2 = ct;\r
34     }\r
35     else\r
36     {\r
37       altc = cl;\r
38       altc2 = cu;\r
39     }\r
40     mask = c & altc & altc2;\r
41   }\r
42 \r
43   public int matchInternal(int pos, Pthings pt)\r
44   {\r
45     char p;\r
46     int ret = -1;\r
47     if (pos < pt.src.length() && !Masked(pos, pt)\r
48         && ( (p = pt.src.charAt(pos)) == c ||\r
49             (pt.ignoreCase && (p == altc || p == altc2))))\r
50     {\r
51       ret = nextMatch(pos + 1, pt);\r
52     }\r
53     return ret;\r
54   }\r
55 \r
56   public String toString()\r
57   {\r
58     return protect("" + c, PROTECT_THESE, ESC) + nextString();\r
59   }\r
60 \r
61   public patInt minChars()\r
62   {\r
63     return new patInt(1);\r
64   }\r
65 \r
66   public patInt maxChars()\r
67   {\r
68     return new patInt(1);\r
69   }\r
70 \r
71   Pattern clone1(Hashtable h)\r
72   {\r
73     return new oneChar(c);\r
74   }\r
75 };\r