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 | } |
---|