From 2dc13ab34f2b0bd85244cc6d171418951b8f2e56 Mon Sep 17 00:00:00 2001 From: giles Date: Thu, 12 Mar 2026 00:26:04 +0000 Subject: [PATCH] Add separate defpage for spec explorer route The route param doesn't match slashes, so /language/specs/explore/ needs its own defpage instead of being handled inside specs-page. Co-Authored-By: Claude Opus 4.6 --- sx/sxc/pages/docs.sx | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/sx/sxc/pages/docs.sx b/sx/sxc/pages/docs.sx index 1b44b28..6cc0d11 100644 --- a/sx/sxc/pages/docs.sx +++ b/sx/sxc/pages/docs.sx @@ -349,20 +349,7 @@ "extensions" (~spec-overview-content :spec-title "Extensions" :spec-files (make-spec-files extension-spec-items)) - :else (cond - (starts-with? slug "explore/") - (let ((spec-slug (slice slug 8 (string-length slug))) - (spec (find-spec spec-slug))) - (if spec - (let ((data (spec-explorer-data - (get spec "filename") - (get spec "title") - (get spec "desc")))) - (if data - (~spec-explorer-content :data data) - (~spec-not-found :slug spec-slug))) - (~spec-not-found :slug spec-slug))) - :else (let ((spec (find-spec slug))) + :else (let ((spec (find-spec slug))) (if spec (~spec-detail-content :spec-title (get spec "title") @@ -372,6 +359,26 @@ :spec-prose (get spec "prose")) (~spec-not-found :slug slug)))))))) +;; --------------------------------------------------------------------------- +;; Spec Explorer — structured interactive view of spec files +;; --------------------------------------------------------------------------- + +(defpage specs-explore-page + :path "/language/specs/explore/" + :auth :public + :layout :sx-docs + :content (~sx-doc :path (str "/language/specs/explore/" slug) + (let ((spec (find-spec slug))) + (if spec + (let ((data (spec-explorer-data + (get spec "filename") + (get spec "title") + (get spec "desc")))) + (if data + (~spec-explorer-content :data data) + (~spec-not-found :slug slug))) + (~spec-not-found :slug slug))))) + ;; --------------------------------------------------------------------------- ;; Bootstrappers section ;; ---------------------------------------------------------------------------