|
|
@@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
* Copyright (C) 2014, 2017 Andrey Loskutov <loskutov@gmx.de> and others |
|
|
|
* Copyright (C) 2014, 2020 Andrey Loskutov <loskutov@gmx.de> and others |
|
|
|
* |
|
|
|
* This program and the accompanying materials are made available under the |
|
|
|
* terms of the Eclipse Distribution License v. 1.0 which is available at |
|
|
@@ -7,10 +7,16 @@ |
|
|
|
* |
|
|
|
* SPDX-License-Identifier: BSD-3-Clause |
|
|
|
*/ |
|
|
|
package org.eclipse.jgit.ignore.internal; |
|
|
|
package org.eclipse.jgit.ignore; |
|
|
|
|
|
|
|
import org.eclipse.jgit.annotations.NonNull; |
|
|
|
import org.eclipse.jgit.errors.InvalidPatternException; |
|
|
|
import org.eclipse.jgit.ignore.internal.PathMatcher; |
|
|
|
|
|
|
|
/** |
|
|
|
* Generic string matcher |
|
|
|
* Generic path matcher. |
|
|
|
* |
|
|
|
* @since 5.7 |
|
|
|
*/ |
|
|
|
public interface IMatcher { |
|
|
|
|
|
|
@@ -18,6 +24,7 @@ public interface IMatcher { |
|
|
|
* Matcher that does not match any pattern. |
|
|
|
*/ |
|
|
|
public static final IMatcher NO_MATCH = new IMatcher() { |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean matches(String path, boolean assumeDirectory, |
|
|
|
boolean pathMatch) { |
|
|
@@ -30,6 +37,25 @@ public interface IMatcher { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a path matcher for the given pattern. A pattern may contain the |
|
|
|
* wildcards "?", "*", and "**". The directory separator is '/'. |
|
|
|
* |
|
|
|
* @param pattern |
|
|
|
* to match |
|
|
|
* @param dirOnly |
|
|
|
* whether to match only directories |
|
|
|
* @return a matcher for the given pattern |
|
|
|
* @throws InvalidPatternException |
|
|
|
* if the pattern is invalid |
|
|
|
*/ |
|
|
|
@NonNull |
|
|
|
public static IMatcher createPathMatcher(@NonNull String pattern, |
|
|
|
boolean dirOnly) throws InvalidPatternException { |
|
|
|
return PathMatcher.createPathMatcher(pattern, |
|
|
|
Character.valueOf(FastIgnoreRule.PATH_SEPARATOR), dirOnly); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Matches entire given string |
|
|
|
* |
|
|
@@ -40,10 +66,7 @@ public interface IMatcher { |
|
|
|
* with a slash) |
|
|
|
* @param pathMatch |
|
|
|
* {@code true} if the match is for the full path: prefix-only |
|
|
|
* matches are not allowed, and |
|
|
|
* {@link org.eclipse.jgit.ignore.internal.NameMatcher}s must |
|
|
|
* match only the last component (if they can -- they may not, if |
|
|
|
* they are anchored at the beginning) |
|
|
|
* matches are not allowed |
|
|
|
* @return true if this matcher pattern matches given string |
|
|
|
*/ |
|
|
|
boolean matches(String path, boolean assumeDirectory, boolean pathMatch); |