diff options
Diffstat (limited to 'src/example.rs')
-rw-r--r-- | src/example.rs | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/src/example.rs b/src/example.rs index 7d20a28..c52cc8f 100644 --- a/src/example.rs +++ b/src/example.rs @@ -4,11 +4,7 @@ use crate::charset::Charset; use crate::*; impl Example { - pub fn gen_furigana<'a>( - &mut self, - dict_idx: &DictIndex<'a>, - overrides: &HashMap<String, String>, - ) { + pub fn gen_furigana(&mut self, dict_idx: &DictIndex, overrides: &HashMap<String, String>) { use std::fmt::Write; if let Some(v) = overrides.get(&self.ja) { @@ -51,13 +47,11 @@ impl Example { let reb = match reb { Some(reb) if reb.starts_with('#') => { let ents = dict_idx.get(keb).map(|x| &x[..]).unwrap_or_default(); - if let Some(ent) = ents.iter().find(|ent| { - let ent_seq = ent.children().find(|x| x.has_tag_name("ent_seq")).unwrap(); - ent_seq.text().unwrap().trim() == reb.strip_prefix('#').unwrap() - }) { - let r_ele = ent.children().find(|x| x.has_tag_name("r_ele")).unwrap(); - let reb = r_ele.children().find(|x| x.has_tag_name("reb")).unwrap(); - reb.text().unwrap().trim() + if let Some(ent) = ents + .iter() + .find(|ent| ent.ent_seq == reb.strip_prefix('#').unwrap()) + { + ent.reb.as_str() } else { println!("- entry id not found: {}", reb); ret += &word; @@ -69,11 +63,7 @@ impl Example { let ents = dict_idx.get(keb).map(|x| &x[..]).unwrap_or_default(); let matches = ents .iter() - .map(|ent| { - let r_ele = ent.children().find(|x| x.has_tag_name("r_ele")).unwrap(); - let reb = r_ele.children().find(|x| x.has_tag_name("reb")).unwrap(); - reb.text().unwrap().trim() - }) + .map(|ent| ent.reb.as_str()) .collect::<HashSet<_>>(); if matches.len() == 1 { *matches.iter().next().unwrap() |