Skip to content

Commit

Permalink
perf: 优化 json5 输出格式
Browse files Browse the repository at this point in the history
  • Loading branch information
lisonge committed Dec 30, 2023
1 parent 7873982 commit 2534e81
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions app/src/main/kotlin/li/songe/gkd/util/Json5.kt
Original file line number Diff line number Diff line change
Expand Up @@ -62,23 +62,30 @@ fun convertJsonElementToJson5(element: JsonElement, indent: Int = 2): String {
}

is JsonObject -> {
// Handle JSON objects
val entries = element.entries.joinToString(",\n") { (key, value) ->
// If key is a valid identifier, no quotes are needed
if (key.matches(json5IdentifierReg)) {
"$key: ${convertJsonElementToJson5(value, indent)}"
} else {
"${escapeString(key)}: ${convertJsonElementToJson5(value, indent)}"
}
}.lineSequence().map { l -> spaces + l }.joinToString("\n")
"{\n$entries\n}"
if (element.isEmpty()) {
"{}"
} else {
val entries = element.entries.joinToString(",\n") { (key, value) ->
// If key is a valid identifier, no quotes are needed
if (key.matches(json5IdentifierReg)) {
"$key: ${convertJsonElementToJson5(value, indent)}"
} else {
"${escapeString(key)}: ${convertJsonElementToJson5(value, indent)}"
}
}.lineSequence().map { l -> spaces + l }.joinToString("\n")
"{\n$entries\n}"
}
}

is JsonArray -> {
val elements =
element.joinToString(",\n") { convertJsonElementToJson5(it, indent) }
.lineSequence().map { l -> spaces + l }.joinToString("\n")
"[\n$elements\n]"
if (element.isEmpty()) {
"[]"
} else {
val elements =
element.joinToString(",\n") { convertJsonElementToJson5(it, indent) }
.lineSequence().map { l -> spaces + l }.joinToString("\n")
"[\n$elements\n]"
}
}
}
}
Expand Down

0 comments on commit 2534e81

Please sign in to comment.