package fr.adrienbrault.idea.symfony2plugin.util; import com.intellij.patterns.PlatformPatterns; import com.intellij.psi.PsiElement; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiElementFilter; import org.intellij.lang.annotations.RegExp; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class RegexPsiElementFilter implements PsiElementFilter { private Class aClass; private IElementType elementType; @RegExp private String regex; public <T extends PsiElement> RegexPsiElementFilter(Class<T> aClass, @RegExp String regex) { this.aClass = aClass; this.regex = regex; } public RegexPsiElementFilter(IElementType elementType, @RegExp String regex) { this.elementType = elementType; this.regex = regex; } @Override public boolean isAccepted(PsiElement psiElement) { if(this.aClass != null) { return PlatformPatterns.psiElement(this.aClass).accepts(psiElement) && psiElement.getText().matches(this.regex); } return PlatformPatterns.psiElement(this.elementType).accepts(psiElement) && psiElement.getText().matches(this.regex); } }