diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/main.rs b/src/main.rs index b59669d..c09d045 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,6 @@ +#[macro_use] +extern crate log; + use std::collections::HashMap; use std::fs; use std::io; @@ -32,6 +35,7 @@ struct Opt { enum Cmd { ParseKanjidic, ParseJlptVocab, + IndexJmdict, New { #[structopt(default_value = "10")] count: usize, @@ -47,6 +51,11 @@ enum Cmd { #[async_std::main] async fn main() { + if std::env::var("RUST_LOG").is_err() { + std::env::set_var("RUST_LOG", "datagengo=info") + } + pretty_env_logger::init(); + let opt = Opt::from_args(); match opt.cmd { @@ -62,6 +71,19 @@ async fn main() { Charset::from_iter(kanji_levels.iter().map(|(_, c)| c.chars()).flatten()); parse_jlpt_vocab(&all_kanji).expect("error"); } + Cmd::IndexJmdict => { + let jmdict = fs::read_to_string("data/JMdict_e.xml").expect("read_jmdict"); + let jmdict = roxmltree::Document::parse_with_options( + &jmdict, + roxmltree::ParsingOptions { + allow_dtd: true, + ..Default::default() + }, + ) + .expect("parse_jmdict"); + let jmdict_idx = index_jmdict(&jmdict); + fs::write("data/jmdict_idx.json", serde_json::to_string_pretty(&jmdict_idx).expect("to_json").as_bytes()).expect("write"); + } Cmd::New { truncate, count } => { let kanji_levels = read_kanji_levels().expect("read_kanji_levels"); let all_kanji = Charset::new( @@ -119,16 +141,7 @@ async fn main() { save_batches(batches).expect("save_batches"); } Cmd::Format => { - let jmdict = fs::read_to_string("data/JMdict_e.xml").expect("read_jmdict"); - let jmdict = roxmltree::Document::parse_with_options( - &jmdict, - roxmltree::ParsingOptions { - allow_dtd: true, - ..Default::default() - }, - ) - .expect("parse_jmdict"); - let jmdict_idx = index_jmdict(&jmdict); + let jmdict_idx = read_jmdict_idx().expect("read jmdict_idx.json"); let batches = read_batches().expect("read/parse"); |