From 028d03b147c5a063c25cef12f608f4387585686f Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Thu, 4 Jan 2024 23:18:36 +0700 Subject: [PATCH] Fix registry dumb creating invalid csv file --- .../mc/otm/matter/MatterManager.kt | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt index 18f0572ff..125672996 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt @@ -1611,6 +1611,22 @@ object MatterManager { val stream2 = stream.map { it to get(it.value) } + fun writeValue(a: String, b: String, c: String, commentary: Collection) { + if (commentary.size < 2) { + writer.write(arrayOf(a, b, c, commentary.firstOrNull() ?: "").joinToString(";", transform = ::transformQuotes)) + writer.write("\n") + } else { + val iterator = commentary.iterator() + writer.write(arrayOf(a, b, c, iterator.next()).joinToString(";", transform = ::transformQuotes)) + writer.write("\n") + + for (v in iterator) { + writer.write(arrayOf("", "", "", v).joinToString(";", transform = ::transformQuotes)) + writer.write("\n") + } + } + } + for ((entry, value) in filter.filter(stream2)) { val (key, item) = entry val isBlacklisted: Boolean @@ -1624,16 +1640,14 @@ object MatterManager { } if (isBlacklisted) { - writer.write(arrayOf(key.location().toString(), "---", "---", "Item is blacklisted from having matter value").joinToString(";", transform = ::transformQuotes)) + writeValue(key.location().toString(), "---", "---", listOf("Item is blacklisted from having matter value")) } else { if (!value.hasMatterValue) { - writer.write(arrayOf(key.location().toString(), "", "", commentary[item]?.joinToString("\n", transform = { transformQuotes(it.string) }) ?: "").joinToString(";", transform = ::transformQuotes)) + writeValue(key.location().toString(), "", "", commentary[item]?.map { it.string } ?: listOf()) } else { - writer.write(arrayOf(key.location().toString(), value.matter.toString(), value.complexity.toString(), commentary[item]?.joinToString("\n", transform = { transformQuotes(it.string) }) ?: "").joinToString(";", transform = ::transformQuotes)) + writeValue(key.location().toString(), value.matter.toString(), value.complexity.toString(), commentary[item]?.map { it.string } ?: listOf()) } } - - writer.write("\n") } writer.close()