summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Davison <davison@stats.ox.ac.uk>2010-10-21 12:30:11 +0100
committerDan Davison <davison@stats.ox.ac.uk>2010-10-21 13:06:03 +0100
commit2fc9b08a237c88b7635e4d15d5e67dec9b16d7fc (patch)
tree325fa5ddcd38347e6ce4353ace4839223fc547c7
parent2699f4e9bc7695432cf6aaf1dd48e182b10c2847 (diff)
downloadorg-mode-2fc9b08a237c88b7635e4d15d5e67dec9b16d7fc.tar.gz
babel: ruby: New variable assignment and expansion scheme
* ob-ruby.el (org-babel-execute:ruby): Use generic expansion function (org-babel-prep-session:ruby): Use new variable assignment function (org-babel-variable-assignments:ruby): New function (org-babel-expand-body:ruby): Delete function
-rw-r--r--lisp/ob-ruby.el31
1 files changed, 12 insertions, 19 deletions
diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el
index 4f56918..5ccdb6e 100644
--- a/lisp/ob-ruby.el
+++ b/lisp/ob-ruby.el
@@ -52,17 +52,6 @@
(defvar org-babel-ruby-command "ruby"
"Name of command to use for executing ruby code.")
-(defun org-babel-expand-body:ruby (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-ruby-var-to-ruby (cdr pair))))
- vars "\n") "\n" body "\n")))
-
(defun org-babel-execute:ruby (body params)
"Execute a block of Ruby code with Babel.
This function is called by `org-babel-execute-src-block'."
@@ -70,7 +59,8 @@ This function is called by `org-babel-execute-src-block'."
(session (org-babel-ruby-initiate-session (first processed-params)))
(result-params (nth 2 processed-params))
(result-type (nth 3 processed-params))
- (full-body (org-babel-expand-body:ruby body params))
+ (full-body (org-babel-expand-body:generic
+ body params (org-babel-variable-assignments:ruby params)))
(result (org-babel-ruby-evaluate
session full-body result-type result-params)))
(or (cdr (assoc :file params))
@@ -85,13 +75,7 @@ This function is called by `org-babel-execute-src-block'."
"Prepare SESSION according to the header arguments specified in PARAMS."
;; (message "params=%S" params) ;; debugging
(let* ((session (org-babel-ruby-initiate-session session))
- (vars (mapcar #'cdr (org-babel-get-header params :var)))
- (var-lines (mapcar ;; define any variables
- (lambda (pair)
- (format "%s=%s"
- (car pair)
- (org-babel-ruby-var-to-ruby (cdr pair))))
- vars)))
+ (var-lines (org-babel-variable-assignments:ruby params)))
(org-babel-comint-in-buffer session
(sit-for .5) (goto-char (point-max))
(mapc (lambda (var)
@@ -111,6 +95,15 @@ This function is called by `org-babel-execute-src-block'."
;; helper functions
+(defun org-babel-variable-assignments:ruby (params)
+ "Return list of ruby statements assigning the block's variables"
+ (mapcar
+ (lambda (pair)
+ (format "%s=%s"
+ (car pair)
+ (org-babel-ruby-var-to-ruby (cdr pair))))
+ (mapcar #'cdr (org-babel-get-header params :var))))
+
(defun org-babel-ruby-var-to-ruby (var)
"Convert VAR into a ruby variable.
Convert an elisp value into a string of ruby source code