use crate::{error::DictionaryError, word::Word};
use chamkho::Wordcut;
use dodo_zh::variant::KeyVariant;
use std::{collections::HashMap, marker::PhantomData, path::PathBuf};
pub enum Lang {
Chinese(KeyVariant),
Laotian(Option<Box<Wordcut>>),
}
pub struct Chinese;
pub struct Laotian;
pub struct Dictionary<T> {
pub _lang: PhantomData<T>,
pub dict: HashMap<String, Word>,
pub punctuation: Vec<String>,
pub params: Lang,
}
pub(crate) trait Initializer<T> {
fn initialize(params: Lang) -> Result<Self, DictionaryError>
where
Self: Sized;
fn load(&mut self, path: PathBuf) -> Result<(), DictionaryError>;
}