소스 검색

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)