summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Davison <davison@stats.ox.ac.uk>2010-10-21 12:26:06 +0100
committerDan Davison <davison@stats.ox.ac.uk>2010-10-21 13:06:02 +0100
commit84dd55393668514bb5052c8e6d0c5f2c4c2160db (patch)
treebec4113c4a69a717f41c9fa7e10ed969d1da2ac6
parentee5d7af7b992036bace8c8246a8f188c467b1130 (diff)
downloadorg-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.el23
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)