[13] | 1 | package com.framsticks.framclipse.editors.configuration; |
---|
| 2 | |
---|
| 3 | import java.util.ArrayList; |
---|
| 4 | import java.util.List; |
---|
| 5 | |
---|
| 6 | import org.eclipse.jface.text.rules.EndOfLineRule; |
---|
| 7 | import org.eclipse.jface.text.rules.IPredicateRule; |
---|
| 8 | import org.eclipse.jface.text.rules.IToken; |
---|
| 9 | import org.eclipse.jface.text.rules.MultiLineRule; |
---|
| 10 | import org.eclipse.jface.text.rules.RuleBasedPartitionScanner; |
---|
| 11 | import org.eclipse.jface.text.rules.Token; |
---|
| 12 | |
---|
| 13 | public class FramscriptPartitionScanner extends RuleBasedPartitionScanner { |
---|
| 14 | public final static String CODE = "__framscript_code"; |
---|
| 15 | public final static String DESCRIPTION = "__framscript_description"; |
---|
| 16 | public final static String UNDEFINED = "__framscript_undefined"; |
---|
| 17 | |
---|
| 18 | public final static String COMMENT = "__framscript_comment"; |
---|
| 19 | |
---|
| 20 | public final static String[] PARTITION_TYPES = new String[] { CODE, DESCRIPTION, UNDEFINED, COMMENT}; |
---|
| 21 | |
---|
| 22 | public FramscriptPartitionScanner(String codeFileName) { |
---|
| 23 | IToken code = new Token(CODE); |
---|
| 24 | IToken description = new Token(DESCRIPTION); |
---|
| 25 | IToken comment = new Token(COMMENT); |
---|
| 26 | |
---|
| 27 | List<IPredicateRule> rules = new ArrayList<IPredicateRule>(); |
---|
| 28 | rules.add(new MultiLineRule(codeFileName + ":~", "~", code, '\\', false)); |
---|
| 29 | rules.add(new MultiLineRule(":~", "~", description, '\\', false)); |
---|
| 30 | rules.add(new EndOfLineRule(":", new Token(UNDEFINED))); |
---|
| 31 | rules.add(new EndOfLineRule("#", comment)); |
---|
| 32 | |
---|
| 33 | IPredicateRule[] result = new IPredicateRule[rules.size()]; |
---|
| 34 | result = rules.toArray(result); |
---|
| 35 | setPredicateRules(result); |
---|
| 36 | setDefaultReturnToken(new Token(UNDEFINED)); |
---|
| 37 | } |
---|
| 38 | } |
---|