Function: org-babel-execute:clojure

org-babel-execute:clojure is a byte-compiled function defined in ob-clojure.el.gz.

Signature

(org-babel-execute:clojure BODY PARAMS &optional CLJS-P)

Documentation

Execute the BODY block of Clojure code with PARAMS using Babel.

When CLJS-P is non-nil, execute with a ClojureScript backend instead of Clojure.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-clojure.el.gz
(defun org-babel-execute:clojure (body params &optional cljs-p)
  "Execute the BODY block of Clojure code with PARAMS using Babel.
When CLJS-P is non-nil, execute with a ClojureScript backend
instead of Clojure."
  (let* ((backend-override (cdr (assq :backend params)))
         (org-babel-clojure-backend
          (cond
           (backend-override (intern backend-override))
           (org-babel-clojure-backend (if cljs-p
                                          org-babel-clojurescript-backend
                                        org-babel-clojure-backend))
           (t (user-error "You need to customize `%S'
or set the `:backend' header argument"
                          (if cljs-p
                              org-babel-clojurescript-backend
                            org-babel-clojure-backend)))))
         ;; We allow a Clojure source block to be evaluated with the
         ;; nbb backend and therefore have to expand the body with
         ;; ClojureScript syntax when we either evaluate a
         ;; ClojureScript source block or use the nbb backend.
         (cljs-p (or cljs-p (eq org-babel-clojure-backend 'nbb))))
    (let* ((expanded (org-babel-expand-body:clojure body params cljs-p))
	   (result-params (cdr (assq :result-params params)))
	   result)
      (setq result
	    (cond
	     ((eq org-babel-clojure-backend 'inf-clojure)
	      (ob-clojure-eval-with-inf-clojure expanded params))
             ((eq org-babel-clojure-backend 'clojure-cli)
              (ob-clojure-eval-with-cmd ob-clojure-cli-command expanded))
             ((eq org-babel-clojure-backend 'babashka)
	      (ob-clojure-eval-with-cmd ob-clojure-babashka-command expanded))
             ((eq org-babel-clojure-backend 'nbb)
	      (ob-clojure-eval-with-cmd ob-clojure-nbb-command expanded))
	     ((eq org-babel-clojure-backend 'cider)
	      (ob-clojure-eval-with-cider expanded params cljs-p))
	     ((eq org-babel-clojure-backend 'slime)
	      (ob-clojure-eval-with-slime expanded params))
             (t (user-error "Invalid backend"))))
      (org-babel-result-cond result-params
        result
        (condition-case nil (org-babel-script-escape result)
	  (error result))))))