Beispiel #1
0
                public static PatternEnumerator Create(string [] patternParts)
                {
                    if (patternParts == null)
                    {
                        return(new TerminalEnumerator());
                    }

                    if (patternParts.Length == 0)
                    {
                        throw new ArgumentException("must have at least one element", nameof(patternParts));
                    }

                    if (patternParts [0] == null)
                    {
                        throw new ArgumentException("must not have null elements", nameof(patternParts));
                    }

                    var root = patternParts [0];

                    string [] childParts = null;

                    if (patternParts.Length > 1)
                    {
                        childParts = new string [patternParts.Length - 1];
                        Array.Copy(patternParts, 1, childParts, 0, childParts.Length);
                    }

                    if (root == "**")
                    {
                        return(new RecursiveDirectoryEnumerator(childParts));
                    }
                    else if (root.Contains("**"))
                    {
                        throw new ArgumentException("invalid pattern: '**' can only be an " +
                                                    $"entire path component ({root}", nameof(patternParts));
                    }
                    else if (GlobEnumerator.CanHandleWildcards(root))
                    {
                        return(new GlobEnumerator(root, childParts));
                    }
                    else
                    {
                        return(new VerbatimEnumerator(root, childParts));
                    }
                }
Beispiel #2
0
 internal static Regex GetRegex(string pattern)
 => GlobEnumerator.GetRegex(pattern);
Beispiel #3
0
 public static Regex GetRegex(string pattern)
 {
     return(GlobEnumerator.GetRegex(pattern));
 }