use crate::KanaFormChanger;
#[derive(Clone, Debug, Eq, PartialEq)]
pub(crate) struct CompositeKey {
to_composite: String,
okuri: Option<String>,
}
impl CompositeKey {
pub(crate) fn new(to_composite: &str, okuri: Option<String>) -> Self {
CompositeKey {
to_composite: to_composite.to_owned(),
okuri,
}
}
pub(crate) fn get_to_composite(&self) -> &str {
&self.to_composite
}
pub(crate) fn get_okuri(&self) -> &Option<String> {
&self.okuri
}
pub(crate) fn has_okuri(&self) -> bool {
self.okuri.is_some()
}
pub(in crate::dictionary) fn get_dict_key(&self) -> String {
if self.okuri.is_some() {
if let Some(okuri) = KanaFormChanger::kana_to_okuri_prefix(
&self.okuri.as_ref().unwrap().chars().next().unwrap(),
)
{
let mut result = self.get_to_composite().to_string();
result.push(okuri);
return result;
}
}
self.to_composite.to_owned()
}
pub(crate) fn clear(&mut self) {
self.to_composite.clear();
self.okuri = None;
}
}