#![warn(missing_docs)]
pub(crate) mod cleaner;
pub(crate) mod data;
pub(crate) mod decoder;
pub(crate) mod homographs;
pub mod html;
pub mod liaisons;
pub(crate) mod parser;
pub(crate) mod phoneme;
pub(crate) mod rules;
pub use decoder::{AssembleMode, SyllableMode, TextChunk};
pub use html::{render_html, render_word_html};
pub use liaisons::{liaison_amont, liaison_aval, liaison_possible};
pub fn syllables(word: &str) -> Vec<String> {
syllables_with(word, false, AssembleMode::Std, SyllableMode::Written)
}
pub fn syllables_with(
word: &str,
novice_reader: bool,
assemble_mode: AssembleMode,
syl_mode: SyllableMode,
) -> Vec<String> {
let phonemes = decoder::extract_phonemes_word(word, novice_reader, syl_mode);
let (sylls, nphons) = decoder::assemble_syllables(&phonemes, assemble_mode, syl_mode);
sylls
.iter()
.map(|syl| {
syl.iter()
.map(|&i| nphons[i].letters.clone())
.collect::<String>()
})
.collect()
}
pub fn phonemes(word: &str) -> Vec<(String, String)> {
decoder::extract_phonemes_word(word, false, SyllableMode::Written)
.into_iter()
.map(|p| (p.code, p.letters))
.collect()
}
pub fn syllabify_text(text: &str) -> Vec<TextChunk> {
decoder::extract_syllables(text, false, AssembleMode::Std, SyllableMode::Written)
}