materiala.extensions.re-frame¶
Example of extension not perfect parsing of re-frame forms
(ns
)
(ns materiala.extensions.re-frame
(:require
[materiala.markdown :as mm :refer (render-code-form code-block code-inline)]))
:rf/reg-event-fx
¶
(derive
)
(derive :rf/reg-event-fx ::register)
(derive :rf/reg-sub ::register)
render-code-form :user/register¶
(render-code-form {:keys [raw forms]})
(defmethod
)
(defmethod render-code-form ::register
[{:keys [raw forms]}]
(str "## " (code-inline (name (first forms)))": "
(code-inline (second forms))
"\n\n"
(if (symbol? (nth forms 2))
(str "Dispatch-fn: " (code-inline (nth forms 2)))
;; here we could have a better rendering by leveraing the code as data
;; by showing how it the event can be called
(code-block raw 0))
"\n\n"))
render-code-form :reg-sub¶
no shortcut here, have to do it
(render-code-form m)
(defmethod
)
(defmethod render-code-form :reg-sub
[m]
(render-code-form (assoc m :verb ::register)))
render-code-form :reg-event-fx¶
(render-code-form m)
(defmethod
)
(defmethod render-code-form :reg-event-fx
[m]
(render-code-form (assoc m :verb ::register)))
Rich Comment¶
(comment
(let [raw "(reg-sub
::all ;; not really good engineering
dispatch-all-fn)"]
(-> (mm/raw->forms raw)
(assoc :type :code :raw raw)
mm/render-form)))