public static void PrintEx()

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;
      }
    }