Skip to content

Instantly share code, notes, and snippets.

@kurogelee
Created June 10, 2014 11:35
Show Gist options
  • Save kurogelee/5c69b5dfa2f219dcc79b to your computer and use it in GitHub Desktop.
Save kurogelee/5c69b5dfa2f219dcc79b to your computer and use it in GitHub Desktop.
"<div>:sample</div>"
"<div style=\"color:red; margin: 5px\"></div>"
"<div style=\"color:red; margin: 5px\">123</div>"
"<button><div id=\"abc\"><span class=\"def\">987</span></div></button>"
(defmacro defui [sym params hiccup & events]
`(defn ~sym ~params
(let [e# (crate.core/html ~hiccup)]
(doseq [[ev# func#] (partition 2 ~(vec events))]
(lt.util.dom/on e# ev# func#))
e#)))
(defn ->ev [ev]
(str (name ev)))
(defn on [elem ev cb]
(.addEventListener elem (->ev ev) cb))
(ns sample.core
(:require [lt.util.dom :as dom])
(:require-macros [lt.macros :refer [behavior defui]]))
(defui create-div [text]
[:div [:div text]])
(.-innerHTML (create-div :sample))
(defui create-div2 [& [value]]
[:div [:div {:style "color:red; margin: 5px"} value]])
(.-innerHTML (create-div2))
(.-innerHTML (create-div2 123))
(defui create-div3 []
[:button [:div#abc [:span.def 987]]]
:click (fn [event] (println event)))
(.-outerHTML (create-div3))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment