+/**\r
+ * Copyright winterwell Mathematics Ltd.\r
+ * @author Daniel Winterstein\r
+ * 13 Jan 2007\r
+ */\r
+package winterwell.markdown.editors;\r
+\r
+import org.eclipse.jface.preference.IPreferenceStore;\r
+import org.eclipse.jface.preference.PreferenceConverter;\r
+import org.eclipse.jface.text.TextAttribute;\r
+import org.eclipse.jface.text.rules.IRule;\r
+import org.eclipse.jface.text.rules.IWhitespaceDetector;\r
+import org.eclipse.jface.text.rules.MultiLineRule;\r
+import org.eclipse.jface.text.rules.RuleBasedScanner;\r
+import org.eclipse.jface.text.rules.Token;\r
+import org.eclipse.jface.text.rules.WhitespaceRule;\r
+import org.eclipse.swt.SWT;\r
+\r
+import winterwell.markdown.Activator;\r
+import winterwell.markdown.preferences.MarkdownPreferencePage;\r
+\r
+/**\r
+ * \r
+ *\r
+ * @author Daniel Winterstein\r
+ */\r
+public class MDScanner extends RuleBasedScanner {\r
+ ColorManager cm;\r
+ public MDScanner(ColorManager cm) {\r
+ this.cm = cm;\r
+ IPreferenceStore pStore = Activator.getDefault().getPreferenceStore();\r
+ Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD));\r
+ Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_COMMENT))));\r
+ Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFUALT)), null, SWT.ITALIC));\r
+ Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD));\r
+ Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_LINK)), null, TextAttribute.UNDERLINE));\r
+ Token code = new Token(new TextAttribute(\r
+ cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE)),\r
+ cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE_BG)),\r
+ SWT.NORMAL));\r
+ setRules(new IRule[] {\r
+ new LinkRule(link),\r
+ new HeaderRule(heading),\r
+ new HeaderWithUnderlineRule(heading),\r
+ new ListRule(list),\r
+ new EmphasisRule("_", emphasis),\r
+ new EmphasisRule("***", emphasis),\r
+ new EmphasisRule("**", emphasis),\r
+ new EmphasisRule("*", emphasis),\r
+ new EmphasisRule("``", code),\r
+ new EmphasisRule("`", code),\r
+ new MultiLineRule("<!--", "-->", comment),\r
+ // WhitespaceRule messes up with the rest of rules\r
+// new WhitespaceRule(new IWhitespaceDetector() {\r
+// public boolean isWhitespace(char c) {\r
+// return Character.isWhitespace(c);\r
+// }\r
+// }),\r
+ });\r
+ }\r
+}\r