package org.jetbrains.plugins.clojure.psi.util;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiClass;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.clojure.psi.api.ClList;
import org.jetbrains.plugins.clojure.psi.api.ClListLike;
import org.jetbrains.plugins.clojure.psi.api.ClVector;
import org.jetbrains.plugins.clojure.psi.api.ClojureFile;
/**
* @author ilyas
*/
public abstract class ClojurePsiFactory {
public static ClojurePsiFactory getInstance(Project project) {
return ServiceManager.getService(project, ClojurePsiFactory.class);
}
public abstract ASTNode createSymbolNodeFromText(@NotNull String newName);
public abstract boolean hasSyntacticalErrors(@NotNull String text);
public abstract String getErrorMessage(@NotNull String text);
public abstract ClojureFile createClojureFileFromText(@NotNull String text);
public abstract ClList createListFromText(@NotNull String text);
public abstract ClVector createVectorFromText(@NotNull String text);
@Nullable
public abstract ClListLike findOrCreateJavaImportForClass(PsiClass clazz, ClList importClause);
}