Browse Source

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 15 years ago
parent
commit
84dd553936
1 changed files with 11 additions and 12 deletions
  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)