diff options
Diffstat (limited to 'src')
| -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? |
