Function: org-babel-execute:js

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

Signature

(org-babel-execute:js BODY PARAMS)

Documentation

Execute a block of Javascript code with org-babel.

This function is called by org-babel-execute-src-block.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-js.el.gz
(defun org-babel-execute:js (body params)
  "Execute a block of Javascript code with org-babel.
This function is called by `org-babel-execute-src-block'."
  (let* ((org-babel-js-cmd (or (cdr (assq :cmd params)) org-babel-js-cmd))
	 (session (cdr (assq :session params)))
         (result-type (cdr (assq :result-type params)))
         (full-body (org-babel-expand-body:generic
		     body params (org-babel-variable-assignments:js params)))
	 (result (cond
		  ;; no session specified, external evaluation
		  ((string= session "none")
		   (let ((script-file (org-babel-temp-file "js-script-")))
		     (with-temp-file script-file
		       (insert
			;; return the value or the output
			(if (string= result-type "value")
			    (format org-babel-js-function-wrapper full-body)
			  full-body)))
		     (org-babel-eval
		      (format "%s %s" org-babel-js-cmd
			      (org-babel-process-file-name script-file)) "")))
		  ;; Indium Node REPL.  Separate case because Indium
		  ;; REPL is not inherited from Comint mode.
		  ((string= session "*JS REPL*")
		   (require 'indium-repl)
		   (unless (get-buffer session)
		     (indium-run-node org-babel-js-cmd))
		   (indium-eval full-body))
		  ;; session evaluation
		  (t
		   (let ((session (org-babel-prep-session:js
				   (cdr (assq :session params)) params)))
		     (nth 1
			  (org-babel-comint-with-output
			      (session (format "%S" org-babel-js-eoe) t body)
			    (dolist (code (list body (format "%S" org-babel-js-eoe)))
			      (insert (org-babel-chomp code))
			      (comint-send-input nil t)))))))))
    (org-babel-result-cond (cdr (assq :result-params params))
      result (org-babel-js-read result))))