in rd-net/RdFramework/Base/IRdBindable.cs [274:328]
public static void PrintEx(this object? me, PrettyPrinter printer)
{
var printable = me as IPrintable;
if (printer.BufferExceeded)
return;
if (printable != null) printable.Print(printer);
else switch (me)
{
case null:
printer.Print("<null>");
break;
case string _:
printer.Print("\"" + me + "\"");
break;
case IEnumerable enumerable:
{
if (!printer.PrintContent) break;
printer.Print("[");
using (printer.IndentCookie())
{
var en = enumerable.GetEnumerator();
var count = 0;
var maxPrint = printer.CollectionMaxLength;
while (en.MoveNext())
{
if (printer.BufferExceeded)
return;
if (count < maxPrint)
{
printer.Println();
en.Current.PrintEx(printer);
}
count ++;
}
if (count > maxPrint)
{
printer.Println();
printer.Print("... and " + (count - maxPrint) + " more");
}
if (count > 0) printer.Println();
else printer.Print("<empty>");
}
printer.Print("]");
break;
}
default:
printer.Print(me.ToString());
break;
}
}