diff options
author | Chouser <chouser@n01se.net> | 2009-01-12 07:54:16 +0000 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-01-12 07:54:16 +0000 |
commit | 2b1e44f04489b5d70faff703bf824f07b74432d2 (patch) | |
tree | 2bc686386c956028744f7411a4404f59efca9115 /clojurescript/repl/repl.cljs | |
parent | 6e53cf73c313d2bf76f5ee3c9a847548665b32e2 (diff) |
Rearrange ClojureScript code for AOT compilation and its eventual place in clojure.contrib. Also fix major breaking errors for Clojure SVN 1205, but it's not well tested with this latest version.
Diffstat (limited to 'clojurescript/repl/repl.cljs')
-rw-r--r-- | clojurescript/repl/repl.cljs | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/clojurescript/repl/repl.cljs b/clojurescript/repl/repl.cljs deleted file mode 100644 index ce6eb450..00000000 --- a/clojurescript/repl/repl.cljs +++ /dev/null @@ -1,91 +0,0 @@ -(ns jsrepl) - -(def append-dom) - -(defn dom [o] - (if (coll? o) - (let [[tag attrs & body] o] - (if (keyword? tag) - (let [elem (.createElement document (name tag))] - (when (map? attrs) - (doseq [[k v] attrs] - (when v (.setAttribute elem (name k) v)))) - [(append-dom elem (if (map? attrs) body (cons attrs body)))]) - (mapcat dom o))) - (when o - [(.createTextNode document (str o))]))) - -(defn append-dom [parent v] - (doseq [i (dom v)] - (.appendChild parent i)) - parent) - -(def elems) -(def lastval) -(def *print-class* nil) - -(defn repl-print [text] - (let [log (:log elems)] - (doseq [line (.split text #"\n")] - (append-dom log - [:div {:class (str "cg " - (when *print-class* - (str " " *print-class*)))} - line])) - (set! (.scrollTop log) (.scrollHeight log)))) - -(defn postexpr [] - (append-dom (:log elems) - [:table - [:tbody - [:tr - [:td {:class "cg"} "user=> "] - [:td (-> :input elems .value (.replace #"\n$" ""))]]]]) - (set! (-> :scripts elems .innerHTML) "") - (set! (-> :input elems .value) "")) - -(defmacro print-with-class [c m] - `(binding [*print-class* ~c] - (println ~m))) - -(defn show-state [url] - (set! (-> :status elems .src) url)) - -(defn state [status msg] - (cond - (= status "incomplete") (show-state "dots.png") - (= status "done") (prn lastval) - (= status "error") (do - (postexpr) - (show-state "blank.gif") - (print-with-class "err" msg)) - (= status "compiled") (do - (postexpr) - (setTimeout #(show-state "blank.gif") 0)))) - -(defn err [e] - (print-with-class "err" e) - (set! *e e)) - -(set! *print-length* 103) - -(set! (.onload window) (fn [] - ; no refs yet, so just re-def - (set! elems (into {} (for [n '(log input status scripts)] - [(keyword n) (.getElementById document (str n))]))) - - (set! (.print window) repl-print) - - (set! (.onkeypress (:input elems)) - (fn [e] - (let [e (or e event)] - (when (== (.keyCode e) 13) - (set! (-> :status elems .src) "clojure-logo-anim-03.gif") - (append-dom (:scripts elems) - [:script {:src (str "http://clojurescript.n01se.net:8081/?" - (-> :input elems .value escape - (.replace #"\+" "%2b")))}]))))) - - (println "ClojureScript") - - (.focus (:input elems)))) |