Hapikit.Templates.UriTemplate.ProcessExpression C# (CSharp) Méthode

ProcessExpression() private méthode

private ProcessExpression ( StringBuilder currentExpression ) : void
currentExpression StringBuilder
Résultat void
            private void ProcessExpression(StringBuilder currentExpression)
            {

                if (currentExpression.Length == 0)
                {
                    _ErrorDetected = true;
                    _Result.Append("{}");
                    return;
                }

                OperatorInfo op = GetOperator(currentExpression[0]);

                var firstChar = op.Default ? 0 : 1;
                bool multivariableExpression = false;

                var varSpec = new VarSpec(op);
                for (int i = firstChar; i < currentExpression.Length; i++)
                {
                    char currentChar = currentExpression[i];
                    switch (currentChar)
                    {
                        case '*':
                            varSpec.Explode = true;
                            break;

                        case ':':  // Parse Prefix Modifier
                            var prefixText = new StringBuilder();
                            currentChar = currentExpression[++i];
                            while (currentChar >= '0' && currentChar <= '9' && i < currentExpression.Length)
                            {
                                prefixText.Append(currentChar);
                                i++;
                                if (i < currentExpression.Length) currentChar = currentExpression[i];
                            }
                            varSpec.PrefixLength = int.Parse(prefixText.ToString());
                            i--;
                            break;

                        case ',':
                            multivariableExpression = true;
                            var success = ProcessVariable(varSpec, multivariableExpression);
                            bool isFirst = varSpec.First;
                            // Reset for new variable
                            varSpec = new VarSpec(op);
                            if (success || !isFirst || _resolvePartially) varSpec.First = false;
                            if (!success && _resolvePartially) {_Result.Append(",") ; }
                            break; 
                        

                        default:
                            if (IsVarNameChar(currentChar))
                            {
                                varSpec.VarName.Append(currentChar);
                            }
                            else
                            {
                                _ErrorDetected = true;
                            }
                            break;
                    }
                }

                ProcessVariable(varSpec, multivariableExpression);
                if (multivariableExpression && _resolvePartially) _Result.Append("}");
            }