Skip to content

Instantly share code, notes, and snippets.

@piecyk
Created October 13, 2015 12:42
Show Gist options
  • Select an option

  • Save piecyk/fe6395b07b46c0546f60 to your computer and use it in GitHub Desktop.

Select an option

Save piecyk/fe6395b07b46c0546f60 to your computer and use it in GitHub Desktop.
(ns cljsplayground.core
(:require [reagent.core :as reagent :refer [atom]]
[goog.dom :as dom]
[goog.events :as events]
[cljs.tools.reader :as r]
[cljs.analyzer :as ana]
[cljs.compiler :as c]
[cljs.core.async :refer [put! chan <! >! timeout close!]]
[cljsplayground.console :as console])
(:require-macros [cljs.core.async.macros :refer [go go-loop]]))
(enable-console-print!)
(def jqconsole (reagent/atom nil))
(defn eval [str]
(.eval js/window str))
(defn jqconsole-handler [str]
(try
(.Write @jqconsole (clojure.string/join "" ["==> " (eval str) "\n"]))
(catch js/Error err
(.Write @jqconsole (clojure.string/join "" [err "\n"]))
))
(.Prompt @jqconsole true jqconsole-handler (fn [str] (.log js/console str) false)))
(defn jqconsole-render []
[:div {:class-name "console-wrapper"}])
(defn jqconsole-did-mount [this]
(let [jquery (js* "$")
node (reagent/dom-node this)]
(do (reset! jqconsole (-> (jquery node)
(.jqconsole "Welcome to JQConsole!\n" "JS> ")))
(jqconsole-handler nil))))
(defn jqconsole-component []
(reagent/create-class {:reagent-render jqconsole-render
:component-did-mount jqconsole-did-mount}))
(defn repl-page []
[:div [:h2 "Welcome to cljsplayground"]
[:div [jqconsole-component]]])
(defn mount-root []
(reagent/render [repl-page] (.getElementById js/document "app")))
(defn init! []
(mount-root))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment