1 55 56 package freemarker.eclipse.editors; 57 58 import java.util.ArrayList ; 59 import java.util.List ; 60 61 import org.eclipse.jface.text.IDocument; 62 import org.eclipse.jface.text.rules.IPredicateRule; 63 import org.eclipse.jface.text.rules.IToken; 64 import org.eclipse.jface.text.rules.MultiLineRule; 65 import org.eclipse.jface.text.rules.RuleBasedPartitionScanner; 66 import org.eclipse.jface.text.rules.Token; 67 68 79 public class PartitionScanner extends RuleBasedPartitionScanner { 80 81 public final static String FTL_COMMENT = "__ftl_comment"; 82 public final static String FTL_DIRECTIVE = "__ftl_directive"; 83 public final static String FTL_INTERPOLATION = "__ftl_interpolation"; 84 public final static String XML_TAG = "__xml_tag"; 85 public final static String XML_COMMENT = "__xml_comment"; 86 87 90 public final static String [] PARTITIONS = { 91 IDocument.DEFAULT_CONTENT_TYPE, 92 FTL_COMMENT, 93 FTL_DIRECTIVE, 94 FTL_INTERPOLATION, 95 XML_TAG, 96 XML_COMMENT 97 }; 98 99 102 public PartitionScanner() { 103 List rules = new ArrayList (); 104 105 IToken ftlComment = new Token(FTL_COMMENT); 106 IToken ftlDirective = new Token(FTL_DIRECTIVE); 107 IToken ftlInterpolation = new Token(FTL_INTERPOLATION); 108 IToken xmlComment = new Token(XML_COMMENT); 109 IToken xmlTag = new Token(XML_TAG); 110 111 rules.add(new MultiLineRule("<#--", "-->", ftlComment)); 112 rules.add(new DirectiveRule(ftlDirective)); 113 rules.add(new InterpolationRule(ftlInterpolation)); 114 rules.add(new XmlCommentRule(xmlComment)); 115 rules.add(new XmlRule(xmlTag)); 116 117 IPredicateRule[] result= new IPredicateRule[rules.size()]; 118 rules.toArray(result); 119 setPredicateRules(result); 120 } 121 } 122 | Popular Tags |