From b935c7d8f01083f942f26c584ea2707cbe21792c Mon Sep 17 00:00:00 2001 From: Hasinjato Date: Thu, 13 Aug 2026 12:01:03 +0300 Subject: [PATCH] Validate first song key --- .../kotlin/mg/dot/feufaro/solfa/Solfa.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt index 05a95b4..75037b1 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -2360,10 +2360,16 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository meta[subKey] = line.substring(2) } if ("c" == subKey) { - val tonality = line.uppercaseFirstMeta() - meta["C"] = tonality - sharedScreenModel.setSongKey(tonality) - sharedScreenModel.setTransposeAsIf(tonality) + val validKeys = Transpose.keyToNumber.sortedByDescending { it.length } + val keyRegex = Regex("\\b(${validKeys.joinToString("|")})\\b", RegexOption.IGNORE_CASE) + val rawText = line.substringAfter("c:") + val matchedKey = keyRegex.find(rawText)?.value + val tonality = Transpose.keyToNumber.firstOrNull { it.equals(matchedKey, ignoreCase = true) } + if(tonality != null) { + meta["C"] = tonality + sharedScreenModel.setSongKey(tonality) + sharedScreenModel.setTransposeAsIf(tonality) + } } }