@@ -66,32 +66,16 @@ fn is_valid_combination(initial: &str, rhyme: &str) -> bool {
6666
6767 // Rule: k/g/ng vs c/gh/ngh
6868 match initial {
69- "c" | "g" | "ng" => {
70- if is_front_vowel_rhyme {
71- return false ;
72- } // c, g, ng must be followed by other vowels.
73- }
74- "k" | "gh" | "ngh" => {
75- if !is_front_vowel_rhyme {
76- return false ;
77- } // k, gh, ngh must be followed by i, e, ê, y.
78- }
79- "qu" => {
80- // 'qu' acts as a single unit and cannot be followed by a rhyme starting with 'u' or 'o'.
81- if "uo" . contains ( first_char_of_rhyme) {
82- return false ;
83- }
84- }
85- "gi" => {
86- // Avoid "gi" + i-initial rhyme like "giiên", which is not a valid word.
87- if first_char_of_rhyme == 'i' {
88- return false ;
89- }
90- }
91- _ => { }
69+ // c, g, ng must be followed by other vowels.
70+ "c" | "g" | "ng" if is_front_vowel_rhyme => false ,
71+ // k, gh, ngh must be followed by i, e, ê, y.
72+ "k" | "gh" | "ngh" if !is_front_vowel_rhyme => false ,
73+ // 'qu' acts as a single unit and cannot be followed by a rhyme starting with 'u' or 'o'.
74+ "qu" if "uo" . contains ( first_char_of_rhyme) => false ,
75+ // Avoid "gi" + i-initial rhyme like "giiên", which is not a valid word.
76+ "gi" if first_char_of_rhyme == 'i' => false ,
77+ _ => true ,
9278 }
93-
94- true
9579}
9680
9781/// Applies a tone mark to the correct vowel in a syllable.
0 commit comments