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 oneChar(char ci)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 matchInternal(int pos, Pthings pt)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 toString()57 public String toString() 58 { 59 return protect("" + c, PROTECT_THESE, ESC) + nextString(); 60 } 61 minChars()62 public patInt minChars() 63 { 64 return new patInt(1); 65 } 66 maxChars()67 public patInt maxChars() 68 { 69 return new patInt(1); 70 } 71 clone1(Hashtable h)72 Pattern clone1(Hashtable h) 73 { 74 return new oneChar(c); 75 } 76 }; 77