Skip to content

Instantly share code, notes, and snippets.

@pardom-zz
Created June 1, 2017 14:16
Show Gist options
  • Save pardom-zz/d6978186d33e8de66d9d489faa4a70e8 to your computer and use it in GitHub Desktop.
Save pardom-zz/d6978186d33e8de66d9d489faa4a70e8 to your computer and use it in GitHub Desktop.
fun Any.prettyPrint(): String {
val sb = StringBuilder()
val chars = toString().toCharArray()
var level = 0
var inString = false
var inArray = false
for (char in chars) {
when (char) {
'(' -> {
if (!inString) {
level++
sb.append(char)
sb.append('\n')
sb.append("\t".repeat(level))
}
}
')' -> {
if (!inString) {
level--
sb.append('\n')
sb.append("\t".repeat(level))
sb.append(char)
}
}
'{' -> {
if (!inString) {
level++
sb.append(char)
sb.append('\n')
sb.append("\t".repeat(level))
}
}
'}' -> {
if (!inString) {
level--
sb.append('\n')
sb.append("\t".repeat(level))
sb.append(char)
}
}
'=' -> {
if (!inString) {
sb.append(" = ")
}
}
',' -> {
if (!inString && !inArray) {
sb.append(char)
sb.append('\n')
sb.append("\t".repeat(level))
}
else {
sb.append(char)
}
}
' ' -> {
if (!inString && !inArray && sb.lastOrNull() == ',') {
// no-op
}
}
'[' -> {
if (!inString) inArray = true
sb.append(char)
}
']' -> {
if (!inString) inArray = false
}
'"' -> {
inString = !inString
sb.append(char)
}
else -> {
sb.append(char)
}
}
}
return sb.toString()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment