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