Skip to content

Instantly share code, notes, and snippets.

View maravillas's full-sized avatar

Matthew Maravillas maravillas

  • Eleos Technologies
  • Raleigh, NC
View GitHub Profile
(defn selector
"Creates a selection process on list-el, a HTML list element.
Parameters
in:
a channel that should produce a number for the item to
highlight, :out to remove all highlighting, and :select to
signal user selection.
list-el:
a HTML list element.
(defn event-chan
([type] (event-chan js/window type))
([el type] (event-chan (chan (sliding-buffer 1)) el type))
([c el type]
(.addEventListener el type #(put! c %))
c))
(defn jsonp-chan
([uri] (jsonp-chan (chan) uri))
([c uri]
(defn put-all! [cs x]
(doseq [c cs]
(put! c x)))
(defn multiplex [in cs-or-n]
(let [cs (if (number? cs-or-n)
(repeatedly cs-or-n chan)
cs-or-n)]
(go (loop []
(let [x (<! in)]
@Chouser
Chouser / externs_for_cljs.clj
Created June 17, 2013 13:44
Generate an externs.js file for arbitrary JS libraries for use in advanced Google Closure compilation, based on the ClojureScript code that uses the libraries.
(ns n01se.externs-for-cljs
(:require [clojure.java.io :as io]
[cljs.compiler :as comp]
[cljs.analyzer :as ana]))
(defn read-file [file]
(let [eof (Object.)]
(with-open [stream (clojure.lang.LineNumberingPushbackReader. (io/reader file))]
(vec (take-while #(not= % eof)
(repeatedly #(read stream false eof)))))))
@maravillas
maravillas / interceptor.coffee
Created October 22, 2011 18:52
Trace method calls in console
interceptor = (klass) ->
for own key, value of klass
f = (k, v) ->
if typeof value == "function"
klass[k] = ->
console.log "Called #{k} from #{arguments.callee.caller.toString()}", arguments
v.apply(this, arguments)
f key, value
// interceptor(Foo.prototype)
(ns dining-service
(:use aleph.core)
(:use aleph.http)
(:use net.cgrand.moustache)
)
(defn report-handler [response-channel request]
(enqueue response-channel
{:status 200
:headers {"content-type" "text/plain"}