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)); } }
internal static Regex GetRegex(string pattern) => GlobEnumerator.GetRegex(pattern);
public static Regex GetRegex(string pattern) { return(GlobEnumerator.GetRegex(pattern)); }