Summary

Class:WireMock.Transformers.HandleBarsRegex
Assembly:WireMock.Net
File(s):C:\Users\StefHeyenrath\Documents\GitHub\WireMock.Net\src\WireMock.Net\Transformers\HandleBarsRegex.cs
Covered lines:43
Uncovered lines:0
Coverable lines:43
Total lines:66
Line coverage:100%
Branch coverage:91.6%

Metrics

MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage
Register()0011
ParseArguments(...)0011

File(s)

C:\Users\StefHeyenrath\Documents\GitHub\WireMock.Net\src\WireMock.Net\Transformers\HandleBarsRegex.cs

#LineLine coverage
 1using System;
 2using System.Linq;
 3using System.Text.RegularExpressions;
 4using HandlebarsDotNet;
 5using WireMock.Util;
 6using WireMock.Validation;
 7
 8namespace WireMock.Transformers
 9{
 10    internal static class HandleBarsRegex
 11    {
 12        public static void Register()
 113        {
 114            Handlebars.RegisterHelper("Regex.Match", (writer, context, arguments) =>
 415            {
 416                (string stringToProcess, string regexPattern, object defaultValue) = ParseArguments(arguments);
 117
 418                Match match = Regex.Match(stringToProcess, regexPattern);
 119
 420                if (match.Success)
 221                {
 222                    writer.WriteSafeString(match.Value);
 223                }
 324                else if (defaultValue != null)
 225                {
 226                    writer.WriteSafeString(defaultValue);
 227                }
 428            });
 29
 130            Handlebars.RegisterHelper("Regex.Match", (writer, options, context, arguments) =>
 531            {
 532                (string stringToProcess, string regexPattern, object defaultValue) = ParseArguments(arguments);
 133
 434                var regex = new Regex(regexPattern);
 435                var namedGroups = RegexUtils.GetNamedGroups(regex, stringToProcess);
 436                if (namedGroups.Any())
 237                {
 238                    options.Template(writer, namedGroups);
 239                }
 340                else if (defaultValue != null)
 241                {
 242                    options.Template(writer, defaultValue);
 243                }
 444            });
 145        }
 46
 47        private static (string stringToProcess, string regexPattern, object defaultValue) ParseArguments(object[] argume
 748        {
 1449            Check.Condition(arguments, args => args.Length == 2 || args.Length == 3, nameof(arguments));
 50
 51            string ParseAsString(object arg)
 1352            {
 1353                if (arg is string)
 1254                {
 1255                    return (string) arg;
 56                }
 57                else
 158                {
 159                    throw new NotSupportedException($"The value '{arg}' with type '{arg?.GetType()}' cannot be used in H
 60                }
 1261            }
 62
 763            return (ParseAsString(arguments[0]), ParseAsString(arguments[1]), arguments.Length == 3 ? arguments[2] : nul
 664        }
 65    }
 66}