001/* 002 * JDrupes GitVersioning 003 * Copyright (C) 2026 Michael N. Lipp 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <https://www.gnu.org/licenses/>. 017 */ 018 019package org.jdrupes.gitversioning.core; 020 021import io.github.azagniotov.matcher.AntPathMatcher; 022import java.nio.file.Path; 023 024/** 025 * Matches paths against an Ant-style pattern. 026 * 027 * <p>Supports {@code *}, {@code **}, and {@code ?} wildcards via the 028 * ant-style-path-matcher library. 029 */ 030public class AntPatternMatcher implements IncludeMatcher { 031 032 @SuppressWarnings("PMD.FieldNamingConventions") 033 private static final AntPathMatcher pathMatcher 034 = new AntPathMatcher.Builder().build(); 035 private final String pattern; 036 037 /** 038 * Creates a new Ant pattern matcher. 039 * 040 * @param pattern the Ant-style pattern 041 */ 042 public AntPatternMatcher(String pattern) { 043 this.pattern = pattern; 044 } 045 046 @Override 047 public boolean matches(Path path) { 048 return pathMatcher.isMatch(pattern, path.toString()); 049 } 050 051}