sci.cljs 851 B

1234567891011121314151617181920212223242526272829303132333435
  1. (ns frontend.extensions.sci
  2. (:require [sci.core :as sci]
  3. [frontend.util :as util]))
  4. ;; Some helpers
  5. (def sum (partial apply +))
  6. (defn average [coll]
  7. (/ (reduce + coll) (count coll)))
  8. (defn eval-string
  9. [s]
  10. (try
  11. (sci/eval-string s {:bindings {'sum sum
  12. 'average average
  13. 'parseFloat js/parseFloat
  14. 'isNaN js/isNaN
  15. 'log js/console.log
  16. 'pprint util/pp-str}})
  17. (catch js/Error e
  18. (println "Query: sci eval failed:")
  19. (js/console.error e))))
  20. (defn call-fn
  21. [f & args]
  22. (apply f args))
  23. (defn eval-result
  24. [code]
  25. [:div
  26. [:code "Results:"]
  27. [:div.results.mt-1
  28. [:pre.code
  29. (let [result (eval-string code)]
  30. (str result))]]])