// // 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(); } };