Add docstrings

This commit is contained in:
Marcus Kammer 2024-07-27 08:34:40 +02:00
parent dce0d180a3
commit 5de43ac921
Signed by: marcuskammer
GPG key ID: C374817BE285268F

View file

@ -143,6 +143,17 @@ button of the corresponding type, size, and outline style."
(define-btns (primary secondary success danger warning info light dark link)) (define-btns (primary secondary success danger warning info light dark link))
(defmacro with-btn-group ((&key (color "primary")) &rest buttons) (defmacro with-btn-group ((&key (color "primary")) &rest buttons)
"Generate HTML for a group of Bootstrap buttons.
COLOR: A string specifying the Bootstrap color class (default: \"primary\").
BUTTONS: A series of alternating label and URL pairs for each button.
Example:
(with-btn-group (:color \"success\")
\"Start\" \"/start\"
\"Stop\" \"/stop\")
Returns HTML for a flexbox div containing styled anchor tags as buttons."
`(spinneret:with-html `(spinneret:with-html
(:div :class "d-flex justify-content-between" (:div :class "d-flex justify-content-between"
,@(loop for (label url) on buttons by #'cddr ,@(loop for (label url) on buttons by #'cddr
@ -151,16 +162,32 @@ button of the corresponding type, size, and outline style."
,label))))) ,label)))))
(defmacro define-btn-group (style) (defmacro define-btn-group (style)
"Define a new macro for creating a button group with a specific style.
STYLE: A string specifying the Bootstrap button style (e.g., \"primary\", \"danger\").
Creates a new macro named WITH-BTN-GROUP-<STYLE> (upcased) that generates
a button group with the specified style.
Example:
(define-btn-group \"success\") ; Creates a macro named WITH-BTN-GROUP-SUCCESS"
(let ((macro-name (intern (string-upcase (format nil "WITH-BTN-GROUP-~A" style))))) (let ((macro-name (intern (string-upcase (format nil "WITH-BTN-GROUP-~A" style)))))
`(defmacro ,macro-name (&rest buttons) `(defmacro ,macro-name (&rest buttons)
`(with-btn-group (:color ,,style) ,@buttons)))) `(with-btn-group (:color ,,style) ,@buttons))))
(define-btn-group primary) (defmacro define-btn-groups (colors)
(define-btn-group secondary) "Define multiple button group macros at once.
(define-btn-group success)
(define-btn-group danger) COLORS: A list of symbols representing Bootstrap color classes.
(define-btn-group warning)
(define-btn-group info) For each color in COLORS, creates a new macro using DEFINE-BTN-GROUP.
(define-btn-group light)
(define-btn-group dark) Example:
(define-btn-group link) (define-btn-groups (primary secondary success))
; Creates macros WITH-BTN-GROUP-PRIMARY, WITH-BTN-GROUP-SECONDARY, WITH-BTN-GROUP-SUCCESS"
`(progn
,@(loop for color in colors
for color-name = (string-downcase (string color))
collect `(define-btn-group ,color-name))))
(define-btn-group (primary secondary success danger warning info light dark link))