]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/winterwell.markdown/src/winterwell/markdown/editors/MDScanner.java
migrated to svn revision 33108
[simantics/platform.git] / bundles / winterwell.markdown / src / winterwell / markdown / editors / MDScanner.java
diff --git a/bundles/winterwell.markdown/src/winterwell/markdown/editors/MDScanner.java b/bundles/winterwell.markdown/src/winterwell/markdown/editors/MDScanner.java
new file mode 100644 (file)
index 0000000..60a307b
--- /dev/null
@@ -0,0 +1,61 @@
+/**\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