Class PathMatcher

  • All Implemented Interfaces:
    IMatcher

    public class PathMatcher
    extends AbstractMatcher
    Matcher built by patterns consists of multiple path segments.

    This class is immutable and thread safe.

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private PathMatcher​(java.lang.String pattern, java.lang.Character pathSeparator, boolean dirOnly)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static java.util.List<IMatcher> createMatchers​(java.util.List<java.lang.String> segments, java.lang.Character pathSeparator, boolean dirOnly)  
      private static IMatcher createNameMatcher0​(java.lang.String segment, java.lang.Character pathSeparator, boolean dirOnly, boolean lastSegment)  
      static IMatcher createPathMatcher​(java.lang.String pattern, java.lang.Character pathSeparator, boolean dirOnly)
      Create path matcher
      private boolean isSimplePathWithSegments​(java.lang.String path)  
      private static boolean isWild​(IMatcher matcher)  
      private boolean iterate​(java.lang.String path, int startIncl, int endExcl, boolean assumeDirectory, boolean pathMatch)  
      private boolean matches​(int matcherIdx, java.lang.String path, int startIncl, int endExcl, boolean assumeDirectory, boolean pathMatch)  
      boolean matches​(java.lang.String path, boolean assumeDirectory, boolean pathMatch)
      Matches entire given string
      boolean matches​(java.lang.String segment, int startIncl, int endExcl)
      Matches only part of given string
      private boolean simpleMatch​(java.lang.String path, boolean assumeDirectory, boolean pathMatch)  
      private static java.lang.String trim​(java.lang.String pattern)
      Trim trailing spaces, unless they are escaped with backslash, see https://www.kernel.org/pub/software/scm/git/docs/gitignore.html
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • WILD_NO_DIRECTORY

        private static final WildMatcher WILD_NO_DIRECTORY
      • WILD_ONLY_DIRECTORY

        private static final WildMatcher WILD_ONLY_DIRECTORY
      • matchers

        private final java.util.List<IMatcher> matchers
      • slash

        private final char slash
      • beginning

        private final boolean beginning
    • Method Detail

      • isSimplePathWithSegments

        private boolean isSimplePathWithSegments​(java.lang.String path)
      • createPathMatcher

        public static IMatcher createPathMatcher​(java.lang.String pattern,
                                                 java.lang.Character pathSeparator,
                                                 boolean dirOnly)
                                          throws InvalidPatternException
        Create path matcher
        Parameters:
        pattern - a pattern
        pathSeparator - if this parameter isn't null then this character will not match at wildcards(* and ? are wildcards).
        dirOnly - a boolean.
        Returns:
        never null
        Throws:
        InvalidPatternException
      • trim

        private static java.lang.String trim​(java.lang.String pattern)
        Trim trailing spaces, unless they are escaped with backslash, see https://www.kernel.org/pub/software/scm/git/docs/gitignore.html
        Parameters:
        pattern - non null
        Returns:
        trimmed pattern
      • matches

        public boolean matches​(java.lang.String path,
                               boolean assumeDirectory,
                               boolean pathMatch)
        Matches entire given string
        Parameters:
        path - string which is not null, but might be empty
        assumeDirectory - true to assume this path as directory (even if it doesn't end with a slash)
        pathMatch - true if the match is for the full path: prefix-only matches are not allowed
        Returns:
        true if this matcher pattern matches given string
      • simpleMatch

        private boolean simpleMatch​(java.lang.String path,
                                    boolean assumeDirectory,
                                    boolean pathMatch)
      • matches

        public boolean matches​(java.lang.String segment,
                               int startIncl,
                               int endExcl)
        Matches only part of given string
        Parameters:
        segment - string which is not null, but might be empty
        startIncl - start index, inclusive
        endExcl - end index, exclusive
        Returns:
        true if this matcher pattern matches given string
      • iterate

        private boolean iterate​(java.lang.String path,
                                int startIncl,
                                int endExcl,
                                boolean assumeDirectory,
                                boolean pathMatch)
      • matches

        private boolean matches​(int matcherIdx,
                                java.lang.String path,
                                int startIncl,
                                int endExcl,
                                boolean assumeDirectory,
                                boolean pathMatch)
      • isWild

        private static boolean isWild​(IMatcher matcher)