package com.nvlad.yii2support.common;
import com.intellij.patterns.InitialPatternCondition;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ProcessingContext;
import com.jetbrains.php.injection.PhpElementPattern.Capture;
import com.jetbrains.php.lang.psi.elements.MethodReference;
import com.jetbrains.php.lang.psi.elements.PhpPsiElement;
import org.jetbrains.annotations.Nullable;
/**
* Created by NVlad on 12.01.2017.
*/
public class Patterns extends PlatformPatterns {
public static Capture<MethodReference> methodWithName(String... methodNames) {
return new Capture<>(new InitialPatternCondition<MethodReference>(MethodReference.class) {
@Override
public boolean accepts(@Nullable Object o, ProcessingContext context) {
if (o instanceof MethodReference) {
String methodReferenceName = ((MethodReference) o).getName();
return methodReferenceName != null && ArrayUtil.contains(methodReferenceName, methodNames);
}
return super.accepts(o, context);
}
});
}
public static Capture<PhpPsiElement> withHashKey() {
return new Capture<>(new InitialPatternCondition<PhpPsiElement>(PhpPsiElement.class) {
@Override
public boolean accepts(@Nullable Object o, ProcessingContext context) {
return o != null && o.toString().equals("Array key");
}
});
}
}