From e897dd3c82dcb73cf9dce3206cbc6b2f9be6ea91 Mon Sep 17 00:00:00 2001 From: Marvin Elsen Date: Fri, 20 Sep 2024 12:51:31 +0200 Subject: [PATCH 1/2] Add method to test whether a string is a valid pinyin with tone number syllable --- .../com/marvinelsen/chinese/transliteration/Syllable.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt b/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt index 4b99ba6..8a5df55 100644 --- a/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt +++ b/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt @@ -13,6 +13,9 @@ data class Syllable( private val zhuyinToPinyin = pinyinToZhuyin.entries.associate { it.value to it.key } private val zhuyinToneMarkRegex = """[ˊˇˋ˙]""".toRegex() + fun isValidPinyinWithToneNumberSyllable(pinyinSyllable: String) = + pinyinSyllable.last().isDigit() && pinyinSyllable.last().digitToInt() in 1..5 && pinyinSyllable.lowercase() in pinyinToZhuyin + fun fromPinyinWithToneNumber(pinyinWithToneNumber: String): Syllable { val pinyinWithoutNumber = pinyinWithToneNumber.substring(0, pinyinWithToneNumber.lastIndex) val lastCharacter = pinyinWithToneNumber.last() @@ -42,7 +45,7 @@ data class Syllable( return Syllable( zhuyinToPinyin[zhuyinWithoutToneMark]!!, Tone.fromZhuyinToneMarkOrNull(zhuyin.last()) ?: Tone.fromZhuyinToneMarkOrNull(zhuyin.first()) - ?: Tone.FIRST + ?: Tone.FIRST ) } -- 2.43.0 From ba16e25917403a9b2143eba9250773df4d7577de Mon Sep 17 00:00:00 2001 From: Marvin Elsen Date: Fri, 20 Sep 2024 12:55:41 +0200 Subject: [PATCH 2/2] Fix gradle issues --- .../com/marvinelsen/chinese/transliteration/Syllable.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt b/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt index 8a5df55..ce31655 100644 --- a/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt +++ b/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt @@ -2,6 +2,7 @@ package com.marvinelsen.chinese.transliteration import java.io.InputStream +@Suppress("MagicNumber", "MaximumLineLength", "MaxLineLength") data class Syllable( val pinyinSyllableWithoutTone: String, val tone: Tone, @@ -23,7 +24,6 @@ data class Syllable( require(lastCharacter.isDigit()) { "'$pinyinWithToneNumber' is not a valid Pinyin with tone number syllable. Expected the last character to be a digit, but was '${pinyinWithToneNumber.last()}'" } - @Suppress("MagicNumber") require(lastCharacter.digitToInt() in 1..5) { "'$pinyinWithToneNumber' is not a valid Pinyin with tone number syllable. Expected the tone number 'n' to be in range 1 <= n <= 5, but was '${pinyinWithToneNumber.last()}'" } @@ -45,7 +45,7 @@ data class Syllable( return Syllable( zhuyinToPinyin[zhuyinWithoutToneMark]!!, Tone.fromZhuyinToneMarkOrNull(zhuyin.last()) ?: Tone.fromZhuyinToneMarkOrNull(zhuyin.first()) - ?: Tone.FIRST + ?: Tone.FIRST ) } -- 2.43.0