2.08, not 2.07
[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 import java.util.Hashtable;\r
10 \r
11 /** This class matches a single character. */\r
12 class oneChar extends Pattern {\r
13     char c,altc,altc2;\r
14     int mask;\r
15     public oneChar(char ci) {\r
16         c = ci;\r
17         char cu,cl,ct;\r
18         cu = CaseMgr.toUpperCase(c);\r
19         cl = CaseMgr.toLowerCase(c);\r
20         ct = CaseMgr.toTitleCase(c);\r
21         if(c == cu) {\r
22             altc = cl;\r
23             altc2 = ct;\r
24         } else if(c == cl) {\r
25             altc = cu;\r
26             altc2 = ct;\r
27         } else {\r
28             altc = cl;\r
29             altc2 = cu;\r
30         }\r
31         mask = c & altc & altc2;\r
32     }\r
33     public int matchInternal(int pos,Pthings pt) {\r
34         char p;\r
35         int ret=-1;\r
36         if (pos < pt.src.length() && !Masked(pos,pt)\r
37                 && ((p=pt.src.charAt(pos))==c ||\r
38                 (pt.ignoreCase&& (p==altc||p==altc2) ) ))\r
39             ret = nextMatch(pos+1,pt);\r
40         return ret;\r
41     }\r
42     public String toString() {\r
43         return protect(""+c,PROTECT_THESE,ESC)+nextString();\r
44     }\r
45     public patInt minChars() { return new patInt(1); }\r
46     public patInt maxChars() { return new patInt(1); }\r
47     Pattern clone1(Hashtable h) { return new oneChar(c); }\r
48 };\r