diff options
author | Ben Bridle <ben@derelict.engineering> | 2025-01-15 15:54:27 +1300 |
---|---|---|
committer | Ben Bridle <ben@derelict.engineering> | 2025-01-15 16:22:59 +1300 |
commit | bc3e25f8c1edbd233ed0c266c574892e88644d9c (patch) | |
tree | 5da6e11aa9738b11a55190950e8bb335cc30ad7f /src/collect_files.rs | |
parent | 01cd799f688ad39cfb03ede3e149512d1c8faef6 (diff) | |
download | toaster-bc3e25f8c1edbd233ed0c266c574892e88644d9c.zip |
Implement image galleries
Each gallery image must be kept in the three directories images/large,
images/small, and images/thumb. A gallery is a fragment with the
language 'gallery' containing a list of image filenames, one per line.
Diffstat (limited to 'src/collect_files.rs')
-rw-r--r-- | src/collect_files.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/collect_files.rs b/src/collect_files.rs index b0e24ed..cf39ebe 100644 --- a/src/collect_files.rs +++ b/src/collect_files.rs @@ -121,6 +121,15 @@ impl Website { // Process each entry. if entry.is_directory() { if let Some(stripped) = entry.name.strip_prefix("!") { + // Track all files inside the static directory. + for child in traverse_directory(&entry).unwrap() { + let source_path = child.original_path; + let relative_path = source_path.strip_prefix(&entry.original_path).unwrap_or_else( + |_| error!("Path doesn't start with {prefix:?}: {source_path:?}")) + .as_os_str().to_string_lossy().to_string(); + let full_url = format!("{stripped}/{relative_path}"); + self.static_files.push(StaticItem { full_url, source_path }) + } let full_url = make_url_safe(stripped); self.static_dirs.push(StaticItem { full_url, source_path }); } else { @@ -299,6 +308,11 @@ impl Website { return None; } + pub fn has_image(&self, file_name: &str) -> bool { + let image_path = format!("images/thumb/{file_name}"); + self.static_files.iter().any(|s| s.full_url == image_path) + } + pub fn get_config(&self, key: &str) -> String { self.config.get(key).map(String::to_owned).unwrap_or_else(String::new) } |