Package org.kacprzak.eclipse.django_editor.editors

Source Code of org.kacprzak.eclipse.django_editor.editors.DjangoPartitionScanner

package org.kacprzak.eclipse.django_editor.editors;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.text.rules.IPredicateRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.MultiLineRule;
import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
import org.kacprzak.eclipse.django_editor.IDjangoPartitions;
import org.kacprzak.eclipse.django_editor.editors.html.DocTypeRule;

/**
* Django file partitions scanner
* @author Zbigniew Kacprzak
*/
public class DjangoPartitionScanner extends RuleBasedPartitionScanner {

  public DjangoPartitionScanner() {

    IToken djTag      = new Token(IDjangoPartitions.DJANGO_TAG);
    IToken djVariable    = new Token(IDjangoPartitions.DJANGO_VARIABLE);
    IToken djComment    = new Token(IDjangoPartitions.DJANGO_COMMENT);

    IToken htmlComment    = new Token(IDjangoPartitions.HTML_COMMENT);
    IToken htmlTag      = new Token(IDjangoPartitions.HTML_TAG);
    IToken htmlScriptlet = new Token(IDjangoPartitions.HTML_SCRIPTLET);
    IToken htmlDoctype   = new Token(IDjangoPartitions.HTML_DOCTYPE);
    IToken htmlDirective = new Token(IDjangoPartitions.HTML_DIRECTIVE);
    IToken javaScript    = new Token(IDjangoPartitions.JAVA_SCRIPT);
    IToken htmlCss       = new Token(IDjangoPartitions.HTML_CSS);

    List<IPredicateRule> rules = new ArrayList<IPredicateRule>();

    rules.add(new MultiLineRule("{% comment %}", "{% endcomment %}", djComment));
    rules.add(new SingleLineRule("{#", "#}", djComment));
    rules.add(new SingleLineRule("{%", "%}", djTag));
    rules.add(new SingleLineRule("{{", "}}", djVariable));

    rules.add(new MultiLineRule("<!--", "-->", htmlComment));
    rules.add(new MultiLineRule("<%--", "--%>", htmlComment));
    rules.add(new DocTypeRule(htmlDoctype));
    rules.add(new MultiLineRule("<%@", "%>", htmlDirective));
    rules.add(new MultiLineRule("<%", "%>", htmlScriptlet));
    rules.add(new MultiLineRule("<![CDATA[", "]]>", htmlDoctype));
    rules.add(new MultiLineRule("<?xml", "?>", htmlDoctype));
    rules.add(new MultiLineRule("<script", "</script>", javaScript));
    rules.add(new MultiLineRule("<style", "</style>", htmlCss));
    rules.add(new MultiLineRule("<", ">", htmlTag));

    setPredicateRules(rules.toArray(new IPredicateRule[0]));
  }
}
TOP

Related Classes of org.kacprzak.eclipse.django_editor.editors.DjangoPartitionScanner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.