Esempio n. 1
0
        /// <summary>
        /// Writes the value expression to the buffer.
        /// </summary>
        /// <param name="buffer">The buffer</param>
        /// <param name="valueExpression">The value expression</param>
        private static void WriteValueExpressionToBuffer(StringBuilder buffer, JTokenExpression valueExpression)
        {
            ExpressionSerializer.ValidateValueExpression(valueExpression: valueExpression);

            var value = ExpressionSerializer.GetValueFromValueExpression(valueExpression: valueExpression);

            switch (value.Type)
            {
            case JTokenType.Integer:
                // Note(majastrz): Integers are serialized as-is
                buffer.Append(value: value);

                return;

            case JTokenType.String:
                WriteEscapedStringLiteral(buffer, value.ToString());

                return;

            default:
                // Note(majastrz): JTokenValue can only be created with string or int value.
                throw new InvalidOperationException($"JTokenExpression has a value of unexpected type '{value.Type}'.");
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Validates the specified value expression. Does not perform recursive validation.
 /// </summary>
 /// <param name="valueExpression">The value expression</param>
 private static void ValidateValueExpression(JTokenExpression valueExpression)
 {
     ExpressionSerializer.ValidateExpression(expression: valueExpression);
 }
Esempio n. 3
0
 /// <summary>
 /// Gets a value from the value expression.
 /// </summary>
 /// <param name="valueExpression">The value expression</param>
 private static JToken GetValueFromValueExpression(JTokenExpression valueExpression)
 {
     // Note(majastrz): EvaluateExpression on JTokenExpression just returns the value and does not use the context at all.
     // The constructor of JTokenExpression does not allow you to create one with a null value, so we don't really need to check
     return(valueExpression.Value);
 }