浏览代码

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 |
Eric Schulte 14 年之前
父节点
当前提交
917ad74b58
共有 1 个文件被更改,包括 12 次插入7 次删除
  1. 12 7
      lisp/ob.el

+ 12 - 7
lisp/ob.el

@@ -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.