--- /dev/null
+/**\r
+ * Copyright winterwell Mathematics Ltd.\r
+ * @author Daniel Winterstein\r
+ * 11 Jan 2007\r
+ */\r
+package winterwell.markdown.editors;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Arrays;\r
+\r
+import org.eclipse.core.runtime.Assert;\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
+/**\r
+ * \r
+ *\r
+ * @author Daniel Winterstein\r
+ */\r
+public class ListRule implements IRule {\r
+ private ArrayList<Integer> markerList;\r
+ protected IToken fToken;\r
+ \r
+ public ListRule(IToken token) { \r
+ Assert.isNotNull(token);\r
+ fToken= token;\r
+ }\r
+ \r
+\r
+ /*\r
+ * @see IRule#evaluate(ICharacterScanner)\r
+ * @since 2.0\r
+ */\r
+ public IToken evaluate(ICharacterScanner scanner) {\r
+ if (scanner.getColumn() != 0) {\r
+ return Token.UNDEFINED;\r
+ }\r
+// // Fast mode\r
+// if (scanner.read() != '-') {\r
+// scanner.unread();\r
+// return Token.UNDEFINED;\r
+// }\r
+// if (Character.isWhitespace(scanner.read())) {\r
+// return fToken;\r
+// }\r
+// scanner.unread();\r
+// scanner.unread();\r
+// return Token.UNDEFINED;\r
+// // Fast mode\r
+ int readCount = 0;\r
+ int c;\r
+ while ((c = scanner.read()) != ICharacterScanner.EOF) {\r
+ readCount++;\r
+ if( !Character.isWhitespace( c ) ) {\r
+ int after = scanner.read();\r
+// readCount++;\r
+ scanner.unread();\r
+// if ( markerList.contains(c) && Character.isWhitespace( after ) ) {\r
+ if ( (c == '-' || c == '+' || c == '*') \r
+ && Character.isWhitespace( after ) ) {\r
+ return fToken;\r
+ } else {\r
+ for (; readCount > 0; readCount--)\r
+ scanner.unread();\r
+ return Token.UNDEFINED;\r
+ }\r
+ }\r
+ }\r
+ // Reached ICharacterScanner.EOF\r
+ for (; readCount > 0; readCount--)\r
+ scanner.unread();\r
+ return Token.UNDEFINED;\r
+ }\r
+}\r