Exemple #1
0
        public static PatternSelect AddTransform(this PatternSelect subject, string name, Func <PatternContext, PatternResult, PatternResult> select)
        {
            subject.VerifyNotNull(nameof(subject));
            name.VerifyNotEmpty(nameof(name));
            select.VerifyNotNull(nameof(select));

            subject.Add(name, select);

            return(subject);
        }
Exemple #2
0
        public static PatternSelect AddPattern(this PatternSelect subject, string name, string pattern, Func <PatternContext, PatternResult, PatternResult>?transform = null)
        {
            subject.VerifyNotNull(nameof(subject));
            name.VerifyNotEmpty(nameof(name));
            pattern.VerifyNotEmpty(nameof(pattern));

            subject.Add(name, context =>
            {
                var search = new PatternSearch
                {
                    Name    = name,
                    Pattern = pattern
                };

                if (new PatternTransform().TryMatch(search, context.Source, out PatternResult? pathPatternResult) == false)
                {
                    return(null);
                }

                return(transform?.Invoke(context, pathPatternResult) ?? pathPatternResult);
            });

            return(subject);
        }