one dot cannot match several

This commit is contained in:
peter
2011-04-01 19:11:37 +02:00
parent 03fff9bca9
commit 3cddf0efb1
@@ -464,7 +464,7 @@ public class NameUtil {
public MinusculeMatcher(String pattern, MatchingCaseSensitivity options) {
myOptions = options;
myPattern = StringUtil.trimEnd(pattern, "* ").replaceAll(":", "\\*:").replaceAll("\\.", "\\*\\.").toCharArray();
myPattern = StringUtil.trimEnd(pattern, "* ").replaceAll(":", "\\*:").toCharArray();
}
@Nullable
@@ -476,8 +476,11 @@ public class NameUtil {
return null;
}
if ('.' == myPattern[patternIndex] && name.charAt(nameIndex) != '.') {
return skipChars(name, patternIndex, nameIndex, false);
}
if ('*' == myPattern[patternIndex]) {
return handleAsterisk(name, patternIndex, nameIndex);
return skipChars(name, patternIndex, nameIndex, true);
}
if (patternIndex == 0 && myOptions != MatchingCaseSensitivity.NONE && name.charAt(nameIndex) != myPattern[0]) {
@@ -555,7 +558,7 @@ public class NameUtil {
}
@Nullable
private FList<TextRange> handleAsterisk(String name, int patternIndex, int nameIndex) {
private FList<TextRange> skipChars(String name, int patternIndex, int nameIndex, boolean maySkipNextChar) {
while ('*' == myPattern[patternIndex]) {
patternIndex++;
if (patternIndex == myPattern.length) {
@@ -575,6 +578,9 @@ public class NameUtil {
if (ranges != null) {
return ranges;
}
if (!maySkipNextChar) {
return null;
}
fromIndex = next + 1;
}
return null;