]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/winterwell.markdown/src/winterwell/markdown/editors/MDScanner.java
Tycho compilation changes for SVN version also.
[simantics/platform.git] / bundles / winterwell.markdown / src / winterwell / markdown / editors / MDScanner.java
1 /**\r
2  * Copyright winterwell Mathematics Ltd.\r
3  * @author Daniel Winterstein\r
4  * 13 Jan 2007\r
5  */\r
6 package winterwell.markdown.editors;\r
7 \r
8 import org.eclipse.jface.preference.IPreferenceStore;\r
9 import org.eclipse.jface.preference.PreferenceConverter;\r
10 import org.eclipse.jface.text.TextAttribute;\r
11 import org.eclipse.jface.text.rules.IRule;\r
12 import org.eclipse.jface.text.rules.IWhitespaceDetector;\r
13 import org.eclipse.jface.text.rules.MultiLineRule;\r
14 import org.eclipse.jface.text.rules.RuleBasedScanner;\r
15 import org.eclipse.jface.text.rules.Token;\r
16 import org.eclipse.jface.text.rules.WhitespaceRule;\r
17 import org.eclipse.swt.SWT;\r
18 \r
19 import winterwell.markdown.Activator;\r
20 import winterwell.markdown.preferences.MarkdownPreferencePage;\r
21 \r
22 /**\r
23  * \r
24  *\r
25  * @author Daniel Winterstein\r
26  */\r
27 public class MDScanner extends RuleBasedScanner {\r
28         ColorManager cm;\r
29     public MDScanner(ColorManager cm) {\r
30         this.cm = cm;\r
31         IPreferenceStore pStore = Activator.getDefault().getPreferenceStore();\r
32         Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD));\r
33         Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_COMMENT))));\r
34         Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFUALT)), null, SWT.ITALIC));\r
35         Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD));\r
36         Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_LINK)), null, TextAttribute.UNDERLINE));\r
37         Token code = new Token(new TextAttribute(\r
38                         cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE)),\r
39                         cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE_BG)),\r
40                         SWT.NORMAL));\r
41         setRules(new IRule[] {\r
42            new LinkRule(link),\r
43            new HeaderRule(heading),\r
44            new HeaderWithUnderlineRule(heading),\r
45            new ListRule(list),\r
46            new EmphasisRule("_", emphasis),\r
47            new EmphasisRule("***", emphasis),\r
48            new EmphasisRule("**", emphasis),\r
49            new EmphasisRule("*", emphasis),\r
50            new EmphasisRule("``", code),\r
51            new EmphasisRule("`", code),\r
52            new MultiLineRule("<!--", "-->", comment),\r
53            // WhitespaceRule messes up with the rest of rules\r
54 //           new WhitespaceRule(new IWhitespaceDetector() {\r
55 //              public boolean isWhitespace(char c) {\r
56 //                 return Character.isWhitespace(c);\r
57 //              }\r
58 //           }),\r
59         });\r
60      }\r
61 }\r