Browse Source

babel: javascript: New variable assignment and expansion scheme

	* ob-js.el (org-babel-execute:js): Use new variable assignment
	function
	(org-babel-expand-body:js): Delete function
	(org-babel-prep-session:js): Use new variable assignment
	function
	(org-babel-variable-assignments:js): New function
Dan Davison 14 years ago
parent
commit
67fd5e730e
1 changed files with 10 additions and 16 deletions
  1. 10 16
      lisp/ob-js.el

+ 10 - 16
lisp/ob-js.el

@@ -64,22 +64,14 @@
   "require('sys').print(require('sys').inspect(function(){%s}()));"
   "Javascript code to print value of body.")
 
-(defun org-babel-expand-body:js (body params)
-  "Expand BODY according to PARAMS, return the expanded body."
-  (let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
-    (concat
-     (mapconcat ;; define any variables
-      (lambda (pair) (format "var %s=%s;"
-			(car pair) (org-babel-js-var-to-js (cdr pair))))
-      vars "\n") "\n" body "\n")))
-
 (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* ((processed-params (org-babel-process-params params))
 	 (org-babel-js-cmd (or (cdr (assoc :cmd params)) org-babel-js-cmd))
          (result-type (nth 3 processed-params))
-         (full-body (org-babel-expand-body:js body params)))
+         (full-body (org-babel-expand-body:generic
+		     body params (org-babel-variable-assignments:js params))))
     (org-babel-js-read
      (if (not (string= (nth 0 processed-params) "none"))
 	 ;; session evaluation
@@ -130,12 +122,7 @@ specifying a variable of the same value."
 (defun org-babel-prep-session:js (session params)
   "Prepare SESSION according to the header arguments specified in PARAMS."
   (let* ((session (org-babel-js-initiate-session session))
-	 (vars (org-babel-ref-variables params))
-	 (var-lines
-	  (mapcar
-	   (lambda (pair) (format "var %s=%s;"
-			     (car pair) (org-babel-js-var-to-js (cdr pair))))
-	   vars)))
+	 (var-lines (org-babel-variable-assignments:js params)))
     (when session
       (org-babel-comint-in-buffer session
 	(sit-for .5) (goto-char (point-max))
@@ -145,6 +132,13 @@ specifying a variable of the same value."
 		(sit-for .1) (goto-char (point-max))) var-lines)))
     session))
 
+(defun org-babel-variable-assignments:js (params)
+  "Return list of Javascript statements assigning the block's variables"
+  (mapcar
+   (lambda (pair) (format "var %s=%s;"
+			  (car pair) (org-babel-js-var-to-js (cdr pair))))
+   (mapcar #'cdr (org-babel-get-header params :var))))
+
 (defun org-babel-js-initiate-session (&optional session)
   "If there is not a current inferior-process-buffer in SESSION
 then create.  Return the initialized session."