Fix dubeolsik automata

This commit is contained in:
Lee0701 2020-07-05 15:54:54 +09:00
parent f4f47786eb
commit 6e8c17c7be

View file

@ -51,27 +51,34 @@ class HangulCombiner : Combiner {
is HangulJamo.Consonant -> { is HangulJamo.Consonant -> {
val initial = jamo.toInitial() val initial = jamo.toInitial()
val final = jamo.toFinal() val final = jamo.toFinal()
if(currentSyllable.final == null) { if(currentSyllable.initial != null && currentSyllable.medial != null) {
if(currentSyllable.initial != null) { if(currentSyllable.final == null) {
val combination = COMBINATION_TABLE_DUBEOLSIK[currentSyllable.initial.codePoint to (initial?.codePoint ?: -1)] val combination = COMBINATION_TABLE_DUBEOLSIK[currentSyllable.initial.codePoint to (initial?.codePoint ?: -1)]
if(combination != null) { if(combination != null) {
history += currentSyllable.copy(initial = HangulJamo.Initial(combination)) history += currentSyllable.copy(initial = HangulJamo.Initial(combination))
} else { } else {
history += currentSyllable.copy(final = final) if(final != null) history += currentSyllable.copy(final = final)
else {
composingWord.append(currentSyllable.string)
history.clear()
history += HangulSyllable(initial = initial)
}
} }
} else { } else {
history += currentSyllable.copy(final = final) val pair = currentSyllable.final.codePoint to (final?.codePoint ?: -1)
val combination = COMBINATION_TABLE_DUBEOLSIK[pair]
if(combination != null) {
history += currentSyllable.copy(final = HangulJamo.Final(combination, combinationPair = pair))
} else {
composingWord.append(currentSyllable.string)
history.clear()
history += HangulSyllable(initial = initial)
}
} }
} else { } else {
val pair = currentSyllable.final.codePoint to (final?.codePoint ?: -1) composingWord.append(currentSyllable.string)
val combination = COMBINATION_TABLE_DUBEOLSIK[pair] history.clear()
if(combination != null) { history += HangulSyllable(initial = initial)
history += currentSyllable.copy(final = HangulJamo.Final(combination, combinationPair = pair))
} else {
composingWord.append(currentSyllable.string)
history.clear()
history += HangulSyllable(initial = initial)
}
} }
} }
is HangulJamo.Vowel -> { is HangulJamo.Vowel -> {