/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.editor;
/** Mostly used acceptors
*
* @author Miloslav Metelka
* @version 1.00
*/
public class AcceptorFactory {
public static final Acceptor TRUE = new Fixed(true);
public static final Acceptor FALSE = new Fixed(false);
public static final Acceptor NL = new Char('\n');
public static final Acceptor SPACE_NL = new TwoChar(' ', '\n');
public static final Acceptor WHITESPACE
= new Acceptor() {
public final boolean accept(char ch) {
return Character.isWhitespace(ch);
}
};
public static final Acceptor LETTER_DIGIT
= new Acceptor() {
public final boolean accept(char ch) {
return Character.isLetterOrDigit(ch);
}
};
public static final Acceptor JAVA_IDENTIFIER
= new Acceptor() {
public final boolean accept(char ch) {
return Character.isJavaIdentifierPart(ch);
}
};
public static final Acceptor NON_JAVA_IDENTIFIER
= new Acceptor() {
public final boolean accept(char ch) {
return !Character.isJavaIdentifierPart(ch);
}
};
private static final class Fixed implements Acceptor {
private boolean state;
public Fixed(boolean state) {
this.state = state;
}
public final boolean accept(char ch) {
return state;
}
}
private static final class Char implements Acceptor {
private char hit;
public Char(char hit) {
this.hit = hit;
}
public final boolean accept(char ch) {
return ch == hit;
}
}
private static final class TwoChar implements Acceptor {
private char hit1, hit2;
public TwoChar(char hit1, char hit2) {
this.hit1 = hit1;
this.hit2 = hit2;
}
public final boolean accept(char ch) {
return ch == hit1 || ch == hit2;
}
}
}