in nuget-agent/src/jetbrains/buildServer/nuget/agent/util/fsScanner/AntPatternState.java [67:115]
public AntPatternStateMatch enter(@NotNull final String component) {
if (myPatternParts.size() == 0) {
return new AntPatternStateMatch(MatchResult.NO, this);
}
MatchResult match = MatchResult.MAYBELATER;
//TODO:replace list with array operations
final List<Integer> newPositions = new ArrayList<Integer>(myPatternPositions.size());
for (int pos : myPatternPositions) {
final Wildcard wildcard = myPatternParts.get(pos);
if (wildcard != null) {
if (wildcard.isMatch(component)) {
if (pos == myPatternParts.size() - 1) {
match = MatchResult.YES;
} else if (pos == myPatternParts.size() - 2 && myPatternParts.get(pos + 1) == null) {
match = MatchResult.YES;
newPositions.add(pos + 1);
} else {
newPositions.add(pos + 1);
}
} else if (match == MatchResult.MAYBELATER) {
match = MatchResult.NO;
}
} else {
// **
newPositions.add(pos);
if (pos == myPatternParts.size() - 1) {
match = MatchResult.YES;
} else {
if (myPatternParts.get(pos + 1).isMatch(component)) {
if (pos == myPatternParts.size() - 2) {
match = MatchResult.YES;
} else {
newPositions.add(pos + 2);
}
}
}
}
}
return new AntPatternStateMatch(
match,
new AntPatternState(myPatternParts, newPositions));
}