Function: org-babel-process-params

org-babel-process-params is a byte-compiled function defined in ob-core.el.gz.

Signature

(org-babel-process-params PARAMS)

Documentation

Expand variables in PARAMS and add summary parameters.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-core.el.gz
(defun org-babel-process-params (params)
  "Expand variables in PARAMS and add summary parameters."
  (let* ((processed-vars (mapcar (lambda (el)
				   (if (consp el)
				       el
				     (org-babel-ref-parse el)))
				 (org-babel--get-vars params)))
	 (vars-and-names (if (and (assq :colname-names params)
				  (assq :rowname-names params))
			     (list processed-vars)
			   (org-babel-disassemble-tables
			    processed-vars
			    (cdr (assq :hlines params))
			    (cdr (assq :colnames params))
			    (cdr (assq :rownames params)))))
	 (raw-result (or (cdr (assq :results params)) ""))
	 (result-params (delete-dups
			 (append
			  (split-string (if (stringp raw-result)
					    raw-result
                                          ;; FIXME: Arbitrary code evaluation.
					  (eval raw-result t)))
			  (cdr (assq :result-params params))))))
    (append
     (mapcar (lambda (var) (cons :var var)) (car vars-and-names))
     (list
      (cons :colname-names (or (cdr (assq :colname-names params))
			       (cadr  vars-and-names)))
      (cons :rowname-names (or (cdr (assq :rowname-names params))
                               (caddr vars-and-names)))
      (cons :result-params result-params)
      (cons :result-type  (cond ((member "output" result-params) 'output)
				((member "value" result-params) 'value)
				(t 'value))))
     (cl-remove-if
      (lambda (x) (memq (car x) '(:colname-names :rowname-names :result-params
                                                 :result-type :var)))
      params))))