include underscore matches into matching fragments

This commit is contained in:
peter
2012-01-25 13:10:59 +01:00
parent f0c10664a4
commit 408fc84d53
2 changed files with 20 additions and 6 deletions
@@ -282,6 +282,11 @@ public class NameUtilTest extends UsefulTestCase {
assertOrderedEquals(new NameUtil.MinusculeMatcher("doge*st", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
TextRange.from(0, 4), TextRange.from(22, 2));
sample = "_test";
assertOrderedEquals(new NameUtil.MinusculeMatcher("_", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
TextRange.from(0, 1));
assertOrderedEquals(new NameUtil.MinusculeMatcher("_t", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
TextRange.from(0, 2));
}
public void testMatchingDegree() {
@@ -486,17 +486,21 @@ public class NameUtil {
while (i > 0) {
FList<TextRange> ranges = matchName(name, patternIndex + i, nextStart);
if (ranges != null) {
TextRange head = ranges.getHead();
if (head != null && head.getStartOffset() == nameIndex + i) {
return ranges.getTail().prepend(new TextRange(nameIndex, head.getEndOffset()));
}
return ranges.prepend(TextRange.from(nameIndex, i));
return prependRange(ranges, nameIndex, i);
}
i--;
}
return null;
}
private static FList<TextRange> prependRange(FList<TextRange> ranges, int from, int to) {
TextRange head = ranges.getHead();
if (head != null && head.getStartOffset() == from + to) {
return ranges.getTail().prepend(new TextRange(from, head.getEndOffset()));
}
return ranges.prepend(TextRange.from(from, to));
}
private boolean isWordSeparator(char c) {
return mySeparatorFunction.fun(c);
}
@@ -513,7 +517,12 @@ public class NameUtil {
return null;
}
return matchName(name, patternIndex + 1, nextStart);
final FList<TextRange> ranges = matchName(name, patternIndex + 1, nextStart);
if (ranges != null) {
return prependRange(ranges, patternIndex, patternIndex + 1);
}
return ranges;
}
return matchName(name, patternIndex, nextStart);