More changes to formatting and additional info. Also exit on EOF.

This commit is contained in:
Hiers 2023-03-18 21:40:39 +00:00
parent c541922d05
commit 128c0a6e9b

View file

@ -52,7 +52,10 @@ fn main() -> Result<(), ureq::Error> {
while o.trim().is_empty() { while o.trim().is_empty() {
print!("=> "); print!("=> ");
stdout().flush().unwrap(); stdout().flush().unwrap();
stdin().read_line(&mut o).expect("Can't read from stdin"); if (stdin().read_line(&mut o).expect("Can't read from stdin")) == 0 {
// Exit on EOF
return Ok(());
}
} }
o o
} else { } else {
@ -139,9 +142,10 @@ fn main() -> Result<(), ureq::Error> {
while query.trim().is_empty() { while query.trim().is_empty() {
print!("=> "); print!("=> ");
stdout().flush().unwrap(); stdout().flush().unwrap();
stdin() if (stdin().read_line(&mut query).expect("Can't read from stdin")) == 0 {
.read_line(&mut query) // Exit on EOF
.expect("Can't read from stdin"); return Ok(());
}
} }
} }
@ -250,10 +254,15 @@ fn format_sense(value: &Value, index: usize, prev_parts_of_speech: &mut String)
}; };
let index_str = format!("{}.",(index + 1)); let index_str = format!("{}.",(index + 1));
let tags = format_sense_tags(value); let mut tags = format_sense_tags(value);
let info = format_sense_info(value);
if !info.is_empty() && !tags.is_empty() {
tags.push(',');
}
(format!( (format!(
"{}{} {} {}", "{}{} {}{}{}",
parts_of_speech, parts_of_speech,
index_str.bright_black(), index_str.bright_black(),
english_definiton english_definiton
@ -261,7 +270,8 @@ fn format_sense(value: &Value, index: usize, prev_parts_of_speech: &mut String)
.map(|i| value_to_str(i)) .map(|i| value_to_str(i))
.collect::<Vec<&str>>() .collect::<Vec<&str>>()
.join(", "), .join(", "),
tags, tags.bright_black(),
info.bright_black(),
), bump) ), bump)
} }
@ -294,9 +304,14 @@ fn format_sense_tags(value: &Value) -> String {
if let Some(tags) = value.get("tags") { if let Some(tags) = value.get("tags") {
let tags = value_to_arr(tags); let tags = value_to_arr(tags);
for tag in tags { if let Some(tag) = tags.get(0) {
let t = format_sense_tag(value_to_str(tag)); let t = format_sense_tag(value_to_str(tag));
builder.push_str(t.as_str()) builder += &format!(" {}", t.as_str());
}
for tag in tags.get(1).iter() {
let t = format_sense_tag(value_to_str(tag));
builder += &format!(", {}", t.as_str());
} }
} }
@ -305,11 +320,27 @@ fn format_sense_tags(value: &Value) -> String {
fn format_sense_tag(tag: &str) -> String { fn format_sense_tag(tag: &str) -> String {
match tag { match tag {
"Usually written using kana alone" => "(UK)".to_string(), "Usually written using kana alone" => "UK".to_string(),
s => format!("({})", s), s => format!("{}", s),
} }
} }
fn format_sense_info(value: &Value) -> String {
let mut builder = String::new();
if let Some(all_info) = value.get("info") {
let all_info = value_to_arr(all_info);
if let Some(info) = all_info.get(0) {
builder += &format!(" {}", value_to_str(info));
}
for info in all_info.get(1).iter() {
builder += &format!(", {}", value_to_str(info));
}
}
return builder;
}
// //
// --- Value helper // --- Value helper
// //