summaryrefslogtreecommitdiff
path: root/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/filters/LexicalNodesFilter.java
diff options
context:
space:
mode:
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.java51
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;
+ }
+}