Skip to content

Instantly share code, notes, and snippets.

@bendlas
Created May 12, 2014 15:58
Show Gist options
  • Save bendlas/7fb29934ca779692b4e4 to your computer and use it in GitHub Desktop.
Save bendlas/7fb29934ca779692b4e4 to your computer and use it in GitHub Desktop.
(ns dev
(:require
cemerick.austin cemerick.austin.repls webnf.server
[net.cgrand.enlive-html :refer [deftemplate content set-attr]]
[net.cgrand.moustache :refer [app]]
[ring.util.response :refer [not-found]]
[ring.middleware.file :refer [wrap-file]]))
(def repl-env)
(defn init-cljs-repl []
(->> (reset! cemerick.austin.repls/browser-repl-env
(cemerick.austin/repl-env :static-dir ["www/loesen/" "./" "out/"]
:src "src/cljs"
:optimizations :whitespace
:pretty-print true))
constantly
(alter-var-root #'repl-env))
;; return nil to avoid printing and OOM
nil)
(defn cljs-repl
"Turn your Clojure REPL into a ClojureScript REPL tied to that REPL environment"
[]
(cemerick.austin.repls/cljs-repl repl-env))
(deftemplate dev-page "dev.html"
[]
[:#repl-script] (content
(#'cemerick.austin/repl-client-js (:session-id repl-env))
(format "document.addEventListener('DOMContentLoaded', function() {clojure.browser.repl.connect.call(null, '%s');});"
(:repl-url repl-env))))
(def handler
(app
[] (fn [_]
{:headers {"content-type" "text/html"}
:body (dev-page)})
[&] [(wrap-file "www/loesen")
(wrap-file ".")
[&] not-found]))
(def server)
(defn main []
(def server
(-> (webnf.server/server {:port 6030})
(webnf.server/add-vhost!
:main ["localhost"] (webnf.server/make-ring-handler #'handler))
webnf.server/start!)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment