diff options
Diffstat (limited to 'platform/indexing-api/src/com/intellij/psi/search/IndexPattern.java')
-rw-r--r-- | platform/indexing-api/src/com/intellij/psi/search/IndexPattern.java | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/platform/indexing-api/src/com/intellij/psi/search/IndexPattern.java b/platform/indexing-api/src/com/intellij/psi/search/IndexPattern.java index fc5de78f9407..0066c260f1b3 100644 --- a/platform/indexing-api/src/com/intellij/psi/search/IndexPattern.java +++ b/platform/indexing-api/src/com/intellij/psi/search/IndexPattern.java @@ -16,6 +16,7 @@ package com.intellij.psi.search; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -29,6 +30,7 @@ import java.util.regex.PatternSyntaxException; */ public class IndexPattern { @NotNull private String myPatternString; + private Pattern myOptimizedIndexingPattern; private boolean myCaseSensitive; private Pattern myPattern; @@ -49,10 +51,14 @@ public class IndexPattern { return myPatternString; } - public Pattern getPattern() { + public @Nullable Pattern getPattern() { return myPattern; } + public @Nullable Pattern getOptimizedIndexingPattern() { + return myOptimizedIndexingPattern; + } + public boolean isCaseSensitive() { return myCaseSensitive; } @@ -68,16 +74,21 @@ public class IndexPattern { } private void compilePattern() { - try{ - if (myCaseSensitive){ - myPattern = Pattern.compile(myPatternString); + try { + int flags = 0; + if (!myCaseSensitive) { + flags = Pattern.CASE_INSENSITIVE; } - else{ - myPattern = Pattern.compile(myPatternString, Pattern.CASE_INSENSITIVE); + myPattern = Pattern.compile(myPatternString, flags); + String optimizedPattern = myPatternString; + if (optimizedPattern.startsWith(".*")) { + optimizedPattern = optimizedPattern.substring(".*".length()); } + myOptimizedIndexingPattern = Pattern.compile(optimizedPattern, flags); } catch(PatternSyntaxException e){ myPattern = null; + myOptimizedIndexingPattern = null; } } |