chore: simplify pretty print json string #201
2 changed files with 3 additions and 71 deletions
|
@ -8,6 +8,7 @@ import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import im.angry.openeuicc.common.R
|
import im.angry.openeuicc.common.R
|
||||||
import im.angry.openeuicc.util.*
|
import im.angry.openeuicc.util.*
|
||||||
|
import org.json.JSONObject
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardStepFragment() {
|
class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardStepFragment() {
|
||||||
|
@ -86,9 +87,10 @@ class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardS
|
||||||
ret.appendLine()
|
ret.appendLine()
|
||||||
|
|
||||||
val str = resp.data.decodeToString(throwOnInvalidSequence = false)
|
val str = resp.data.decodeToString(throwOnInvalidSequence = false)
|
||||||
|
|
||||||
ret.appendLine(
|
ret.appendLine(
|
||||||
if (str.startsWith('{')) {
|
if (str.startsWith('{')) {
|
||||||
str.prettyPrintJson()
|
JSONObject(str).toString(2)
|
||||||
} else {
|
} else {
|
||||||
str
|
str
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,73 +41,3 @@ fun parseIsdrAidList(s: String): List<ByteArray> =
|
||||||
.filter(String::isNotEmpty)
|
.filter(String::isNotEmpty)
|
||||||
.mapNotNull { runCatching(it::decodeHex).getOrNull() }
|
.mapNotNull { runCatching(it::decodeHex).getOrNull() }
|
||||||
.ifEmpty { listOf(EUICC_DEFAULT_ISDR_AID.decodeHex()) }
|
.ifEmpty { listOf(EUICC_DEFAULT_ISDR_AID.decodeHex()) }
|
||||||
|
|
||||||
fun String.prettyPrintJson(): String {
|
|
||||||
val ret = StringBuilder()
|
|
||||||
var inQuotes = false
|
|
||||||
var escaped = false
|
|
||||||
val indentSymbolStack = ArrayDeque<Char>()
|
|
||||||
|
|
||||||
val addNewLine = {
|
|
||||||
ret.append('\n')
|
|
||||||
repeat(indentSymbolStack.size) {
|
|
||||||
ret.append('\t')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var lastChar = ' '
|
|
||||||
|
|
||||||
for (c in this) {
|
|
||||||
when {
|
|
||||||
!inQuotes && (c == '{' || c == '[') -> {
|
|
||||||
ret.append(c)
|
|
||||||
indentSymbolStack.addLast(c)
|
|
||||||
addNewLine()
|
|
||||||
}
|
|
||||||
|
|
||||||
!inQuotes && (c == '}' || c == ']') -> {
|
|
||||||
indentSymbolStack.removeLast()
|
|
||||||
if (lastChar != ',') {
|
|
||||||
addNewLine()
|
|
||||||
}
|
|
||||||
ret.append(c)
|
|
||||||
}
|
|
||||||
|
|
||||||
!inQuotes && c == ',' -> {
|
|
||||||
ret.append(c)
|
|
||||||
addNewLine()
|
|
||||||
}
|
|
||||||
|
|
||||||
!inQuotes && c == ':' -> {
|
|
||||||
ret.append(c)
|
|
||||||
ret.append(' ')
|
|
||||||
}
|
|
||||||
|
|
||||||
inQuotes && c == '\\' -> {
|
|
||||||
ret.append(c)
|
|
||||||
escaped = true
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
!escaped && c == '"' -> {
|
|
||||||
ret.append(c)
|
|
||||||
inQuotes = !inQuotes
|
|
||||||
}
|
|
||||||
|
|
||||||
!inQuotes && c == ' ' -> {
|
|
||||||
// Do nothing -- we ignore spaces outside of quotes by default
|
|
||||||
// This is to ensure predictable formatting
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> ret.append(c)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (escaped) {
|
|
||||||
escaped = false
|
|
||||||
}
|
|
||||||
|
|
||||||
lastChar = c
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret.toString()
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue