add regex support

This commit is contained in:
rushmore75 2025-04-02 01:05:50 -06:00
parent 11eb29df4f
commit 6d24b304ce
4 changed files with 61 additions and 6 deletions

39
Cargo.lock generated
View File

@ -48,6 +48,15 @@ dependencies = [
"zerocopy 0.7.35", "zerocopy 0.7.35",
] ]
[[package]]
name = "aho-corasick"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "allocator-api2" name = "allocator-api2"
version = "0.2.21" version = "0.2.21"
@ -288,6 +297,7 @@ dependencies = [
"iced", "iced",
"inline_colorization", "inline_colorization",
"quick-xml", "quick-xml",
"regex",
"serde", "serde",
] ]
@ -2546,6 +2556,35 @@ dependencies = [
"thiserror", "thiserror",
] ]
[[package]]
name = "regex"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]] [[package]]
name = "renderdoc-sys" name = "renderdoc-sys"
version = "1.1.0" version = "1.1.0"

View File

@ -7,4 +7,5 @@ edition = "2024"
iced = "0.13.1" iced = "0.13.1"
inline_colorization = "0.1.6" inline_colorization = "0.1.6"
quick-xml = { version="0.37.2", features=["serialize"] } quick-xml = { version="0.37.2", features=["serialize"] }
regex = "1.11.1"
serde = { version = "1.0.219", features = ["derive"] } serde = { version = "1.0.219", features = ["derive"] }

View File

@ -2,12 +2,13 @@
## Important Links ## Important Links
[Tanach.us](https://tanach.us) [XML Bibles in 190+ languages](https://github.com/Beblia/Holy-Bible-XML-Format)
[XML bible in 190+ languages](https://github.com/Beblia/Holy-Bible-XML-Format)
[HewbrewLexicon](https://github.com/openscriptures/HebrewLexicon/tree/master) [HewbrewLexicon](https://github.com/openscriptures/HebrewLexicon/tree/master)
[27, 91, 49, 109, 91, 69, 110, 103, 108, 105, 115, 104, 32, 78, 65, 83, 66, 93, 32, 27, 91, 52, 109, 71, 101, 110, 101, 115, 105, 115, 32, 49, 58, 49, 27, 91, 48, 109, 58, 32, 73, 110, 32, 116, 104, 101, 32, 98, 101, 103, 105, 110, 110, 105, 110, 103, 32, 71, 111, 100, 32, 99, 114, 101, 97, 116, 101, 100, 32, 116, 104, 101, 32, 104, 101, 97, 118, 101, 110, 115, 32, 97, 110, 100, 32, 116, 104, 101, 32, 101, 97, 114, 116, 104, 46, 10] ## Could be useful later links
[Tanach.us](https://tanach.us)
[AndBible's formats](https://github.com/AndBible/and-bible/wiki/Supported-3rd-party-module-formats)
[??, [, 1, m, [, E, n,,,]

View File

@ -1,4 +1,5 @@
use inline_colorization::*; use inline_colorization::*;
use regex::Regex;
use std::fmt::Display; use std::fmt::Display;
use serde::Deserialize; use serde::Deserialize;
@ -74,11 +75,24 @@ pub const BOOKS_IN_ORDER: [&str; 66] = [
pub fn search_for_word(word: &str, from_files: &Bible) -> Vec<String> { pub fn search_for_word(word: &str, from_files: &Bible) -> Vec<String> {
let mut found = Vec::new(); let mut found = Vec::new();
let regex = match Regex::new(&word.to_lowercase()) {
Ok(re) => re,
Err(err) => {
eprintln!("{}", err);
#[cfg(debug_assertions)]
todo!("IDK what to do yet if building regex engine fails");
#[cfg(not(debug_assertions))]
return Vec::new()
},
};
for test in &from_files.testaments { for test in &from_files.testaments {
for book in &test.books { for book in &test.books {
for chapter in &book.chapters { for chapter in &book.chapters {
for verse in &chapter.verses { for verse in &chapter.verses {
if verse.text.to_lowercase().contains(&word.to_lowercase()) { if regex.is_match(&verse.text.to_lowercase()) {
found.push(format!("{} {}:{}", BOOKS_IN_ORDER[book.number-1], chapter.number, verse.number)); found.push(format!("{} {}:{}", BOOKS_IN_ORDER[book.number-1], chapter.number, verse.number));
} }
} }