├── .gitignore ├── index.html ├── README.md ├── src └── jsbin-cljs │ └── core.cljs └── project.clj /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /classes 3 | /checkouts 4 | pom.xml 5 | pom.xml.asc 6 | *.jar 7 | *.class 8 | /.lein-* 9 | /.nrepl-port 10 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ClojureScript for JS Bin 2 | 3 | ## Build 4 | 5 | `$ lein cljsbuild once release` 6 | 7 | ## Usage 8 | 9 | Use compiled js in `out/jsbin-cljs.js` 10 | 11 | ```javascript 12 | jsbin_cljs.core.eval( 13 | '(take 4 (range 0 10))', 14 | function (err, res) { 15 | if (err) { 16 | console.error(err); 17 | } else { 18 | console.log(res.toString()); 19 | } 20 | }); 21 | 22 | // (0 1 2 3) 23 | ``` 24 | -------------------------------------------------------------------------------- /src/jsbin-cljs/core.cljs: -------------------------------------------------------------------------------- 1 | (ns jsbin-cljs.core 2 | (:require [replumb.core :as replumb])) 3 | 4 | (defn ^:export eval [src-str callback] 5 | (replumb/read-eval-call {:verbose false 6 | :warning-as-error false 7 | :target :browser 8 | :context :statement} 9 | (fn [{:keys [success? error value]}] 10 | (if success? 11 | (callback nil value) 12 | (callback (.. error -cause)))) 13 | src-str)) 14 | -------------------------------------------------------------------------------- /project.clj: -------------------------------------------------------------------------------- 1 | (defproject jsbin-cljs "0.1.0-SNAPSHOT" 2 | :description "FIXME: write description" 3 | :url "http://example.com/FIXME" 4 | :license {:name "Eclipse Public License" 5 | :url "http://www.eclipse.org/legal/epl-v10.html"} 6 | :dependencies [[org.clojure/clojure "1.8.0"] 7 | [org.clojure/clojurescript "1.9.89"] 8 | [replumb "0.2.1"]] 9 | 10 | :plugins [[lein-cljsbuild "1.1.1"]] 11 | :hooks [leiningen.cljsbuild] 12 | 13 | :source-paths ["src" "target/classes"] 14 | 15 | :cljsbuild 16 | {:builds { 17 | :dev { 18 | :source-paths ["src/jsbin-cljs"] 19 | :compiler {:optimizations :none 20 | :main jsbin-cljs.core 21 | :source-maps true 22 | :verbose true 23 | :asset-path "target/cljsbuild-compiler-0" 24 | :output-to "out/jsbin-cljs.js"}} 25 | 26 | :release { 27 | :source-paths ["src/jsbin-cljs"] 28 | :compiler {:optimizations :simple 29 | :pretty-print false 30 | :static-fns true 31 | :optimize-constants true 32 | :verbose true 33 | :output-to "out/jsbin-cljs.js"}}}}) 34 | --------------------------------------------------------------------------------