From 709e267a2dc4d4b3a16261f4f91de2b1b28af4ee Mon Sep 17 00:00:00 2001 From: Marvin Elsen Date: Fri, 20 Sep 2024 15:29:54 +0200 Subject: [PATCH] Add support for er-hua syllable 'r5' --- build.gradle.kts | 2 +- .../com/marvinelsen/chinese/transliteration/Syllable.kt | 4 ++++ .../com/marvinelsen/chinese/transliteration/SyllableTest.kt | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 2dc74ee..e06c3bb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "com.marvinelsen" -version = "1.1-SNAPSHOT" +version = "1.0.0" repositories { mavenCentral() diff --git a/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt b/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt index bea85f1..dbfcf63 100644 --- a/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt +++ b/src/main/kotlin/com/marvinelsen/chinese/transliteration/Syllable.kt @@ -88,6 +88,10 @@ data class Syllable( "'$pinyinSyllableWithoutTone is not a valid Pinyin syllable." } + if (pinyinSyllableWithoutTone == "r" && tone == Tone.FIFTH) { + return pinyinSyllableWithoutTone + } + val sanitizedPinyinSyllableWithoutTone = pinyinSyllableWithoutTone.replace("v", "ü").replace("u:", "ü") val characterToIndex = sanitizedPinyinSyllableWithoutTone.withIndex().associate { it.value to it.index } diff --git a/src/test/kotlin/com/marvinelsen/chinese/transliteration/SyllableTest.kt b/src/test/kotlin/com/marvinelsen/chinese/transliteration/SyllableTest.kt index dca7037..ce9d6f6 100644 --- a/src/test/kotlin/com/marvinelsen/chinese/transliteration/SyllableTest.kt +++ b/src/test/kotlin/com/marvinelsen/chinese/transliteration/SyllableTest.kt @@ -17,6 +17,7 @@ class SyllableTest : ShouldSpec({ "nv3" to Syllable("nv", Tone.THIRD), "nü3" to Syllable("nü", Tone.THIRD), "nu:3" to Syllable("nu:", Tone.THIRD), + "r5" to Syllable("r", Tone.FIFTH), ) { (pinyinWithNumber, expectedSyllable) -> Syllable.fromPinyinWithToneNumber(pinyinWithNumber) shouldBe expectedSyllable } @@ -54,6 +55,7 @@ class SyllableTest : ShouldSpec({ Syllable("nü", Tone.THIRD) to "ㄋㄩˇ", Syllable("nu:", Tone.THIRD) to "ㄋㄩˇ", Syllable("nv", Tone.THIRD) to "ㄋㄩˇ", + Syllable("r", Tone.FIFTH) to "˙ㄦ", ) { (syllable, expectedZhuyin) -> syllable.format(TransliterationSystem.ZHUYIN) shouldBe expectedZhuyin } @@ -70,6 +72,7 @@ class SyllableTest : ShouldSpec({ Syllable("nü", Tone.THIRD) to "nü3", Syllable("nu:", Tone.THIRD) to "nu:3", Syllable("nv", Tone.THIRD) to "nv3", + Syllable("r", Tone.FIFTH) to "r5", ) { (syllable, expectedPinyinWithToneNumbers) -> syllable.format(TransliterationSystem.PINYIN_WITH_TONE_NUMBERS) shouldBe expectedPinyinWithToneNumbers } @@ -88,6 +91,7 @@ class SyllableTest : ShouldSpec({ Syllable("nü", Tone.THIRD) to "nǚ", Syllable("nu:", Tone.THIRD) to "nǚ", Syllable("nv", Tone.THIRD) to "nǚ", + Syllable("r", Tone.FIFTH) to "r", ) { (syllable, expectedPinyinWithToneMarks) -> syllable.format(TransliterationSystem.PINYIN_WITH_TONE_MARKS) shouldBe expectedPinyinWithToneMarks } -- 2.43.0