gui is working
This commit is contained in:
@@ -73,14 +73,14 @@ pub const BOOKS_IN_ORDER: [&str; 66] = [
|
||||
"Revelation",
|
||||
];
|
||||
|
||||
pub fn get(query: &str, location: &str, files: Vec<PathBuf>) {
|
||||
pub fn get(book: &str, chap_and_ver: &str, from_files: Vec<PathBuf>) -> Option<String> {
|
||||
// expecting query to be in format:
|
||||
// Gen 1:2
|
||||
// Gen 1:2-5
|
||||
// Gen 1
|
||||
// The book name needs to be just long enough to be unique
|
||||
|
||||
let mut splits = location.split(':');
|
||||
let mut splits = chap_and_ver.split(':');
|
||||
let chapter = splits.next();
|
||||
let verse = splits.next();
|
||||
|
||||
@@ -89,26 +89,26 @@ pub fn get(query: &str, location: &str, files: Vec<PathBuf>) {
|
||||
let res = BOOKS_IN_ORDER
|
||||
.iter()
|
||||
.enumerate()
|
||||
.filter(|(_, book)| book.to_lowercase().contains(&query.to_lowercase()))
|
||||
.filter(|(_, lbook)| lbook.to_lowercase().contains(&book.trim().to_lowercase()))
|
||||
.collect::<Vec<(usize, &&str)>>();
|
||||
|
||||
let (book_idx, book_name) = match res.len() {
|
||||
1 => res[0],
|
||||
2.. => {
|
||||
eprintln!("Err: Ambigious input '{query}', could be any of:");
|
||||
eprintln!("Err: Ambigious input '{book}', could be any of:");
|
||||
for (_, i) in &res {
|
||||
eprintln!("\t{i}");
|
||||
}
|
||||
return;
|
||||
return None;
|
||||
}
|
||||
_ => {
|
||||
eprintln!("'{query}' is not a book");
|
||||
return;
|
||||
eprintln!("'{book}' is not a book");
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
||||
// Load Bibles into memory
|
||||
let bibles = files
|
||||
let bibles = from_files
|
||||
.iter()
|
||||
.filter_map(|path| fs::read_to_string(path).ok())
|
||||
.filter_map(|contents| from_str::<Bible>(&contents).ok())
|
||||
@@ -132,10 +132,10 @@ pub fn get(query: &str, location: &str, files: Vec<PathBuf>) {
|
||||
.map(|(bible,book,chapter)| (*bible,*book,chapter.unwrap()))
|
||||
.collect::<Vec<(&Bible, &Book, &Chapter)>>()
|
||||
} else {
|
||||
return;
|
||||
return None;
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
return None;
|
||||
};
|
||||
|
||||
// Get the verse in each Bible
|
||||
@@ -149,46 +149,54 @@ pub fn get(query: &str, location: &str, files: Vec<PathBuf>) {
|
||||
// range of verses
|
||||
(Some(sn), Some(en)) => {
|
||||
if let (Ok(start), Ok(end)) = (sn.parse::<usize>(), en.parse::<usize>()) {
|
||||
let mut buf = String::new();
|
||||
for num in start..=end {
|
||||
for (bible, _book, chapter) in &chapters {
|
||||
if let Some(verse) = chapter.get_verse_by_index(num) {
|
||||
println!(
|
||||
"{style_bold}[{}] {style_underline}{book_name} {}:{}{style_reset}: {verse}",
|
||||
buf += &format!(
|
||||
"{style_bold}[{}] {style_underline}{book_name} {}:{}{style_reset}: {verse}\n",
|
||||
bible.translation_name, chapter.number, verse.number
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Some(buf);
|
||||
}
|
||||
return None;
|
||||
}
|
||||
// only one verse
|
||||
(Some(ver_num), None) => {
|
||||
if let Ok(num) = ver_num.parse::<usize>() {
|
||||
let mut buf = String::new();
|
||||
for (bible, _book, chapter) in chapters {
|
||||
if let Some(verse) = chapter.get_verse_by_index(num) {
|
||||
println!(
|
||||
"{style_bold}[{}] {style_underline}{book_name} {}:{}{style_reset}: {verse}",
|
||||
buf += &format!(
|
||||
"{style_bold}[{}] {style_underline}{book_name} {}:{}{style_reset}: {verse}\n",
|
||||
bible.translation_name, chapter.number, verse.number
|
||||
);
|
||||
}
|
||||
}
|
||||
return Some(buf);
|
||||
}
|
||||
return None;
|
||||
}
|
||||
_ => {
|
||||
// couldn't parse verse
|
||||
return;
|
||||
return None;
|
||||
}
|
||||
}
|
||||
}
|
||||
None => {
|
||||
// only chapter
|
||||
for (bible, _book, chapter) in chapters {
|
||||
println!(
|
||||
"{style_bold}[{}] {style_underline}{book_name} {}{style_reset}:",
|
||||
let mut buf = String::new();
|
||||
for (bible, _, chapter) in chapters {
|
||||
buf += &format!(
|
||||
"{style_bold}[{}] {style_underline}{book_name} {}{style_reset}:\n",
|
||||
bible.translation_name, chapter.number
|
||||
);
|
||||
print!("{}", chapter);
|
||||
buf += &format!("{}", chapter);
|
||||
}
|
||||
return Some(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user