diff options
author | Eric Schulte <schulte.eric@gmail.com> | 2010-07-21 16:11:49 -0700 |
---|---|---|
committer | Eric Schulte <schulte.eric@gmail.com> | 2010-07-21 16:11:49 -0700 |
commit | 6f825152d992c8b21ac9a2cd3ee5d8f34ed985e5 (patch) | |
tree | 8034e07f32655b54524d6735c779f97035cfc5d4 | |
parent | 917ad74b58a61321872e134a30279094f53fc02b (diff) | |
download | org-mode-6f825152d992c8b21ac9a2cd3ee5d8f34ed985e5.tar.gz |
ob-table: babel scripts called from tables can accept ranges
* lisp/ob-table.el (sbe): now able to accept range references from tables
-rw-r--r-- | lisp/ob-table.el | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/lisp/ob-table.el b/lisp/ob-table.el index 90ce0ce..4a0454c 100644 --- a/lisp/ob-table.el +++ b/lisp/ob-table.el @@ -79,13 +79,25 @@ references to source-code blocks, to force interpretation of a cell's value as a string, prefix the identifier with two \"$\"s rather than a single \"$\" (i.e. \"$$2\" instead of \"$2\" in the example above." - (let ((variables (mapcar - (lambda (var) - (if (and (= 3 (length var)) (eq (nth 1 var) '$)) - (list (car var) (format "\"%s\"" (last var))) - var)) - variables))) - (unless (stringp source-block) (setq source-block (symbol-name source-block))) + (let* (quote + (variables (mapcar + (lambda (var) + ;; ensure that all cells prefixed with $'s are strings + (cons (car var) + (delq nil + (mapcar + (lambda (el) + (if (eq '$ el) + (setq quote t) + (prog1 + (if quote + (format "\"%s\"" el) + (org-babel-clean-text-properties el)) + (setq quote nil)))) + (cdr var))))) + variables))) + (unless (stringp source-block) + (setq source-block (symbol-name source-block))) (org-babel-table-truncate-at-newline ;; org-table cells can't be multi-line (if (and source-block (> (length source-block) 0)) (let ((params @@ -93,9 +105,14 @@ example above." (concat ":var results=" ,source-block "(" - (mapconcat (lambda (var-spec) - (format "%S=%s" (nth 0 var-spec) (nth 1 var-spec))) - ',variables ", ") + (mapconcat + (lambda (var-spec) + (if (> (length (cdr var-spec)) 1) + (format "%S='%S" + (car var-spec) (mapcar #'read (cdr var-spec))) + (format "%S=%s" + (car var-spec) (cadr var-spec)))) + ',variables ", ") ")"))))) (org-babel-execute-src-block nil (list "emacs-lisp" "results" |