public void SimpleRouting()
        {
            var path = "/Controller/{?id}/Parameter";
            var matchRegex = new VerbalExpressions().Then("{").Maybe("?").Word().WithAnyCase().Then("}").ToRegex();
            var matches = matchRegex.Matches(path);

            Assert.AreEqual(matches[0].Value, "{id}");
        }
        public void GetRoutingValues()
        {
            var path = "/Controller/5/Parameter";
            var matchRegex = new VerbalExpressions().Then("/Controller/").BeginCapture("id").Word().WithAnyCase().EndCapture().Then("/Parameter").ToRegex();
            var matches = matchRegex.Matches(path);

            foreach (Match match in matches)
            {
                Assert.AreEqual(match.Groups["id"].Value, "5");
            }
        }
Ejemplo n.º 3
0
        private void BuildRouting()
        {
            var matchRegex = new VerbalExpressions().Then("{").Maybe("?").Word().WithAnyCase().Then("}").ToRegex();
            var matches = matchRegex.Matches(Routing);

            var routingRegex = Routing;

            routingRegex = routingRegex.Replace("{*}", @"(\w+)?");

            foreach (Match match in matches)
            {
                var name = match.Value.Replace("{", string.Empty).Replace("}", string.Empty).Replace("?", string.Empty);
                this.Parameters.Add(new RoutingParameter
                {
                    Name = name,
                    IsOptional = match.Value.StartsWith("?")
                });
                routingRegex = routingRegex.Replace(match.Value, $"(?<{name}>(.*))");
            }

            this.regex = new Regex(routingRegex);
        }
        public void TestRoutingEngine()
        {
            var path = "/Controller/5/Parameter/";
            var routingDeclaration = "/Controller/{id}/Parameter/{subId}";
            
            var matchRegex = new VerbalExpressions().Then("{").Word().WithAnyCase().Then("}").ToRegex();
            var matches = matchRegex.Matches(routingDeclaration);

            var parameterNames = new List<string>();

            foreach (Match match in matches)
            {
                var name = match.Value.Replace("{", string.Empty).Replace("}", string.Empty);
                parameterNames.Add(name);
                routingDeclaration = routingDeclaration.Replace(match.Value, $"(?<{name}>(.*))");
            }

            var regex = new Regex(routingDeclaration);
            var parameter = regex.Match(path);
            foreach (var groupName in parameterNames)
            {
                Debug.WriteLine("{0}: {1}", groupName, parameter.Groups[groupName].Value);
            }
        }