Compare commits
3 Commits
18cb0cd0c8
...
e1dbdb37eb
Author | SHA1 | Date | |
---|---|---|---|
e1dbdb37eb | |||
ba16e25917 | |||
e897dd3c82 |
@ -2,6 +2,7 @@ package com.marvinelsen.chinese.transliteration
|
|||||||
|
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
|
||||||
|
@Suppress("MagicNumber", "MaximumLineLength", "MaxLineLength")
|
||||||
data class Syllable(
|
data class Syllable(
|
||||||
val pinyinSyllableWithoutTone: String,
|
val pinyinSyllableWithoutTone: String,
|
||||||
val tone: Tone,
|
val tone: Tone,
|
||||||
@ -13,6 +14,9 @@ data class Syllable(
|
|||||||
private val zhuyinToPinyin = pinyinToZhuyin.entries.associate { it.value to it.key }
|
private val zhuyinToPinyin = pinyinToZhuyin.entries.associate { it.value to it.key }
|
||||||
private val zhuyinToneMarkRegex = """[ˊˇˋ˙]""".toRegex()
|
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 {
|
fun fromPinyinWithToneNumber(pinyinWithToneNumber: String): Syllable {
|
||||||
val pinyinWithoutNumber = pinyinWithToneNumber.substring(0, pinyinWithToneNumber.lastIndex)
|
val pinyinWithoutNumber = pinyinWithToneNumber.substring(0, pinyinWithToneNumber.lastIndex)
|
||||||
val lastCharacter = pinyinWithToneNumber.last()
|
val lastCharacter = pinyinWithToneNumber.last()
|
||||||
@ -20,7 +24,6 @@ data class Syllable(
|
|||||||
require(lastCharacter.isDigit()) {
|
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()}'"
|
"'$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) {
|
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()}'"
|
"'$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()}'"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user