/** * Copyright winterwell Mathematics Ltd. * @author Daniel Winterstein * 13 Jan 2007 */ package winterwell.markdown.editors; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.text.rules.IRule; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.ITokenScanner; import org.eclipse.jface.text.rules.IWhitespaceDetector; import org.eclipse.jface.text.rules.IWordDetector; import org.eclipse.jface.text.rules.MultiLineRule; import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.rules.SingleLineRule; import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.text.rules.WhitespaceRule; import org.eclipse.jface.text.rules.WordRule; import org.eclipse.swt.SWT; /** * * * @author Daniel Winterstein */ public class MDScanner extends RuleBasedScanner { ColorManager cm; public MDScanner(ColorManager cm) { this.cm = cm; Token heading = new Token(new TextAttribute(cm.getColor(MDColorConstants.HEADER), null, SWT.BOLD)); Token comment = new Token(new TextAttribute(cm.getColor(MDColorConstants.COMMENT))); Token emphasis = new Token(new TextAttribute(cm.getColor(MDColorConstants.DEFAULT), null, SWT.ITALIC)); setRules(new IRule[] { new HeaderRule(heading), new EmphasisRule("_", emphasis), new EmphasisRule("***", emphasis), new EmphasisRule("**", emphasis), new EmphasisRule("*", emphasis), new MultiLineRule("<!--", "-->", comment), new WhitespaceRule(new IWhitespaceDetector() { public boolean isWhitespace(char c) { return Character.isWhitespace(c); } }), }); } }