add -k to open each kanji info in a browser tab

This commit is contained in:
jojii 2021-04-02 20:20:09 +02:00
parent 9eb9481067
commit d017288de4
No known key found for this signature in database
GPG key ID: 87B75C673974601F
3 changed files with 55 additions and 27 deletions

18
Cargo.lock generated
View file

@ -112,6 +112,7 @@ dependencies = [
"colored",
"serde_json",
"ureq",
"webbrowser",
]
[[package]]
@ -397,6 +398,17 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "webbrowser"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecad156490d6b620308ed411cfee90d280b3cbd13e189ea0d3fada8acc89158a"
dependencies = [
"web-sys",
"widestring",
"winapi",
]
[[package]]
name = "webpki"
version = "0.21.4"
@ -416,6 +428,12 @@ dependencies = [
"webpki",
]
[[package]]
name = "widestring"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
[[package]]
name = "winapi"
version = "0.3.9"

View file

@ -14,3 +14,6 @@ serde_json = "1.0.64"
ansi_term = "0.12.1"
colored = "2.0.0"
argparse = "0.2.2"
webbrowser = "0.5.5"
[features]

View file

@ -46,36 +46,44 @@ fn main() -> Result<(), ureq::Error> {
};
loop {
// Do API request
let body: Value = ureq::get(&format!(JISHO_URL!(), query))
.call()?
.into_json()?;
if options.kanji {
// Open kanji page here
query.chars().into_iter().for_each(|kanji| {
webbrowser::open(&format!("https://jisho.org/search/{}%23kanji", kanji))
.expect("Couldn't open browser");
});
} else {
// Do API request
let body: Value = ureq::get(&format!(JISHO_URL!(), query))
.call()?
.into_json()?;
// Try to get the data json-object
let body = value_to_arr({
let body = body.get("data");
// Try to get the data json-object
let body = value_to_arr({
let body = body.get("data");
if body.is_none() {
eprintln!("Error! Invalid response");
return Ok(());
}
if body.is_none() {
eprintln!("Error! Invalid response");
return Ok(());
}
body.unwrap()
});
body.unwrap()
});
if options.interactive {
println!();
}
// Iterate over meanings and print them
for (i, entry) in body.iter().enumerate() {
if i >= options.limit {
break;
}
if print_item(&query, entry).is_some() && i + 2 <= options.limit {
if options.interactive {
println!();
}
// Iterate over meanings and print them
for (i, entry) in body.iter().enumerate() {
if i >= options.limit {
break;
}
if print_item(&query, entry).is_some() && i + 2 <= options.limit {
println!();
}
}
}
if !options.interactive {
@ -268,13 +276,12 @@ fn parse_args() -> Options {
"Don't exit after running a query",
);
/* Uncomment when supported by jisho.org
/* Uncomment when supported by jisho.org */
ap.refer(&mut options.kanji).add_option(
&["--kanji", "-k"],
StoreFalse,
StoreTrue,
"Look up a certain kanji",
);
*/
ap.parse_args_or_exit();
}