dictionary error handling

This commit is contained in:
leca 2024-05-06 16:34:03 +03:00
parent 19414d8290
commit 407f052f12
1 changed files with 19 additions and 2 deletions

View File

@ -1,5 +1,6 @@
use rusqlite::Connection;
use std::fs;
use std::io::ErrorKind;
use crate::db::get_db_path;
@ -42,11 +43,27 @@ fn get_sym_pos_or_panic(path: &String, line: &str, sym: &str, line_number: usize
fn read_and_parse(path: &String) -> Vec<DictionaryEntry> {
let mut result: Vec<DictionaryEntry> = Vec::new();
let content = fs::read_to_string(path).unwrap();
let content = match fs::read_to_string(path) {
Ok(string) => string,
Err(kind) => match kind.kind() {
ErrorKind::NotFound => {
println!("No dictionary file found. Assuming it's empty. Perhaps, you want to download it from my git? https://git.foxarmy.org/leca/learn-hieroglyphs");
return Vec::new();
}
ErrorKind::PermissionDenied => {
println!("Permission denied while was trying to access the dictionary.txt file. Assuming it's empty");
return Vec::new();
}
_ => {
println!("Unexpected error. Can't load dictionary. Assuming it's empty");
return Vec::new();
},
},
};
let content: Vec<&str> = content.split('\n').collect();
for (line_number, line) in content.iter().enumerate() {
if line == &"" {
if *line == "" {
continue;
}
let hieroglyph_start = get_sym_pos_or_panic(path, line, "(", line_number) + 1;