summaryrefslogtreecommitdiff
path: root/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImplUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImplUtil.java')
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImplUtil.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImplUtil.java b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImplUtil.java
new file mode 100644
index 000000000000..ffc9ae78e876
--- /dev/null
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/MatcherImplUtil.java
@@ -0,0 +1,67 @@
+package com.intellij.structuralsearch.impl.matcher;
+
+import com.intellij.lang.Language;
+import com.intellij.openapi.fileTypes.FileType;
+import com.intellij.openapi.fileTypes.LanguageFileType;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.PsiElement;
+import com.intellij.structuralsearch.MatchOptions;
+import com.intellij.structuralsearch.StructuralSearchProfile;
+import com.intellij.structuralsearch.StructuralSearchUtil;
+import com.intellij.structuralsearch.impl.matcher.compiler.PatternCompiler;
+import com.intellij.util.IncorrectOperationException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Maxim.Mossienko
+ * Date: Mar 19, 2004
+ * Time: 6:56:25 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class MatcherImplUtil {
+
+ public static void transform(MatchOptions options) {
+ if (options.hasVariableConstraints()) return;
+ PatternCompiler.transformOldPattern(options);
+ }
+
+ public static PsiElement[] createTreeFromText(String text, PatternTreeContext context, FileType fileType, Project project)
+ throws IncorrectOperationException {
+ return createTreeFromText(text, context, fileType, null, null, project, false);
+ }
+
+ public static PsiElement[] createSourceTreeFromText(String text,
+ PatternTreeContext context,
+ FileType fileType,
+ String extension,
+ Project project,
+ boolean physical) {
+ if (fileType instanceof LanguageFileType) {
+ Language language = ((LanguageFileType)fileType).getLanguage();
+ StructuralSearchProfile profile = StructuralSearchUtil.getProfileByLanguage(language);
+ if (profile != null) {
+ return profile.createPatternTree(text, context, fileType, null, null, extension, project, physical);
+ }
+ }
+ return PsiElement.EMPTY_ARRAY;
+ }
+
+ public static PsiElement[] createTreeFromText(String text,
+ PatternTreeContext context,
+ FileType fileType,
+ Language language,
+ String contextName,
+ Project project,
+ boolean physical) throws IncorrectOperationException {
+ if (language == null && fileType instanceof LanguageFileType) {
+ language = ((LanguageFileType)fileType).getLanguage();
+ }
+ if (language != null) {
+ StructuralSearchProfile profile = StructuralSearchUtil.getProfileByLanguage(language);
+ if (profile != null) {
+ return profile.createPatternTree(text, context, fileType, language, contextName, null, project, physical);
+ }
+ }
+ return PsiElement.EMPTY_ARRAY;
+ }
+}