Esempio n. 1
0
        /// <summary>
        /// If the expression is a single string JTokenExpression and serialization as string is enabled, it performs the serialization.
        /// </summary>
        /// <param name="buffer">The buffer</param>
        /// <param name="expression">The expression</param>
        /// <param name="settings">The settings</param>
        /// <returns>True if expression has been written out to the buffer or false otherwise.</returns>
        private static bool TryWriteSingleStringToBuffer(StringBuilder buffer, LanguageExpression expression, ExpressionSerializerSettings settings)
        {
            if (settings.SingleStringHandling == ExpressionSerializerSingleStringHandling.SerializeAsString && expression is JTokenExpression valueExpression)
            {
                var value = ExpressionSerializer.GetValueFromValueExpression(valueExpression: valueExpression);
                if (value.Type == JTokenType.String)
                {
                    var valueStr = value.ToString();

                    // Note(majastrz): Add escape bracket if needed.
                    if (valueStr.Length > 0 && valueStr[0] == '[')
                    {
                        buffer.Append(value: '[');
                    }

                    buffer.Append(value: valueStr);

                    return(true);
                }
            }

            // Note(majastrz): Returning false REQUIRES that buffer not be modified in any way.
            return(false);
        }
Esempio n. 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ExpressionSerializer"/> class.
 /// </summary>
 /// <param name="settings">The optional serializer settings</param>
 public ExpressionSerializer(ExpressionSerializerSettings settings = null)
 {
     // Note(majastrz): Use default settings if not specified.
     this.settings = settings ?? new ExpressionSerializerSettings();
 }