A ClojureScript wrapper for RxJS
Clojure JavaScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
resources/private
runners
src-cljs/rx_cljs
test-cljs/rx_cljs
.gitignore Switched testing frameworks to bodil/error due to async tests. Also h… May 21, 2013
README.md
project.clj

README.md

rx-cljs

A ClojureScript wrapper for Reactive Extensions (Rx) for Javascript.

Motivation

The aim of this wrapper is to let developers write this:

(defn project-range [n]
    (return-value (range n)))
    
(-> (from-array [4 6 8])
    (select-many project-range)
    (subscribe #(.log js/console (clj->js %))))

Instead of:

(defn project-range [n]
  (.returnValue js/Rx.Observable (range n)))

(-> (.fromArray js/Rx.Observable
                (clj->js [1 2 3]))
    (.selectMany project-range)
    (.subscribe #(.log js/console (clj->js %))))

Usage

Be warned: it's very early days and this wrapper is still very much incomplete.

For the brave amongst you, add this to your project.clj:

[com.leonardoborges/rx-cljs "0.0.2-SNAPSHOT"]

Or if you're using maven:

<dependency>
  <groupId>com.leonardoborges</groupId>
  <artifactId>rx-cljs</artifactId>
  <version>0.0.2-SNAPSHOT</version>
</dependency>

For a sample app that uses this wrapper, check out this repository.

What's in the package

Creating observables

  • create
  • return-value
  • from-array
  • interval

Working with Observables

  • take
  • map
  • reduce
  • skip
  • zip
  • select-many
  • subscribe
  • start-with
  • buffer-with-count

Working with Connectable observables

  • publish
  • connect
  • ref-count

Working with Observers

  • on-next
  • on-completed

Working with Subscriptions

  • dispose

Running the tests

From the project root:

$ lein cljsbuild test

TODO

Everything else. (but mainly other arities of functions already in here.)

Contributing

Bug reports and pull requests are much welcome. If submitting code, please add a test to it.

License

Copyright (C) 2013 Leonardo Borges

Distributed under the Eclipse Public License, the same as Clojure.