--- /dev/null
+//\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