Skip to content

Instantly share code, notes, and snippets.

@ohaal
Created December 3, 2024 14:36
Show Gist options
  • Save ohaal/7ae2e828696994de251842b6b23e0970 to your computer and use it in GitHub Desktop.
Save ohaal/7ae2e828696994de251842b6b23e0970 to your computer and use it in GitHub Desktop.
(dirty) Pretty print lombok object string
/**
* Basic error-prone function for prettifying (formatting) a lombok @ToString output
* Fails for data containing [](),=
* Can be improved by adding lookarounds from each switch-case (checking for '=' behind)
* Replace me with objectmapper and json + jsonprettyprint?
*
* @param str a string generated by lombok @ToString
* @return pretty formatted lombok object
*/
private static String prettyPrintLombokToString(String str) {
final int INDENT_UNIT = 4;
StringBuilder output = new StringBuilder();
var indent = 0;
for (var i = 0; i < str.length(); i++) {
switch (str.charAt(i)) {
case '[':
indent += INDENT_UNIT;
output.append("[\n");
output.append(" ".repeat(indent));
break;
case ']':
indent -= INDENT_UNIT;
output.append("\n");
output.append(" ".repeat(indent));
output.append("]");
break;
case ',':
output.append("\n");
output.append(" ".repeat(indent));
output.append(",");
break;
case '(':
indent += INDENT_UNIT;
output.append("(\n");
output.append(" ".repeat(indent));
break;
case ')':
indent -= INDENT_UNIT;
output.append("\n");
output.append(" ".repeat(indent));
output.append(")");
break;
default:
output.append(str.charAt(i));
}
}
return output.toString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment