/// <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); }
/// <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(); }