diff options
| author | Asko Nõmm <asko@nmm.ee> | 2026-02-10 23:53:56 +0000 |
|---|---|---|
| committer | Asko Nõmm <asko@nmm.ee> | 2026-02-10 23:53:56 +0000 |
| commit | 92e81516d217586e961228a0380fc8bfae3ea378 (patch) | |
| tree | c1a1d97710f896d519ed5679353c4955251604a5 /src/dompa/nodes.cljc | |
| parent | d23410f547608deae53ed8e028b46f8572552ef3 (diff) | |
| parent | ba9005587b045d417b460f59145032f569c95cba (diff) | |
Merge pull request 'Allow docstrings in `defhtml` (closes #2)' (#5) from allow-docstrings-in-defhtml into main
Reviewed-on: https://git.nmm.ee/asko/dompa/pulls/5
Diffstat (limited to 'src/dompa/nodes.cljc')
| -rw-r--r-- | src/dompa/nodes.cljc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/dompa/nodes.cljc b/src/dompa/nodes.cljc index 58ff045..7e8f769 100644 --- a/src/dompa/nodes.cljc +++ b/src/dompa/nodes.cljc @@ -95,10 +95,14 @@ (defmacro defhtml "Creates a new function with `name` that outputs HTML. + Optionally accepts a docstring between the name and the argument vector. + Example usage: ```clojure - (defhtml about-page [who] + (defhtml about-page + \"Renders the about page for the given person.\" + [who] ($ :div ($ \"hello \" who))) @@ -106,8 +110,11 @@ ``` " [name & args-and-elements] - (let [[args & elements] args-and-elements] - `(defn ~name ~args + (let [[maybe-doc & rest] args-and-elements + [docstring args elements] (if (string? maybe-doc) + [maybe-doc (first rest) (next rest)] + [nil maybe-doc rest])] + `(defn ~name ~@(when docstring [docstring]) ~args (->html (vector ~@elements))))) (defn- list-of-one? |
