public AntPatternStateMatch enter()

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));
  }