use super::counter::SyllableCounter;
use super::heuristic::HeuristicSyllableCounter;
use super::tex::TexSyllableCounter;
pub struct CompositeSyllableCounter {
heuristic: HeuristicSyllableCounter,
tex: TexSyllableCounter,
}
impl CompositeSyllableCounter {
pub fn new(heuristic: HeuristicSyllableCounter, tex: TexSyllableCounter) -> Self {
CompositeSyllableCounter { heuristic, tex }
}
}
impl SyllableCounter for CompositeSyllableCounter {
fn count_syllables(&self, word: &str) -> i64 {
if self.heuristic.has_rules() {
self.heuristic.count_syllables(word)
} else {
self.tex.count_syllables(word)
}
}
fn split_syllables(&self, word: &str) -> Vec<String> {
if self.heuristic.has_rules() {
self.heuristic.split_syllables(word)
} else {
self.tex.split_syllables(word)
}
}
}