Exemple #1
0
        private ParsedExpression Parse(ProxyContext context, string expression)
        {
            logger.LogDebug("Parsing an expression: {0}", expression);

            var instructions   = new List <dynamic>();
            int index          = 0;
            int len            = expression.Length;
            var routeVariables = context.Settings.VariableTrie;
            var sb             = new StringBuilder(expression.Length);

            void ProcessLastSegment()
            {
                if (sb.Length == 0)
                {
                    return;
                }

                instructions.Add(sb.ToString());
                sb.Clear();
            }

            while (index < len)
            {
                var c = expression[index++];

                if (c != '$')
                {
                    sb.Append(c);
                    continue;
                }

                int varNameStartIndex = index;
                while (index < len)
                {
                    if (!PatternVariables.IsValidVariableChar(expression[index], isFirstChar: varNameStartIndex == index))
                    {
                        break;
                    }

                    index++;
                }

                if (varNameStartIndex == index)
                {
                    sb.AppendDollar();
                    continue;
                }

                // Is it a system variable?
                var varName = expression[varNameStartIndex..index];
        public void IsValidVariableChar_AllValidChars_Success()
        {
            var name = "abcdefghijklmnopqrstvuwxyzABCDEFGHIJKLMNOPQRSTVUWXYZ0123456789_";

            name.All(c => PatternVariables.IsValidVariableChar(c, false)).Should().BeTrue();
        }