-/**\r
- * @author Telmo Brugnara\r
- * 10 Feb 2014\r
- */\r
-package winterwell.markdown.editors;\r
-\r
-import org.eclipse.jface.text.rules.ICharacterScanner;\r
-import org.eclipse.jface.text.rules.IRule;\r
-import org.eclipse.jface.text.rules.IToken;\r
-import org.eclipse.jface.text.rules.Token;\r
-\r
-public class HeaderWithUnderlineRule implements IRule {\r
-\r
- IToken successToken = null;\r
- \r
- public HeaderWithUnderlineRule(IToken token) {\r
- successToken = token;\r
- }\r
- \r
- public IToken evaluate(ICharacterScanner scanner) {\r
- int c = -1;\r
- int scanCount = 0;\r
- if (scanner.getColumn()==0) {\r
- do {\r
- c = scanner.read();\r
- scanCount++;\r
- } while (!isNewLine((char) c) && c != ICharacterScanner.EOF);\r
- if(c == ICharacterScanner.EOF) {\r
- // is not a header\r
- for(int i=0;i<scanCount;i++) { scanner.unread(); }\r
- return Token.UNDEFINED;\r
- }\r
- c = scanner.read();\r
- scanCount++;\r
- if(c == '\r') {\r
- c = scanner.read();\r
- scanCount++;\r
- }\r
- if(!isUnderline((char) c)) {\r
- // is not a header\r
- for(int i=0;i<scanCount;i++) { scanner.unread(); }\r
- return Token.UNDEFINED;\r
- }\r
- do {\r
- c = scanner.read();\r
- scanCount++;\r
- if(isNewLine((char) c) || c == ICharacterScanner.EOF) {\r
- //scanner.unread();\r
- return successToken;\r
- }\r
- if(!isUnderline((char) c) && !isWhitespace((char) c) && c != '\r') {\r
- // is not a header\r
- for(int i=0;i<scanCount;i++) { scanner.unread(); }\r
- return Token.UNDEFINED;\r
- }\r
- } while (true);\r
- }\r
-\r
- return Token.UNDEFINED;\r
- }\r
- \r
- boolean isNewLine(char c) {\r
- return c == '\n';\r
- }\r
-\r
- boolean isUnderline(char c) {\r
- return c == '=' || c == '-';\r
- }\r
-\r
- boolean isWhitespace(char c) {\r
- return c == ' ' || c == '\t';\r
- }\r
-}\r
+/**
+ * @author Telmo Brugnara
+ * 10 Feb 2014
+ */
+package winterwell.markdown.editors;
+
+import org.eclipse.jface.text.rules.ICharacterScanner;
+import org.eclipse.jface.text.rules.IRule;
+import org.eclipse.jface.text.rules.IToken;
+import org.eclipse.jface.text.rules.Token;
+
+public class HeaderWithUnderlineRule implements IRule {
+
+ IToken successToken = null;
+
+ public HeaderWithUnderlineRule(IToken token) {
+ successToken = token;
+ }
+
+ public IToken evaluate(ICharacterScanner scanner) {
+ int c = -1;
+ int scanCount = 0;
+ if (scanner.getColumn()==0) {
+ do {
+ c = scanner.read();
+ scanCount++;
+ } while (!isNewLine((char) c) && c != ICharacterScanner.EOF);
+ if(c == ICharacterScanner.EOF) {
+ // is not a header
+ for(int i=0;i<scanCount;i++) { scanner.unread(); }
+ return Token.UNDEFINED;
+ }
+ c = scanner.read();
+ scanCount++;
+ if(c == '\r') {
+ c = scanner.read();
+ scanCount++;
+ }
+ if(!isUnderline((char) c)) {
+ // is not a header
+ for(int i=0;i<scanCount;i++) { scanner.unread(); }
+ return Token.UNDEFINED;
+ }
+ do {
+ c = scanner.read();
+ scanCount++;
+ if(isNewLine((char) c) || c == ICharacterScanner.EOF) {
+ //scanner.unread();
+ return successToken;
+ }
+ if(!isUnderline((char) c) && !isWhitespace((char) c) && c != '\r') {
+ // is not a header
+ for(int i=0;i<scanCount;i++) { scanner.unread(); }
+ return Token.UNDEFINED;
+ }
+ } while (true);
+ }
+
+ return Token.UNDEFINED;
+ }
+
+ boolean isNewLine(char c) {
+ return c == '\n';
+ }
+
+ boolean isUnderline(char c) {
+ return c == '=' || c == '-';
+ }
+
+ boolean isWhitespace(char c) {
+ return c == ' ' || c == '\t';
+ }
+}