needed for applet search
[jalview.git] / src / com / stevesoft / pat / oneChar.java
diff --git a/src/com/stevesoft/pat/oneChar.java b/src/com/stevesoft/pat/oneChar.java
new file mode 100755 (executable)
index 0000000..f9c8498
--- /dev/null
@@ -0,0 +1,48 @@
+//\r
+// This software is now distributed according to\r
+// the Lesser Gnu Public License.  Please see\r
+// http://www.gnu.org/copyleft/lesser.txt for\r
+// the details.\r
+//    -- Happy Computing!\r
+//\r
+package com.stevesoft.pat;\r
+import java.util.Hashtable;\r
+\r
+/** This class matches a single character. */\r
+class oneChar extends Pattern {\r
+    char c,altc,altc2;\r
+    int mask;\r
+    public oneChar(char ci) {\r
+        c = ci;\r
+        char cu,cl,ct;\r
+        cu = CaseMgr.toUpperCase(c);\r
+        cl = CaseMgr.toLowerCase(c);\r
+        ct = CaseMgr.toTitleCase(c);\r
+        if(c == cu) {\r
+            altc = cl;\r
+            altc2 = ct;\r
+        } else if(c == cl) {\r
+            altc = cu;\r
+            altc2 = ct;\r
+        } else {\r
+            altc = cl;\r
+            altc2 = cu;\r
+        }\r
+        mask = c & altc & altc2;\r
+    }\r
+    public int matchInternal(int pos,Pthings pt) {\r
+        char p;\r
+        int ret=-1;\r
+        if (pos < pt.src.length() && !Masked(pos,pt)\r
+                && ((p=pt.src.charAt(pos))==c ||\r
+                (pt.ignoreCase&& (p==altc||p==altc2) ) ))\r
+            ret = nextMatch(pos+1,pt);\r
+        return ret;\r
+    }\r
+    public String toString() {\r
+        return protect(""+c,PROTECT_THESE,ESC)+nextString();\r
+    }\r
+    public patInt minChars() { return new patInt(1); }\r
+    public patInt maxChars() { return new patInt(1); }\r
+    Pattern clone1(Hashtable h) { return new oneChar(c); }\r
+};\r