From b8f61569dbede77a3642bb44f6d213df8f4a9e5e Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 27 May 2025 02:43:36 -0700 Subject: feat(directory): Sort routes by hits --- src/modules/directory.rs | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src/modules') diff --git a/src/modules/directory.rs b/src/modules/directory.rs index 9eddc31..4179175 100644 --- a/src/modules/directory.rs +++ b/src/modules/directory.rs @@ -1,3 +1,5 @@ +use crate::route::hits_from; + pub fn module(router: &mut windmark::router::Router) { crate::route::track_mount( router, @@ -8,11 +10,24 @@ pub fn module(router: &mut windmark::router::Router) { &format!( "# Directory\n\nA map of all publicly available routes on this \ Gemini capsule\n\n{}", - (*crate::route::ROUTES.lock().unwrap()) - .iter() - .map(|(r, d)| format!("=> {} {}", r, d.description)) - .collect::>() - .join("\n") + { + let mut lines = (*crate::route::ROUTES.lock().unwrap()) + .iter() + .map(|(r, d)| format!("=> {} {}", r, d.description)) + .collect::>(); + let standard_transform = |route: &str| { + route.replace("=> ", "").split(' ').collect::>()[0] + .to_string() + }; + + lines.sort_by(|a, b| { + hits_from(&standard_transform(a)) + .cmp(&hits_from(&standard_transform(b))) + }); + lines.reverse(); + + lines.join("\n") + } ), &context, ) -- cgit v1.2.3