aboutsummaryrefslogtreecommitdiff
path: root/src/modules/blog/module.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-12 05:56:09 -0800
committerFuwn <[email protected]>2026-01-12 05:56:09 -0800
commitcb6df8c2749d8d3b88342398f3e5c13457206a2f (patch)
treea56230a03f370f6b263db469d5e74e5786e3a7cb /src/modules/blog/module.rs
parentfeat(directory): Sort routes by hits (diff)
downloadlocus-cb6df8c2749d8d3b88342398f3e5c13457206a2f.tar.xz
locus-cb6df8c2749d8d3b88342398f3e5c13457206a2f.zip
fix: Various optimisations
Diffstat (limited to 'src/modules/blog/module.rs')
-rw-r--r--src/modules/blog/module.rs104
1 files changed, 51 insertions, 53 deletions
diff --git a/src/modules/blog/module.rs b/src/modules/blog/module.rs
index f68c2bc..8ffff90 100644
--- a/src/modules/blog/module.rs
+++ b/src/modules/blog/module.rs
@@ -34,23 +34,31 @@ pub fn module(router: &mut windmark::router::Router) {
fs::File::open(&file).unwrap().read_to_string(&mut contents).unwrap();
- entries.insert(
- file.replace(&blog, "").replace(".gmi", "").replace(
- {
- #[cfg(windows)]
- {
- '\\'
- }
+ let mut entry_key =
+ file.strip_prefix(&blog).unwrap_or(&file).to_string();
+
+ if std::path::Path::new(&entry_key)
+ .extension()
+ .map_or(false, |extension| extension.eq_ignore_ascii_case("gmi"))
+ {
+ entry_key.truncate(entry_key.len() - 4);
+ }
- #[cfg(unix)]
- {
- '/'
- }
- },
- "",
- ),
- contents,
- );
+ if entry_key.starts_with({
+ #[cfg(windows)]
+ {
+ '\\'
+ }
+
+ #[cfg(unix)]
+ {
+ '/'
+ }
+ }) {
+ entry_key.remove(0);
+ }
+
+ entries.insert(entry_key, contents);
},
);
@@ -111,31 +119,26 @@ pub fn module(router: &mut windmark::router::Router) {
blog_clone.len(),
blog_clone
.iter()
- .map(|(title, _, entries)| (title.clone(), entries.clone()))
- .collect::<Vec<(_, _)>>()
- .into_iter()
- .map(|(title, entries)| {
+ .map(|(title, _, entries)| {
let config: Option<Blog> = entries
.get("blog.json")
.and_then(|content| Blog::from_string(content).ok());
let name = config
- .clone()
- .unwrap_or_default()
- .name()
- .clone()
+ .as_ref()
+ .and_then(|c| c.name().as_ref())
+ .cloned()
.unwrap_or_else(|| title.clone());
- let description = config.unwrap_or_default().description().clone();
- // .unwrap_or_else(|| "One of Fuwn's blogs".to_string());
+ let description =
+ config.as_ref().and_then(|c| c.description().as_ref()).cloned();
format!(
"=> {} {}{}",
format_args!("/blog/{}", name.replace(' ', "_").to_lowercase(),),
name,
- if description.is_some() {
- format!(" ― {}", description.unwrap())
- } else {
- String::new()
- }
+ description
+ .map_or_else(String::new, |description_reference| format!(
+ " ― {description_reference}"
+ ))
)
})
.collect::<Vec<_>>()
@@ -154,21 +157,20 @@ pub fn module(router: &mut windmark::router::Router) {
.and_then(|(_, content)| Blog::from_string(&content).ok());
let entries_clone = entries.clone();
let name = config
- .clone()
- .unwrap_or_default()
- .name()
- .clone()
+ .as_ref()
+ .and_then(|c| c.name().as_ref())
+ .cloned()
.unwrap_or_else(|| blog.clone());
- let description = config.clone().unwrap_or_default().description().clone();
- // .unwrap_or_else(|| "One of Fuwn's blogs".to_string());
+ let description =
+ config.as_ref().and_then(|c| c.description().as_ref()).cloned();
let config_clone = config.clone();
let mut xml = XmlWriter::builder();
xml.add_field("title", &name);
xml.add_field("link", &format!("{ROOT_GEMINI_URL}/blog/{fixed_blog_name}"));
- if description.is_some() {
- xml.add_field("description", &description.clone().unwrap());
+ if let Some(ref description_reference) = description {
+ xml.add_field("description", description_reference);
}
xml.add_field("generator", "locus");
@@ -180,11 +182,11 @@ pub fn module(router: &mut windmark::router::Router) {
&format!("/blog/{fixed_blog_name}"),
&format!(
"{name}{}",
- if description.clone().is_some() {
- format!(" ― {}", description.clone().unwrap())
- } else {
- String::new()
- }
+ description
+ .as_ref()
+ .map_or_else(String::new, |description_reference| format!(
+ " ― {description_reference}"
+ ))
),
move |context| {
let fixed_blog_name = fixed_blog_name_clone.clone();
@@ -195,19 +197,15 @@ pub fn module(router: &mut windmark::router::Router) {
{0}'s RSS feed\n\n=> {} here!",
blog,
entries_clone.len(),
- description.clone().unwrap_or_default(),
+ description.as_deref().unwrap_or(""),
entries_clone
.keys()
- .map(Clone::clone)
- .collect::<Vec<_>>()
- .into_iter()
.map(|title| {
let postish = config_clone
- .clone()
- .unwrap_or_default()
- .posts()
- .clone()
- .and_then(|posts| posts.get(&title).cloned())
+ .as_ref()
+ .and_then(|c| c.posts().as_ref())
+ .and_then(|posts| posts.get(title))
+ .cloned()
.unwrap_or_default();
format!(