diff --git a/src/Glob/Glob.Statics.cs b/src/Glob/Glob.Statics.cs index 2af390e..a021c67 100644 --- a/src/Glob/Glob.Statics.cs +++ b/src/Glob/Glob.Statics.cs @@ -20,6 +20,34 @@ public static IEnumerable Files(string workingDirectory, string pattern, return Files(directoryInfo, pattern, options).Select(RemovePrefix(truncateLength)); } + public static IEnumerable Files(string pattern) + { + var workingDirectory = ""; + var subpattern = ""; + var openingNonLiterals = "*?[{"; + for (var i = 0; i < pattern.Length; i++) + { + if (openingNonLiterals.Contains(pattern[i]) && (i > 0) && (pattern[i - 1] != '\\')) // find first non-escaped non-literal character + { + workingDirectory = pattern.Substring(0, i); + subpattern = pattern.Substring(i); + break; + } + } + + if (workingDirectory.EndsWith("/")) + { + return Files(workingDirectory, subpattern, GlobOptions.Compiled); + } + else + { + var lastId = workingDirectory.LastIndexOf('/') + 1; + subpattern = workingDirectory.Substring(lastId) + subpattern; + workingDirectory = workingDirectory.Substring(0, lastId); + return Files(workingDirectory, subpattern, GlobOptions.Compiled); + } + } + public static IEnumerable Files(string workingDirectory, string pattern) => Files(workingDirectory, pattern, GlobOptions.Compiled);