//
// 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.ewe_pat;
import ewe.util.Hashtable;
//class AddToEnd extends RegSyntax {};
/** Compiles the '$' or the '\Z' Pattern. It is
an error to have further Pattern elements after
'\Z'. It is the end of the String. */
class End extends Pattern {
boolean retIsEnd;
End(boolean b) { retIsEnd = b; }
public int matchInternal(int pos,Pthings pt) {
if(retIsEnd && pt.mFlag && pos < pt.src.length()) {
if(pt.src.charAt(pos)=='\n') {
return nextMatch(pos,pt);
}
}
if(pt.src.length() == pos)
return nextMatch(pos,pt);
else if(pos<pt.src.length())
// Access the next character...
// this is crucial to making
// RegexReader work.
pt.src.charAt(pos);
return -1;
}
public String toString() {
if(retIsEnd)
return "$";
else
return "\\Z";
}
public patInt maxChars() { return new patInt(1); }
public Pattern clone1(Hashtable h) { return new End(retIsEnd); }
};