improve some 'error' handling

This commit is contained in:
jojii 2021-02-07 23:40:08 +01:00
parent 6993367c3f
commit 37ec1729b8

View file

@ -47,30 +47,28 @@ fn main() -> Result<(), ureq::Error> {
break; break;
} }
print_item(&query, entry); if print_item(&query, entry).is_some() && i + 1 != ITEM_LIMIT {
println!(); println!();
} }
}
Ok(()) Ok(())
} }
fn print_item(query: &str, value: &Value) { fn print_item(query: &str, value: &Value) -> Option<()> {
let japanese = value_to_arr(value.get("japanese").unwrap()) let japanese = value_to_arr(value.get("japanese")?).get(0)?.to_owned();
.get(0)
.unwrap()
.to_owned();
let reading = japanese let reading = japanese
.get("reading") .get("reading")
.map(|i| value_to_str(i)) .map(|i| value_to_str(i))
.unwrap_or(query); .unwrap_or(query);
let word = value_to_str(japanese.get("word").unwrap()); let word = value_to_str(japanese.get("word")?);
println!("{}[{}] {}", word, reading, format_result_tags(value)); println!("{}[{}] {}", word, reading, format_result_tags(value));
// Print senses // Print senses
let senses = value.get("senses").unwrap(); let senses = value.get("senses")?;
for (i, sense) in value_to_arr(senses).iter().enumerate() { for (i, sense) in value_to_arr(senses).iter().enumerate() {
let sense_str = format_sense(&sense, i); let sense_str = format_sense(&sense, i);
if sense_str.is_empty() { if sense_str.is_empty() {
@ -79,6 +77,8 @@ fn print_item(query: &str, value: &Value) {
println!(" {}", sense_str); println!(" {}", sense_str);
} }
Some(())
} }
fn format_sense(value: &Value, index: usize) -> String { fn format_sense(value: &Value, index: usize) -> String {