use syllabify_fr::{
liaison_possible, phonemes, render_html, render_word_html, syllabify_text, syllables,
syllables_with, AssembleMode, SyllableMode, TextChunk,
};
fn main() {
println!("=== syllables ===");
for word in &[
"chocolat",
"famille",
"parlent",
"œil",
"grand-père",
"anticonstitutionnellement",
] {
println!(" {:30} → {}", word, syllables(word).join("-"));
}
println!("\n=== phonemes ===");
for (code, letters) in phonemes("chocolat") {
print!("[{code}:{letters}] ");
}
println!();
println!("\n=== syllabify_text ===");
for text in &["le petit chat noir", "le couvent", "elles couvent"] {
let chunks = syllabify_text(text);
let rendered: Vec<String> = chunks
.iter()
.map(|c| match c {
TextChunk::Word(s) => s.join("-"),
TextChunk::Raw(s) => s.clone(),
})
.collect();
println!(" {:25} → {}", text, rendered.join(""));
}
println!("\n=== modes ===");
let word = "école";
println!(
" {word} Written → {}",
syllables_with(word, false, AssembleMode::Std, SyllableMode::Written).join("-")
);
println!(
" {word} Oral → {}",
syllables_with(word, false, AssembleMode::Std, SyllableMode::Oral).join("-")
);
println!("\n=== liaisons ===");
let pairs = [("les", "hôtels"), ("les", "héros"), ("un", "enfant")];
for (a, b) in pairs {
println!(" «{}» + «{}» → liaison: {}", a, b, liaison_possible(a, b));
}
println!("\n=== render_word_html ===");
println!(" {}", render_word_html("chocolat"));
println!("\n=== render_html ===");
println!(" {}", render_html("les hôtels"));
}