Skip to content

Instantly share code, notes, and snippets.

@jhickner
Created April 13, 2012 07:36
Show Gist options
  • Save jhickner/2374900 to your computer and use it in GitHub Desktop.
Save jhickner/2374900 to your computer and use it in GitHub Desktop.
konami code rxjs example in clojurescript
(ns rxjs.client.core
(:use [jayq.core :only [$ on off document-ready]]
[jayq.util :only [log]]))
(defn on-as-observable [$elem events & [sel data]]
(js/Rx.Observable.create
(fn [observer]
(let [handler (fn [evt-object]
(.onNext observer evt-object))]
(on $elem events sel data handler)
(fn []
(off $elem sel handler))))))
(document-ready
(let [code (js/Rx.Observable.fromArray
(array 38, 38, 40, 40, 37, 39, 37, 39, 66, 65))]
(-> (on-as-observable ($ js/document) :keyup)
(.select #(.-keyCode %))
(.windowWithCount 10)
(.selectMany #(.sequenceEqual % code))
(.where #(identity %))
(.subscribe #(log "KONAMI!")))))
@jhickner
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment