diff options
author | Dan Davison <davison@stats.ox.ac.uk> | 2010-10-21 12:26:06 +0100 |
---|---|---|
committer | Dan Davison <davison@stats.ox.ac.uk> | 2010-10-21 13:06:02 +0100 |
commit | 84dd55393668514bb5052c8e6d0c5f2c4c2160db (patch) | |
tree | bec4113c4a69a717f41c9fa7e10ed969d1da2ac6 | |
parent | ee5d7af7b992036bace8c8246a8f188c467b1130 (diff) | |
download | org-mode-84dd55393668514bb5052c8e6d0c5f2c4c2160db.tar.gz |
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
-rw-r--r-- | lisp/ob-perl.el | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lisp/ob-perl.el b/lisp/ob-perl.el index f28afda..87f3d01 100644 --- a/lisp/ob-perl.el +++ b/lisp/ob-perl.el @@ -38,17 +38,6 @@ (defvar org-babel-perl-command "perl" "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) "Execute a block of Perl code with Babel. 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)) (result-params (nth 2 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))) (org-babel-reassemble-table (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." (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 (defun org-babel-perl-var-to-perl (var) |