Package org.jetbrains.plugins.clojure.parser

Source Code of org.jetbrains.plugins.clojure.parser.ClojurePsiCreator

package org.jetbrains.plugins.clojure.parser;

import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.plugins.clojure.psi.impl.*;
import org.jetbrains.plugins.clojure.psi.impl.ns.ClNsImpl;
import org.jetbrains.plugins.clojure.psi.impl.ns.ClInNsImpl;
import org.jetbrains.plugins.clojure.psi.impl.ns.ClCreateNsImpl;
import org.jetbrains.plugins.clojure.psi.impl.defs.ClDefImpl;
import org.jetbrains.plugins.clojure.psi.impl.defs.ClDefnMethodImpl;
import org.jetbrains.plugins.clojure.psi.impl.list.ClListImpl;
import org.jetbrains.plugins.clojure.psi.impl.symbols.ClImplicitArgumentImpl;
import org.jetbrains.plugins.clojure.psi.impl.symbols.ClSymbolImpl;

/**
* @author ilyas
*/
public class ClojurePsiCreator {

  public static PsiElement createElement(ASTNode node) {
    final IElementType elementType = node.getElementType();

    if (elementType == ClojureElementTypes.LIST) return new ClListImpl(node);
    if (elementType == ClojureElementTypes.VECTOR) return new ClVectorImpl(node);
    if (elementType == ClojureElementTypes.MAP) return new ClMapImpl(node);
    if (elementType == ClojureElementTypes.SET) return new ClSetImpl(node);

    if (elementType == ClojureElementTypes.MAP_ENTRY) return new ClMapEntryImpl(node);

    if (elementType == ClojureElementTypes.QUOTED_FORM) return new ClQuotedFormImpl(node);
    if (elementType == ClojureElementTypes.META_FORM) return new ClMetaForm(node);
    if (elementType == ClojureElementTypes.METADATA) return new ClMetadataImpl(node);

    if (elementType == ClojureElementTypes.SYMBOL) return new ClSymbolImpl(node);
    if (elementType == ClojureElementTypes.IMPLICIT_ARG) return new ClImplicitArgumentImpl(node);

    if (elementType == ClojureElementTypes.DEF) return new ClDefImpl(node);
    if (elementType == ClojureElementTypes.DEFMETHOD) return new ClDefnMethodImpl(node);

    if (elementType == ClojureElementTypes.NS) return new ClNsImpl(node);
    if (elementType == ClojureElementTypes.IN_NS) return new ClInNsImpl(node);
    if (elementType == ClojureElementTypes.CREATE_NS) return new ClCreateNsImpl(node);

    if (elementType == ClojureElementTypes.BINDINGS) return new ClBindings(node);
    if (elementType == ClojureElementTypes.KEYWORD) return new ClKeywordImpl(node);
    if (elementType == ClojureElementTypes.LITERAL) return new ClLiteralImpl(node);
    if (elementType == ClojureElementTypes.BACKQUOTED_EXPRESSION) return new ClBackQuotedExpression(node);
    if (elementType == ClojureElementTypes.SHARP_EXPRESSION) return new ClSharp(node);
    if (elementType == ClojureElementTypes.TILDA_EXPRESSION) return new ClTilda(node);
    if (elementType == ClojureElementTypes.AT_EXPRESSION) return new ClAt(node);
    if (elementType == ClojureElementTypes.TILDAAT_EXPRESSION) return new ClTildaAt(node);

    throw new Error("Unexpected ASTNode: " + node.getElementType());
  }


}
TOP

Related Classes of org.jetbrains.plugins.clojure.parser.ClojurePsiCreator

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.