package org.angularjs.lang.psi; import com.intellij.lang.ASTNode; import com.intellij.lang.javascript.psi.JSArgumentList; import com.intellij.lang.javascript.psi.JSCallExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.psi.impl.JSCallExpressionImpl; import com.intellij.lang.javascript.psi.impl.JSExpressionImpl; import com.intellij.lang.javascript.psi.stubs.JSElementIndexingData; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author Dennis.Ushakov */ public class AngularJSFilterExpression extends JSExpressionImpl implements JSCallExpression { public AngularJSFilterExpression(IElementType elementType) { super(elementType); } public static boolean isFilterNameRef(PsiReference ref, PsiElement parent) { return parent instanceof AngularJSFilterExpression && ((AngularJSFilterExpression)parent).getFilterName() == ref; } public JSReferenceExpression getFilterName() { return (JSReferenceExpression)getFirstChild(); } @Override public JSExpression getMethodExpression() { final ASTNode node = JSCallExpressionImpl.getMethodExpression(getNode()); return node != null ? (JSExpression)node.getPsi() : null; } @Override public JSExpression getStubSafeMethodExpression() { return null; } @Nullable @Override public JSArgumentList getArgumentList() { final ASTNode argumentList = JSCallExpressionImpl.getArgumentList(getNode()); return argumentList != null ? (JSArgumentList)argumentList.getPsi() : null; } @NotNull @Override public JSExpression[] getArguments() { JSArgumentList argumentList = getArgumentList(); return argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; } @Override public boolean isRequireCall() { return false; } @Override public boolean isDefineCall() { return false; } @Nullable @Override public JSElementIndexingData getIndexingData() { return null; } }