2 * @author Telmo Brugnara
5 package winterwell.markdown.editors;
7 import org.eclipse.jface.text.rules.ICharacterScanner;
8 import org.eclipse.jface.text.rules.IRule;
9 import org.eclipse.jface.text.rules.IToken;
10 import org.eclipse.jface.text.rules.Token;
12 public class HeaderWithUnderlineRule implements IRule {
14 IToken successToken = null;
16 public HeaderWithUnderlineRule(IToken token) {
20 public IToken evaluate(ICharacterScanner scanner) {
23 if (scanner.getColumn()==0) {
27 } while (!isNewLine((char) c) && c != ICharacterScanner.EOF);
28 if(c == ICharacterScanner.EOF) {
30 for(int i=0;i<scanCount;i++) { scanner.unread(); }
31 return Token.UNDEFINED;
39 if(!isUnderline((char) c)) {
41 for(int i=0;i<scanCount;i++) { scanner.unread(); }
42 return Token.UNDEFINED;
47 if(isNewLine((char) c) || c == ICharacterScanner.EOF) {
51 if(!isUnderline((char) c) && !isWhitespace((char) c) && c != '\r') {
53 for(int i=0;i<scanCount;i++) { scanner.unread(); }
54 return Token.UNDEFINED;
59 return Token.UNDEFINED;
62 boolean isNewLine(char c) {
66 boolean isUnderline(char c) {
67 return c == '=' || c == '-';
70 boolean isWhitespace(char c) {
71 return c == ' ' || c == '\t';