reworked code and added ability to build slides

This commit is contained in:
2023-01-24 14:12:37 +01:00
parent f76521f6cf
commit f13d24bee0
13 changed files with 187 additions and 84 deletions

74
src/app/fs_util/mod.rs Normal file
View File

@@ -0,0 +1,74 @@
use std::fs;
struct RecursivePathFetch {
paths: Vec<String>,
ends_with: String,
path: String
}
impl RecursivePathFetch {
pub fn new_with_extension_filter(path: String, ends_with: String) -> Self {
return Self {
paths: vec![],
ends_with,
path
}
}
pub fn new(path: String) -> Self {
return Self {
paths: vec![],
ends_with: "".to_string(),
path
}
}
pub fn fetch(&mut self) -> Result<Vec<String>, String> {
if let Err(error) = self.read_dir(self.path.clone()) {
return Err(error);
} else {
return Ok(self.paths.clone());
}
}
fn read_dir(&mut self, path: String) -> Result<(), String> {
let Ok(entries) = fs::read_dir(path) else {
return self.dir_not_found();
};
for result in entries {
let entry = result.unwrap();
let path = entry.path();
let str_path = path.to_str().unwrap();
if path.is_file() {
if str_path.ends_with(&self.ends_with) {
self.paths.push(str_path.to_string())
}
} else if path.is_dir() {
let read_result = self.read_dir(str_path.to_string());
if read_result.is_err() {
return read_result;
}
}
}
return Ok(())
}
fn dir_not_found(&self) -> Result<(), String> {
return Err(format!(
"directory {} was not found or was changed while building",
self.path
))
}
}
pub fn fetch_paths_recursive(path: &str, ends_with: &str) -> Result<Vec<String>, String> {
let mut path_fetch = RecursivePathFetch::new_with_extension_filter(
path.to_string(),
ends_with.to_string()
);
return path_fetch.fetch();
}