From be75cf498a795817c9e1c58d5fff494ce6b343cb Mon Sep 17 00:00:00 2001 From: Sabine Schmaltz Date: Tue, 21 Mar 2023 18:05:58 +0100 Subject: [PATCH 1/5] refactor package urls, routes, and handlers --- src/global/url.ml | 17 +- src/ocamlorg_frontend/components/navmap.eml | 2 +- .../components/package_breadcrumbs.eml | 8 +- src/ocamlorg_frontend/package.ml | 9 + .../pages/package_documentation.eml | 2 +- .../pages/package_documentation_not_found.eml | 2 +- .../pages/package_overview.eml | 47 ++- src/ocamlorg_frontend/pages/packages.eml | 2 +- .../pages/packages_autocomplete_fragment.eml | 4 +- .../pages/packages_search.eml | 2 +- src/ocamlorg_frontend/pages/releases.eml | 2 +- src/ocamlorg_web/lib/handler.ml | 269 ++++++++++-------- src/ocamlorg_web/lib/router.ml | 36 ++- 13 files changed, 226 insertions(+), 176 deletions(-) diff --git a/src/global/url.ml b/src/global/url.ml index 35f633af46..c4a26efa83 100644 --- a/src/global/url.ml +++ b/src/global/url.ml @@ -3,17 +3,20 @@ let packages = "/packages" let packages_search = "/packages/search" let packages_autocomplete_fragment = "/packages/autocomplete" let with_hash = Option.fold ~none:"/p" ~some:(( ^ ) "/u/") -let package ?hash v = with_hash hash ^ "/" ^ v -let package_docs v = "/p/" ^ v ^ "/doc" let with_version = Option.value ~default:"latest" -let with_page p = if p = "" then p else "/" ^ p +let with_page p = if p = "" then "" else "/" ^ p -let package_with_version ?version ?hash ?(page = "") v = - with_hash hash ^ "/" ^ v ^ "/" ^ with_version version ^ with_page page +let package_overview ?version ?hash name = + with_hash hash ^ "/" ^ name ^ "/" ^ with_version version -let package_doc ?hash ?version ?(page = "index.html") v = - with_hash hash ^ "/" ^ v ^ "/" ^ with_version version ^ "/doc/" ^ page +let package_file ?version ?hash ~filepath name = + with_hash hash ^ "/" ^ name ^ "/" ^ with_version version ^ "/" ^ filepath +let package_documentation ?hash ?version ?(page = "index.html") name = + with_hash hash ^ "/" ^ name ^ "/" ^ with_version version ^ "/doc/" ^ page + +let package_redirect ?hash name = with_hash hash ^ "/" ^ name +let package_docs_redirect name = "/p/" ^ name ^ "/doc" let community = "/community" let success_story v = "/success-stories/" ^ v let industrial_users = "/industrial-users" diff --git a/src/ocamlorg_frontend/components/navmap.eml b/src/ocamlorg_frontend/components/navmap.eml index 018a090c1f..488d1bfd26 100644 --- a/src/ocamlorg_frontend/components/navmap.eml +++ b/src/ocamlorg_frontend/components/navmap.eml @@ -108,7 +108,7 @@ let render <% (match maptoc with [] -> %> Package contains no libraries <% | _ -> %> - + package <%s package.name %>