From 8e62a6a65f30b40a640383975d1df6595ac517e3 Mon Sep 17 00:00:00 2001 From: David Viramontes Date: Fri, 29 Dec 2017 02:20:19 -0700 Subject: [PATCH] fix: dispatch from python.cljs --- src/klipse/klipse_editors.cljs | 20 ++++++++++++++++---- src/klipse/lang/python.cljs | 12 +++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/klipse/klipse_editors.cljs b/src/klipse/klipse_editors.cljs index 665653bc..d03bb377 100644 --- a/src/klipse/klipse_editors.cljs +++ b/src/klipse/klipse_editors.cljs @@ -1,7 +1,7 @@ (ns klipse.klipse-editors (:require-macros [gadjett.core :refer [dbg]] - [purnam.core :refer [!]] + [purnam.core :refer [! !>]] [cljs.core.async.macros :refer [go go-loop]]) (:require [goog.dom :as gdom] @@ -51,7 +51,14 @@ (swap! state update-in [:eval-counter] inc) (let [evaluation-chan (eval-fn (str preamble src-code) @state) first-result (js {:detail {:state first-result}})] + (!> klipse-dom-node.dispatchEvent + (js/CustomEvent. "klipse-snippet-evaled" event-payload))))) (when loop-msec (go-loop [] (let [[cmd c] (alts! [cmd-chan (timeout loop-msec)])] @@ -65,7 +72,12 @@ (let [result (js {:detail {:state result}})] + (!> klipse-dom-node.dispatchEvent + (js/CustomEvent. "klipse-snippet-evaled" event-payload))))) (recur results)))))) (catch :default e (setter e)))))) @@ -102,7 +114,7 @@ (s/def ::codemirror-options map?) (s/def ::editor-mode string?) -(s/fdef editor-options +(s/fdef editor-options :args (s/cat :in-mode ::editor-mode :out-mode ::editor-mode :options-in ::codemirror-options diff --git a/src/klipse/lang/python.cljs b/src/klipse/lang/python.cljs index 744cf9e2..2bd88069 100644 --- a/src/klipse/lang/python.cljs +++ b/src/klipse/lang/python.cljs @@ -22,17 +22,19 @@ (init) (let [c (chan)] (!> js/Sk.configure #js {:output #(put! c %) - :read builtin-read }) - (-> + :read builtin-read}) + (-> (!> js/Sk.misceval.asyncToPromise (fn [] - (put! c "Output:\n") + (put! c "Output\n") (! js/Sk.TurtleGraphics.target container-id) (!> js/Sk.importMainWithBody "" false exp true))) (.then (fn [mod] - (!> js/console.info "success to eval skulpt: ")) + (put! c [:ok mod]) + (!> js/console.info "success to eval skulpt")) (fn [err] - (put! c (str "error: " err))))) + (put! c (str "error: " err)) + (put! c [:err err])))) c)) (def opts {:editor-in-mode "python"