Example #1
0
 private void prettyPrint(Object object, StringBuilder buffer, int indent, int singleLineColumns) {
   if (object instanceof OrderedMap) {
     OrderedMap<String, ?> map = (OrderedMap) object;
     if (map.size == 0) {
       buffer.append("{}");
     } else {
       boolean newLines = !isFlat(map);
       int start = buffer.length();
       outer:
       while (true) {
         buffer.append(newLines ? "{\n" : "{ ");
         int i = 0;
         for (String key : map.orderedKeys()) {
           if (newLines) indent(indent, buffer);
           buffer.append(outputType.quoteName(key));
           buffer.append(": ");
           prettyPrint(map.get(key), buffer, indent + 1, singleLineColumns);
           if (i++ < map.size - 1) buffer.append(",");
           buffer.append(newLines ? '\n' : ' ');
           if (!newLines && buffer.length() - start > singleLineColumns) {
             buffer.setLength(start);
             newLines = true;
             continue outer;
           }
         }
         break;
       }
       if (newLines) indent(indent - 1, buffer);
       buffer.append('}');
     }
   } else if (object instanceof Array) {
     Array array = (Array) object;
     if (array.size == 0) {
       buffer.append("[]");
     } else {
       boolean newLines = !isFlat(array);
       int start = buffer.length();
       outer:
       while (true) {
         buffer.append(newLines ? "[\n" : "[ ");
         for (int i = 0, n = array.size; i < n; i++) {
           if (newLines) indent(indent, buffer);
           prettyPrint(array.get(i), buffer, indent + 1, singleLineColumns);
           if (i < array.size - 1) buffer.append(",");
           buffer.append(newLines ? '\n' : ' ');
           if (!newLines && buffer.length() - start > singleLineColumns) {
             buffer.setLength(start);
             newLines = true;
             continue outer;
           }
         }
         break;
       }
       if (newLines) indent(indent - 1, buffer);
       buffer.append(']');
     }
   } else if (object instanceof String) {
     buffer.append(outputType.quoteValue((String) object));
   } else if (object instanceof Float) {
     Float floatValue = (Float) object;
     int intValue = floatValue.intValue();
     buffer.append(floatValue - intValue == 0 ? intValue : object);
   } else if (object instanceof Boolean) {
     buffer.append(object);
   } else if (object == null) {
     buffer.append("null");
   } else throw new SerializationException("Unknown object type: " + object.getClass());
 }