babel: accept explicit lists of colnames and/or rownames

* lisp/ob.el (org-babel-pick-name): if colnames or rownames contain a
  list of names, then use those directly

example of using this new feature would be

  #+begin_src emacs-lisp :var n=10 :colnames '("n" "fn")
    (defun fib (n)
      (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))

    (mapcar (lambda (n) (list n (fib n))) (number-sequence 0 n))
  #+end_src

  #+results:
  |  n | fn |
  |----+----|
  |  0 |  1 |
  |  1 |  1 |
  |  2 |  2 |
  |  3 |  3 |
  |  4 |  5 |
  |  5 |  8 |
  |  6 | 13 |
  |  7 | 21 |
  |  8 | 34 |
  |  9 | 55 |
  | 10 | 89 |
This commit is contained in:
Eric Schulte 2010-07-21 11:19:50 -07:00
parent 9a8a6f8efb
commit 917ad74b58
1 changed files with 12 additions and 7 deletions

View File

@ -827,13 +827,18 @@ names. Note: this function removes any hlines in TABLE."
table))
(defun org-babel-pick-name (names selector)
"Select one out of an alist of row or column names."
(when names
(if (and selector (symbolp selector) (not (equal t selector)))
(cdr (assoc selector names))
(if (integerp selector)
(nth (- selector 1) names)
(cdr (car (last names)))))))
"Select one out of an alist of row or column names.
SELECTOR can be either a list of names in which case those names
will be returned directly, or an index into the list NAMES in
which case the indexed names will be return."
(if (listp selector)
selector
(when names
(if (and selector (symbolp selector) (not (equal t selector)))
(cdr (assoc selector names))
(if (integerp selector)
(nth (- selector 1) names)
(cdr (car (last names))))))))
(defun org-babel-disassemble-tables (vars hlines colnames rownames)
"Parse tables for further processing.