private IEnumerable CreateExpressions()

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);
            }
        }