diff options
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/filters/LexicalNodesFilter.java')
-rw-r--r-- | platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/filters/LexicalNodesFilter.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/filters/LexicalNodesFilter.java b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/filters/LexicalNodesFilter.java new file mode 100644 index 000000000000..3cef402b09d3 --- /dev/null +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/filters/LexicalNodesFilter.java @@ -0,0 +1,51 @@ +package com.intellij.structuralsearch.impl.matcher.filters; + +import com.intellij.dupLocator.util.NodeFilter; +import com.intellij.psi.PsiElement; +import com.intellij.structuralsearch.StructuralSearchProfile; +import com.intellij.structuralsearch.StructuralSearchUtil; + +/** + * Filter for lexical nodes + */ +public final class LexicalNodesFilter implements NodeFilter { + private boolean careKeyWords; + private boolean result; + + private LexicalNodesFilter() {} + + public static NodeFilter getInstance() { + return NodeFilterHolder.instance; + } + + public boolean getResult() { + return result; + } + + public void setResult(boolean result) { + this.result = result; + } + + private static class NodeFilterHolder { + private static final NodeFilter instance = new LexicalNodesFilter(); + } + + public boolean isCareKeyWords() { + return careKeyWords; + } + + public void setCareKeyWords(boolean careKeyWords) { + this.careKeyWords = careKeyWords; + } + + public boolean accepts(PsiElement element) { + result = false; + if (element!=null) { + final StructuralSearchProfile profile = StructuralSearchUtil.getProfileByPsiElement(element); + if (profile != null) { + element.accept(profile.getLexicalNodesFilter(this)); + } + } + return result; + } +} |