// // 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 implements the word boundary pattern element: \b. */ class Boundary extends Pattern { public String toString() { return "\\b"+nextString(); } boolean isAChar(char c) { if(c >= 'a' && c <= 'z') return true; if(c >= 'A' && c <= 'Z') return true; if(c >= '0' && c <= '9') return true; if(c == '_') return true; return false; } boolean matchLeft(int pos,Pthings pt) { if(pos <= 0) return true; if(isAChar(pt.src.charAt(pos)) && isAChar(pt.src.charAt(pos-1))) return false; return true; } boolean matchRight(int pos,Pthings pt) { if(pos < 0) return false; if(pos+1 >= pt.src.length()) return true; if(isAChar(pt.src.charAt(pos)) && isAChar(pt.src.charAt(pos+1))) return false; return true; } public int matchInternal(int pos,Pthings pt) { if(matchRight(pos-1,pt) || matchLeft(pos,pt)) return nextMatch(pos,pt); return -1; } public patInt maxChars() { return new patInt(0); } public Pattern clone1(Hashtable h) { return new Boundary(); } };