This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(run-components | |
(make-component "Comp1" | |
{:init (fn [v s] | |
(event :set-msg "Ho") | |
(event :print nil) | |
{:msg "Hi"}) | |
:print (fn [v s] | |
(println (:msg s))) | |
:set-msg (fn [v s] | |
{:msg v})}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defmacro program [& components] | |
`(run-components ~@components)) | |
(defmacro component [name & handlers] | |
`(make-component ~name (conj {} ~@handlers))) | |
(defmacro on [handler args & body] | |
{handler `(fn ~args ~@body)}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(program | |
; Define a component. | |
(component "Comp1" | |
; Event handler for :init events | |
(on :init [v s] | |
; Trigger some events | |
(event :print nil) | |
(event :set-msg "Ho") | |
(event :print nil) | |
; Set this components state |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Define a function to send events | |
(defn event [k v] nil) | |
; Define the data structure used to model a component | |
(defstruct component-s :name :handlers :state) | |
; Create a component by creating an instance of the data structure | |
(defn make-component [name handlers] | |
(struct component-s name handlers {})) | |
NewerOlder