use crate::phonetic::types::{Context, Phone, RewriteRule, RewriteRuleByte};
const FRONT_VOWELS: &[u8] = &[b'e', b'i'];
const VOWELS: &[u8] = &[b'a', b'e', b'i', b'o', b'u'];
fn rule_ch_to_tsh() -> RewriteRuleByte {
RewriteRule {
rule_id: 1,
rule_name: "ch → ç (tsh sound)".to_string(),
pattern: vec![Phone::Consonant(b'c'), Phone::Consonant(b'h')],
replacement: vec![Phone::Digraph(b'c', b'h')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_sh_to_sh() -> RewriteRuleByte {
RewriteRule {
rule_id: 2,
rule_name: "sh → $ (sh sound)".to_string(),
pattern: vec![Phone::Consonant(b's'), Phone::Consonant(b'h')],
replacement: vec![Phone::Digraph(b's', b'h')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ph_to_f() -> RewriteRuleByte {
RewriteRule {
rule_id: 3,
rule_name: "ph → f".to_string(),
pattern: vec![Phone::Consonant(b'p'), Phone::Consonant(b'h')],
replacement: vec![Phone::Consonant(b'f')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_c_to_s_before_front() -> RewriteRuleByte {
RewriteRule {
rule_id: 20,
rule_name: "c → s / _[ie]".to_string(),
pattern: vec![Phone::Consonant(b'c')],
replacement: vec![Phone::Consonant(b's')],
context: Context::BeforeVowel(FRONT_VOWELS.to_vec()),
weight: 0.0,
syllable_condition: None,
}
}
fn rule_c_to_k_elsewhere() -> RewriteRuleByte {
RewriteRule {
rule_id: 21,
rule_name: "c → k (elsewhere)".to_string(),
pattern: vec![Phone::Consonant(b'c')],
replacement: vec![Phone::Consonant(b'k')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_g_to_j_before_front() -> RewriteRuleByte {
RewriteRule {
rule_id: 22,
rule_name: "g → j / _[ie]".to_string(),
pattern: vec![Phone::Consonant(b'g')],
replacement: vec![Phone::Consonant(b'j')],
context: Context::BeforeVowel(FRONT_VOWELS.to_vec()),
weight: 0.0,
syllable_condition: None,
}
}
fn rule_silent_e_final() -> RewriteRuleByte {
RewriteRule {
rule_id: 33,
rule_name: "e → ∅ / _#".to_string(),
pattern: vec![Phone::Vowel(b'e')],
replacement: vec![Phone::Silent],
context: Context::Final,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_gh_silent() -> RewriteRuleByte {
RewriteRule {
rule_id: 34,
rule_name: "gh → ∅".to_string(),
pattern: vec![Phone::Consonant(b'g'), Phone::Consonant(b'h')],
replacement: vec![Phone::Silent],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_wr_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 4,
rule_name: "wr → r / #_".to_string(),
pattern: vec![Phone::Consonant(b'w'), Phone::Consonant(b'r')],
replacement: vec![Phone::Consonant(b'r')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_wh_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 5,
rule_name: "wh → w / #_".to_string(),
pattern: vec![Phone::Consonant(b'w'), Phone::Consonant(b'h')],
replacement: vec![Phone::Consonant(b'w')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_gn_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 6,
rule_name: "gn → n / #_".to_string(),
pattern: vec![Phone::Consonant(b'g'), Phone::Consonant(b'n')],
replacement: vec![Phone::Consonant(b'n')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_kn_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 7,
rule_name: "kn → n / #_".to_string(),
pattern: vec![Phone::Consonant(b'k'), Phone::Consonant(b'n')],
replacement: vec![Phone::Consonant(b'n')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_mn_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 8,
rule_name: "mn → n / #_".to_string(),
pattern: vec![Phone::Consonant(b'm'), Phone::Consonant(b'n')],
replacement: vec![Phone::Consonant(b'n')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_pt_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 9,
rule_name: "pt → t / #_".to_string(),
pattern: vec![Phone::Consonant(b'p'), Phone::Consonant(b't')],
replacement: vec![Phone::Consonant(b't')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ps_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 10,
rule_name: "ps → s / #_".to_string(),
pattern: vec![Phone::Consonant(b'p'), Phone::Consonant(b's')],
replacement: vec![Phone::Consonant(b's')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_tm_initial() -> RewriteRuleByte {
RewriteRule {
rule_id: 11,
rule_name: "tm → m / #_".to_string(),
pattern: vec![Phone::Consonant(b't'), Phone::Consonant(b'm')],
replacement: vec![Phone::Consonant(b'm')],
context: Context::Initial,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_gh_before_vowel() -> RewriteRuleByte {
RewriteRule {
rule_id: 35,
rule_name: "gh → g / _[aeiou]".to_string(),
pattern: vec![Phone::Consonant(b'g'), Phone::Consonant(b'h')],
replacement: vec![Phone::Consonant(b'g')],
context: Context::BeforeVowel(VOWELS.to_vec()),
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ough_pattern() -> RewriteRuleByte {
RewriteRule {
rule_id: 36,
rule_name: "ough → o".to_string(),
pattern: vec![
Phone::Vowel(b'o'),
Phone::Vowel(b'u'),
Phone::Consonant(b'g'),
Phone::Consonant(b'h'),
],
replacement: vec![Phone::Vowel(b'o')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_aught_pattern() -> RewriteRuleByte {
RewriteRule {
rule_id: 37,
rule_name: "aught → ot".to_string(),
pattern: vec![
Phone::Vowel(b'a'),
Phone::Vowel(b'u'),
Phone::Consonant(b'g'),
Phone::Consonant(b'h'),
Phone::Consonant(b't'),
],
replacement: vec![Phone::Vowel(b'o'), Phone::Consonant(b't')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ought_pattern() -> RewriteRuleByte {
RewriteRule {
rule_id: 38,
rule_name: "ought → ot".to_string(),
pattern: vec![
Phone::Vowel(b'o'),
Phone::Vowel(b'u'),
Phone::Consonant(b'g'),
Phone::Consonant(b'h'),
Phone::Consonant(b't'),
],
replacement: vec![Phone::Vowel(b'o'), Phone::Consonant(b't')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_x_to_ks() -> RewriteRuleByte {
RewriteRule {
rule_id: 40,
rule_name: "x → ks".to_string(),
pattern: vec![Phone::Consonant(b'x')],
replacement: vec![Phone::Consonant(b'k'), Phone::Consonant(b's')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_x_to_gz_voiced() -> RewriteRuleByte {
RewriteRule {
rule_id: 41,
rule_name: "x → gz / [aeiou]_[aeiou]".to_string(),
pattern: vec![Phone::Consonant(b'x')],
replacement: vec![Phone::Consonant(b'g'), Phone::Consonant(b'z')],
context: Context::And(
Box::new(Context::AfterVowel(VOWELS.to_vec())),
Box::new(Context::BeforeVowel(VOWELS.to_vec())),
),
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ea_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 50,
rule_name: "ea → e".to_string(),
pattern: vec![Phone::Vowel(b'e'), Phone::Vowel(b'a')],
replacement: vec![Phone::Vowel(b'e')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_ee_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 51,
rule_name: "ee → e".to_string(),
pattern: vec![Phone::Vowel(b'e'), Phone::Vowel(b'e')],
replacement: vec![Phone::Vowel(b'e')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_ai_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 52,
rule_name: "ai → a".to_string(),
pattern: vec![Phone::Vowel(b'a'), Phone::Vowel(b'i')],
replacement: vec![Phone::Vowel(b'a')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_ay_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 53,
rule_name: "ay → a".to_string(),
pattern: vec![Phone::Vowel(b'a'), Phone::Consonant(b'y')],
replacement: vec![Phone::Vowel(b'a')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_oa_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 54,
rule_name: "oa → o".to_string(),
pattern: vec![Phone::Vowel(b'o'), Phone::Vowel(b'a')],
replacement: vec![Phone::Vowel(b'o')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_oe_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 55,
rule_name: "oe → o".to_string(),
pattern: vec![Phone::Vowel(b'o'), Phone::Vowel(b'e')],
replacement: vec![Phone::Vowel(b'o')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_ou_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 56,
rule_name: "ou → ow".to_string(),
pattern: vec![Phone::Vowel(b'o'), Phone::Vowel(b'u')],
replacement: vec![Phone::Vowel(b'o'), Phone::Consonant(b'w')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_oi_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 58,
rule_name: "oi → oy".to_string(),
pattern: vec![Phone::Vowel(b'o'), Phone::Vowel(b'i')],
replacement: vec![Phone::Vowel(b'o'), Phone::Consonant(b'y')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_ey_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 59,
rule_name: "ey → e".to_string(),
pattern: vec![Phone::Vowel(b'e'), Phone::Consonant(b'y')],
replacement: vec![Phone::Vowel(b'e')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_ie_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 60,
rule_name: "ie → i".to_string(),
pattern: vec![Phone::Vowel(b'i'), Phone::Vowel(b'e')],
replacement: vec![Phone::Vowel(b'i')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_oo_digraph() -> RewriteRuleByte {
RewriteRule {
rule_id: 61,
rule_name: "oo → u".to_string(),
pattern: vec![Phone::Vowel(b'o'), Phone::Vowel(b'o')],
replacement: vec![Phone::Vowel(b'u')],
context: Context::Anywhere,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_ue_final() -> RewriteRuleByte {
RewriteRule {
rule_id: 62,
rule_name: "ue → u / _#".to_string(),
pattern: vec![Phone::Vowel(b'u'), Phone::Vowel(b'e')],
replacement: vec![Phone::Vowel(b'u')],
context: Context::Final,
weight: 0.1,
syllable_condition: None,
}
}
fn rule_bb_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 80,
rule_name: "bb → b".to_string(),
pattern: vec![Phone::Consonant(b'b'), Phone::Consonant(b'b')],
replacement: vec![Phone::Consonant(b'b')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_cc_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 81,
rule_name: "cc → c".to_string(),
pattern: vec![Phone::Consonant(b'c'), Phone::Consonant(b'c')],
replacement: vec![Phone::Consonant(b'c')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_dd_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 82,
rule_name: "dd → d".to_string(),
pattern: vec![Phone::Consonant(b'd'), Phone::Consonant(b'd')],
replacement: vec![Phone::Consonant(b'd')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ff_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 83,
rule_name: "ff → f".to_string(),
pattern: vec![Phone::Consonant(b'f'), Phone::Consonant(b'f')],
replacement: vec![Phone::Consonant(b'f')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_gg_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 84,
rule_name: "gg → g".to_string(),
pattern: vec![Phone::Consonant(b'g'), Phone::Consonant(b'g')],
replacement: vec![Phone::Consonant(b'g')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ll_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 85,
rule_name: "ll → l".to_string(),
pattern: vec![Phone::Consonant(b'l'), Phone::Consonant(b'l')],
replacement: vec![Phone::Consonant(b'l')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_mm_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 86,
rule_name: "mm → m".to_string(),
pattern: vec![Phone::Consonant(b'm'), Phone::Consonant(b'm')],
replacement: vec![Phone::Consonant(b'm')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_nn_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 87,
rule_name: "nn → n".to_string(),
pattern: vec![Phone::Consonant(b'n'), Phone::Consonant(b'n')],
replacement: vec![Phone::Consonant(b'n')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_pp_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 88,
rule_name: "pp → p".to_string(),
pattern: vec![Phone::Consonant(b'p'), Phone::Consonant(b'p')],
replacement: vec![Phone::Consonant(b'p')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_rr_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 89,
rule_name: "rr → r".to_string(),
pattern: vec![Phone::Consonant(b'r'), Phone::Consonant(b'r')],
replacement: vec![Phone::Consonant(b'r')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ss_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 90,
rule_name: "ss → s".to_string(),
pattern: vec![Phone::Consonant(b's'), Phone::Consonant(b's')],
replacement: vec![Phone::Consonant(b's')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_tt_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 91,
rule_name: "tt → t".to_string(),
pattern: vec![Phone::Consonant(b't'), Phone::Consonant(b't')],
replacement: vec![Phone::Consonant(b't')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_zz_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 92,
rule_name: "zz → z".to_string(),
pattern: vec![Phone::Consonant(b'z'), Phone::Consonant(b'z')],
replacement: vec![Phone::Consonant(b'z')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_tion_ending() -> RewriteRuleByte {
RewriteRule {
rule_id: 110,
rule_name: "tion → shun".to_string(),
pattern: vec![
Phone::Consonant(b't'),
Phone::Vowel(b'i'),
Phone::Vowel(b'o'),
Phone::Consonant(b'n'),
],
replacement: vec![
Phone::Consonant(b's'),
Phone::Consonant(b'h'),
Phone::Vowel(b'u'),
Phone::Consonant(b'n'),
],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_sion_ending() -> RewriteRuleByte {
RewriteRule {
rule_id: 111,
rule_name: "sion → zhun".to_string(),
pattern: vec![
Phone::Consonant(b's'),
Phone::Vowel(b'i'),
Phone::Vowel(b'o'),
Phone::Consonant(b'n'),
],
replacement: vec![
Phone::Consonant(b'z'),
Phone::Consonant(b'h'),
Phone::Vowel(b'u'),
Phone::Consonant(b'n'),
],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_cious_ending() -> RewriteRuleByte {
RewriteRule {
rule_id: 112,
rule_name: "cious → shus".to_string(),
pattern: vec![
Phone::Consonant(b'c'),
Phone::Vowel(b'i'),
Phone::Vowel(b'o'),
Phone::Vowel(b'u'),
Phone::Consonant(b's'),
],
replacement: vec![
Phone::Consonant(b's'),
Phone::Consonant(b'h'),
Phone::Vowel(b'u'),
Phone::Consonant(b's'),
],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_tious_ending() -> RewriteRuleByte {
RewriteRule {
rule_id: 113,
rule_name: "tious → shus".to_string(),
pattern: vec![
Phone::Consonant(b't'),
Phone::Vowel(b'i'),
Phone::Vowel(b'o'),
Phone::Vowel(b'u'),
Phone::Consonant(b's'),
],
replacement: vec![
Phone::Consonant(b's'),
Phone::Consonant(b'h'),
Phone::Vowel(b'u'),
Phone::Consonant(b's'),
],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_tch_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 130,
rule_name: "tch → ch".to_string(),
pattern: vec![
Phone::Consonant(b't'),
Phone::Consonant(b'c'),
Phone::Consonant(b'h'),
],
replacement: vec![Phone::Consonant(b'c'), Phone::Consonant(b'h')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_dge_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 131,
rule_name: "dge → j".to_string(),
pattern: vec![
Phone::Consonant(b'd'),
Phone::Consonant(b'g'),
Phone::Vowel(b'e'),
],
replacement: vec![Phone::Consonant(b'j')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_ck_simplify() -> RewriteRuleByte {
RewriteRule {
rule_id: 132,
rule_name: "ck → k".to_string(),
pattern: vec![Phone::Consonant(b'c'), Phone::Consonant(b'k')],
replacement: vec![Phone::Consonant(b'k')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_mb_final() -> RewriteRuleByte {
RewriteRule {
rule_id: 133,
rule_name: "mb → m / _#".to_string(),
pattern: vec![Phone::Consonant(b'm'), Phone::Consonant(b'b')],
replacement: vec![Phone::Consonant(b'm')],
context: Context::Final,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_bt_silent() -> RewriteRuleByte {
RewriteRule {
rule_id: 134,
rule_name: "bt → t".to_string(),
pattern: vec![Phone::Consonant(b'b'), Phone::Consonant(b't')],
replacement: vec![Phone::Consonant(b't')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_mn_final() -> RewriteRuleByte {
RewriteRule {
rule_id: 135,
rule_name: "mn → m / _#".to_string(),
pattern: vec![Phone::Consonant(b'm'), Phone::Consonant(b'n')],
replacement: vec![Phone::Consonant(b'm')],
context: Context::Final,
weight: 0.0,
syllable_condition: None,
}
}
fn phonetic_th_to_t() -> RewriteRuleByte {
RewriteRule {
rule_id: 100,
rule_name: "th → t (phonetic)".to_string(),
pattern: vec![Phone::Consonant(b't'), Phone::Consonant(b'h')],
replacement: vec![Phone::Consonant(b't')],
context: Context::Anywhere,
weight: 0.15,
syllable_condition: None,
}
}
fn phonetic_qu_to_kw() -> RewriteRuleByte {
RewriteRule {
rule_id: 101,
rule_name: "qu → kw (phonetic)".to_string(),
pattern: vec![Phone::Consonant(b'q'), Phone::Consonant(b'u')],
replacement: vec![Phone::Consonant(b'k'), Phone::Consonant(b'w')],
context: Context::Anywhere,
weight: 0.15,
syllable_condition: None,
}
}
fn phonetic_kw_to_qu() -> RewriteRuleByte {
RewriteRule {
rule_id: 102,
rule_name: "kw → qu (phonetic reverse)".to_string(),
pattern: vec![Phone::Consonant(b'k'), Phone::Consonant(b'w')],
replacement: vec![Phone::Consonant(b'q'), Phone::Consonant(b'u')],
context: Context::Anywhere,
weight: 0.15,
syllable_condition: None,
}
}
fn rule_x_expand() -> RewriteRuleByte {
RewriteRule {
rule_id: 200,
rule_name: "x → yy (expansion test)".to_string(),
pattern: vec![Phone::Consonant(b'x')],
replacement: vec![Phone::Consonant(b'y'), Phone::Consonant(b'y')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
fn rule_y_to_z() -> RewriteRuleByte {
RewriteRule {
rule_id: 201,
rule_name: "y → z (transformation test)".to_string(),
pattern: vec![Phone::Consonant(b'y')],
replacement: vec![Phone::Consonant(b'z')],
context: Context::Anywhere,
weight: 0.0,
syllable_condition: None,
}
}
pub fn orthography_rules() -> Vec<RewriteRuleByte> {
vec![
rule_tion_ending(), rule_sion_ending(), rule_cious_ending(), rule_tious_ending(), rule_ough_pattern(), rule_aught_pattern(), rule_ought_pattern(), rule_tch_simplify(), rule_dge_simplify(), rule_gh_before_vowel(), rule_ch_to_tsh(), rule_sh_to_sh(), rule_ph_to_f(), rule_wr_initial(), rule_wh_initial(), rule_gn_initial(), rule_kn_initial(), rule_mn_initial(), rule_pt_initial(), rule_ps_initial(), rule_tm_initial(), rule_x_to_gz_voiced(), rule_x_to_ks(), rule_c_to_s_before_front(), rule_c_to_k_elsewhere(), rule_g_to_j_before_front(), rule_ck_simplify(), rule_mb_final(), rule_bt_silent(), rule_mn_final(), rule_bb_simplify(), rule_cc_simplify(), rule_dd_simplify(), rule_ff_simplify(), rule_gg_simplify(), rule_ll_simplify(), rule_mm_simplify(), rule_nn_simplify(), rule_pp_simplify(), rule_rr_simplify(), rule_ss_simplify(), rule_tt_simplify(), rule_zz_simplify(), rule_silent_e_final(), rule_gh_silent(), ]
}
pub fn vowel_digraph_rules() -> Vec<RewriteRuleByte> {
vec![
rule_ea_digraph(), rule_ee_digraph(), rule_ai_digraph(), rule_ay_digraph(), rule_oa_digraph(), rule_oe_digraph(), rule_ou_digraph(), rule_oi_digraph(), rule_ey_digraph(), rule_ie_digraph(), rule_oo_digraph(), rule_ue_final(), ]
}
pub fn phonetic_rules() -> Vec<RewriteRuleByte> {
vec![phonetic_th_to_t(), phonetic_qu_to_kw(), phonetic_kw_to_qu()]
}
pub fn test_rules() -> Vec<RewriteRuleByte> {
vec![rule_x_expand(), rule_y_to_z()]
}
pub fn zompist_rules() -> Vec<RewriteRuleByte> {
let mut rules = Vec::with_capacity(62);
rules.extend(orthography_rules());
rules.extend(vowel_digraph_rules());
rules.extend(phonetic_rules());
rules.extend(test_rules());
rules
}