package org.jetbrains.plugins.clojure.psi.util;
import com.intellij.psi.PsiElement;
import org.jetbrains.plugins.clojure.psi.api.ClList;
import org.jetbrains.plugins.clojure.psi.api.ClQuotedForm;
import org.jetbrains.plugins.clojure.psi.api.ns.ClNs;
/**
* @author ilyas
*/
public abstract class ClojurePsiCheckers {
public static boolean isImportList(PsiElement elem) {
return specificHeadText(elem, ClojureKeywords.IMPORT);
}
public static boolean isRequireList(PsiElement elem) {
return specificHeadText(elem, ClojureKeywords.REQUIRE);
}
public static boolean isUseList(PsiElement elem) {
return specificHeadText(elem, ClojureKeywords.USE);
}
public static boolean isNs(PsiElement elem) {
return (elem instanceof ClNs);
}
private static boolean specificHeadText(PsiElement elem, String head) {
return (elem instanceof ClList) &&
head.equals(((ClList) elem).getHeadText());
}
public static boolean isImportingClause(PsiElement elem) {
return isImportList(elem) ||
isRequireList(elem) ||
isUseList(elem);
}
public static boolean isImportMember(ClList list) {
return isImportingClause(list.getParent()) ||
(list.getParent() instanceof ClQuotedForm &&
isImportingClause(list.getParent().getParent()));
}
}