瀏覽代碼

babel: perl: New variable assignment and expansion scheme

	* ob-perl.el (org-babel-execute:perl): Use generic expansion
	function
	(org-babel-expand-body:perl): Delete function
	(org-babel-variable-assignments:perl): New function
Dan Davison 14 年之前
父節點
當前提交
84dd553936
共有 1 個文件被更改,包括 11 次插入12 次删除
  1. 11 12
      lisp/ob-perl.el

+ 11 - 12
lisp/ob-perl.el

@@ -38,17 +38,6 @@
 (defvar org-babel-perl-command "perl"
 (defvar org-babel-perl-command "perl"
   "Name of command to use for executing perl code.")
   "Name of command to use for executing perl code.")
 
 
-(defun org-babel-expand-body:perl (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 "$%s=%s;"
-                (car pair)
-                (org-babel-perl-var-to-perl (cdr pair))))
-      vars "\n") "\n" (org-babel-trim body) "\n")))
-
 (defun org-babel-execute:perl (body params)
 (defun org-babel-execute:perl (body params)
   "Execute a block of Perl code with Babel.
   "Execute a block of Perl code with Babel.
 This function is called by `org-babel-execute-src-block'."
 This function is called by `org-babel-execute-src-block'."
@@ -57,7 +46,8 @@ This function is called by `org-babel-execute-src-block'."
          (vars (nth 1 processed-params))
          (vars (nth 1 processed-params))
          (result-params (nth 2 processed-params))
          (result-params (nth 2 processed-params))
          (result-type (nth 3 processed-params))
          (result-type (nth 3 processed-params))
-         (full-body (org-babel-expand-body:perl body params))
+         (full-body (org-babel-expand-body:generic
+		     body params (org-babel-variable-assignments:perl params)))
 	(session (org-babel-perl-initiate-session session)))
 	(session (org-babel-perl-initiate-session session)))
     (org-babel-reassemble-table
     (org-babel-reassemble-table
      (org-babel-perl-evaluate session full-body result-type)
      (org-babel-perl-evaluate session full-body result-type)
@@ -70,6 +60,15 @@ This function is called by `org-babel-execute-src-block'."
   "Prepare SESSION according to the header arguments in PARAMS."
   "Prepare SESSION according to the header arguments in PARAMS."
   (error "Sessions are not supported for Perl."))
   (error "Sessions are not supported for Perl."))
 
 
+(defun org-babel-variable-assignments:perl (params)
+  "Return list of perl statements assigning the block's variables"
+  (mapcar
+   (lambda (pair)
+     (format "$%s=%s;"
+	     (car pair)
+	     (org-babel-perl-var-to-perl (cdr pair))))
+   (mapcar #'cdr (org-babel-get-header params :var))))
+
 ;; helper functions
 ;; helper functions
 
 
 (defun org-babel-perl-var-to-perl (var)
 (defun org-babel-perl-var-to-perl (var)