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