in src/Microsoft.Atlas.CommandLine/Targets/PatternMatcherFactory.cs [27:53]
private IEnumerable<PatternMatcherExpression> CreateExpressions(string pattern)
{
var normalizedPattern = pattern;
if (!normalizedPattern.StartsWith("/"))
{
normalizedPattern = "/" + normalizedPattern;
}
if (!normalizedPattern.EndsWith("/") && !normalizedPattern.EndsWith("/**"))
{
normalizedPattern = normalizedPattern + "/**";
}
if (!normalizedPattern.EndsWith("/"))
{
normalizedPattern = normalizedPattern + "/";
}
var segments = normalizedPattern.Split('/');
foreach (var length in Enumerable.Range(1, segments.Count() - 1))
{
var globPattern = segments.Take(length).Aggregate(string.Empty, (path, segment) => path + segment + "/");
var regexPattern = segments.Take(length).Select(SegmentToRegex).Aggregate("^", (path, segment) => path + segment + "/") + "$";
yield return new PatternMatcherExpression(pattern, globPattern, regexPattern);
}
}