aboutsummaryrefslogtreecommitdiff
path: root/lazybones-documentation.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lazybones-documentation.lisp')
-rw-r--r--lazybones-documentation.lisp18
1 files changed, 18 insertions, 0 deletions
diff --git a/lazybones-documentation.lisp b/lazybones-documentation.lisp
index 16164c5..b8e1c34 100644
--- a/lazybones-documentation.lisp
+++ b/lazybones-documentation.lisp
@@ -32,6 +32,14 @@
(princ (if content-type content-type default-content-type ))
(princ "*")
newline
+ (a:when-let (vars (endpoint-route-vars ep))
+ (princ "Route Variables: ") newline
+ (dolist (var vars)
+ (princ "- ") (princ var)
+ (a:when-let (val-parser (route-var-value-parser ep var))
+ (princ ": ") (princ (strip-newlines (documentation val-parser 'function)))))
+ newline)
+
(when authorizer
(princ "Authorization Required: ")
newline
@@ -51,6 +59,16 @@
> "
string)))
+(defun strip-newlines (string)
+ (str:replace-all '(#\newline) "" string))
+
(defun function-or-function-name-p (thing)
(or (functionp thing)
(and (symbolp thing) (fboundp thing))))
+
+(defun endpoint-route-vars (ep)
+ "return a list of route variables for endpoint EP"
+ (mapcar 'first (remove-if-not #'consp (endpoint-dispatch-pattern ep))))
+
+(defun route-var-value-parser (ep var)
+ (second (assoc var (remove-if-not #'consp (endpoint-dispatch-pattern ep)))))