in src/Epam.GraphQL/Extensions/DictionaryExtensions.cs [179:260]
private static void ToFriendlyStringImpl(object? obj, StringBuilder builder, int indent)
{
if (obj == null)
{
builder.Append("null");
return;
}
if (obj is IReadOnlyDictionary<string, object?> dictionary)
{
builder.AppendLine("{");
var first = true;
foreach (var kv in dictionary)
{
if (!first)
{
builder.AppendLine(",");
}
first = false;
builder.Append(' ', indent + 4);
builder.Append(kv.Key.ToJsonString());
builder.Append(": ");
ToFriendlyStringImpl(kv.Value, builder, indent + 4);
}
if (dictionary.Count != 0)
{
builder.AppendLine();
}
builder.Append(' ', indent);
builder.Append('}');
return;
}
if (obj is IEnumerable<object> enumerable)
{
builder.Append('[');
var first = true;
foreach (var item in enumerable)
{
if (!first)
{
builder.Append(", ");
}
first = false;
ToFriendlyStringImpl(item, builder, indent);
}
builder.Append(']');
return;
}
if (obj is string str)
{
builder.Append(str.ToJsonString());
return;
}
if (obj is DateTime dateTime)
{
builder.Append(dateTime.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK", DateTimeFormatInfo.InvariantInfo).ToJsonString());
return;
}
if (obj is bool boolean)
{
builder.Append(boolean ? "true" : "false");
return;
}
builder.Append(obj.ToString());
}