federkasten / rhythm

[Obsolete Project] A ClojureScript library handling states and actions for event-driven programming

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rhythm

A ClojureScript library handling states and actions for event-driven programming

Usage

Add the following dependency to your project.clj:

[rhythm "0.1.1-SNAPSHOT"]

Setup actor

(let [example-actor (actor "loading-example" {:state [:waiting]})]
    (-> example-actor
        (add-action :load
                    (fn [f]
                      (switch-state! a :waiting :loading)
                      ;; some heavy processing
                      (js/setTimeout (fn [e] (switch-state! :loading :done)) 10000)))
        (add-state [:done :error]
                   {:in (fn []
                          (js/setTimeout #(switch-state! a :done :waiting) 100))
                    :out (fn []
                          (.log js/console "Reset actor to waiting"))})))

Watch state

To add watcher

(watch-state! example-actor :done
    {:in (fn [key]
             (.log js/console "Done!")
     :out (fn [key]
              (.log js/console "Next!"))

To remove watcher

(unwatch-state! example-actor :done)

Trigger action

(trigger-action! example-actor :load)

License

Copyright 2014 Takashi AOKI

Licensed under the Apache License, Version 2.0.

About

[Obsolete Project] A ClojureScript library handling states and actions for event-driven programming

License:Apache License 2.0


Languages

Language:Clojure 100.0%