cljs.repl.rhino/rhino-setup
function | removed v1.10.738 | added v0.0-927 | Edit |
(rhino-setup repl-env opts)
(defn rhino-setup [repl-env opts]
(let [scope (:scope repl-env)
env (ana/empty-env)
core (io/resource "cljs/core.cljs")
base-js (io/resource "goog/base.js")
core-js (closure/compile core
(assoc opts :output-file
(closure/src-file->target-file
core (dissoc opts :output-dir))))
deps (closure/add-dependencies opts core-js)
output-dir (util/output-directory opts)
repl-deps (io/file output-dir "rhino_repl_deps.js")]
(apply closure/output-unoptimized
(assoc opts :output-to (.getPath repl-deps)) deps)
(ScriptableObject/putProperty scope
"___repl_env" (Context/javaToJS repl-env scope))
(ScriptableObject/putProperty scope "__repl_opts"
(Context/javaToJS opts scope))
(ScriptableObject/putProperty scope
"out" (Context/javaToJS *out* scope))
(ScriptableObject/putProperty scope
"err" (Context/javaToJS *err* scope))
(rhino-eval repl-env "bootjs" 1 bootjs)
(rhino-eval repl-env "goog/base.js" 1 (io/reader base-js))
(rhino-eval repl-env "rhino_repl_deps.js" 1 (io/reader repl-deps))
(repl/evaluate-form repl-env env ""
'(do
(.require js/goog "cljs.core")
(set! *print-fn* (fn [x] (.write js/out x)))
(set! *print-err-fn* (fn [x] (.write js/err x)))))
(repl/evaluate-form repl-env env ""
'(set! js/goog.isProvided_ (fn [x] false)))
(repl/evaluate-form repl-env env ""
'(do
(set! *loaded-libs* #{"cljs.core"})
(set! (.-require js/goog)
(fn [name reload]
(when (or (not (contains? *loaded-libs* name)) reload)
(set! *loaded-libs* (conj (or *loaded-libs* #{}) name))
(js/CLOSURE_IMPORT_SCRIPT
(if (some? goog/debugLoader_)
(.getPathFromDeps_ goog/debugLoader_ name)
(goog.object/get (.. js/goog -dependencies_ -nameToPath) name))))))))
(rhino-eval repl-env "CLOSURE_UNCOMPILED_DEFINES" 1
(str "goog.global.CLOSURE_UNCOMPILED_DEFINES = "
(json/write-str (:closure-defines opts)) ";"))))