forked from mirrors/org-mode
org-babel-result-cond - unified handling of results
* lisp/ob.el (org-babel-result-cond): This function should now be used by all language backends to handle the processing of raw code block output into scalar results, table results, or ignored results depending on the value of result-params. * lisp/ob-C.el (org-babel-C-execute): Use org-babel-result-cond. * lisp/ob-R.el (org-babel-R-evaluate-external-process): Use org-babel-result-cond. (org-babel-R-evaluate-session): Use org-babel-result-cond. * lisp/ob-awk.el (org-babel-execute:awk): Use org-babel-result-cond. * lisp/ob-clojure.el (org-babel-execute:clojure): Use org-babel-result-cond. * lisp/ob-emacs-lisp.el (org-babel-execute:emacs-lisp): Use org-babel-result-cond. * lisp/ob-fortran.el (org-babel-execute:fortran): Use org-babel-result-cond. * lisp/ob-io.el (org-babel-io-evaluate): Use org-babel-result-cond. * lisp/ob-java.el (org-babel-execute:java): Use org-babel-result-cond. * lisp/ob-lisp.el (org-babel-execute:lisp): Use org-babel-result-cond. * lisp/ob-maxima.el (org-babel-execute:maxima): Use org-babel-result-cond. * lisp/ob-picolisp.el (org-babel-execute:picolisp): Use org-babel-result-cond. * lisp/ob-python.el (org-babel-python-evaluate-external-process): Use org-babel-result-cond. (org-babel-python-evaluate-session): Use org-babel-result-cond. * lisp/ob-scala.el (org-babel-scala-evaluate): Use org-babel-result-cond. * lisp/ob-sh.el (org-babel-sh-evaluate): Use org-babel-result-cond. * lisp/ob-shen.el (org-babel-execute:shen): Use org-babel-result-cond. * lisp/ob-sql.el (org-babel-execute:sql): Use org-babel-result-cond. * lisp/ob-sqlite.el (org-babel-execute:sqlite): Use org-babel-result-cond.
This commit is contained in:
parent
5107ca3c9b
commit
78cdf14939
|
@ -106,11 +106,11 @@ or `org-babel-execute:C++'."
|
|||
(org-babel-process-file-name tmp-src-file)) ""))))
|
||||
((lambda (results)
|
||||
(org-babel-reassemble-table
|
||||
(if (member "vector" (cdr (assoc :result-params params)))
|
||||
(org-babel-result-cond (cdr (assoc :result-params params))
|
||||
(org-babel-read results)
|
||||
(let ((tmp-file (org-babel-temp-file "c-")))
|
||||
(with-temp-file tmp-file (insert results))
|
||||
(org-babel-import-elisp-from-file tmp-file))
|
||||
(org-babel-read results))
|
||||
(org-babel-import-elisp-from-file tmp-file)))
|
||||
(org-babel-pick-name
|
||||
(cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
|
||||
(org-babel-pick-name
|
||||
|
|
|
@ -302,8 +302,7 @@ last statement in BODY, as elisp."
|
|||
(format "{function ()\n{\n%s\n}}()" body)
|
||||
(org-babel-process-file-name tmp-file 'noquote)))
|
||||
(org-babel-R-process-value-result
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params))
|
||||
(org-babel-result-cond result-params
|
||||
(with-temp-buffer
|
||||
(insert-file-contents tmp-file)
|
||||
(buffer-string))
|
||||
|
@ -335,8 +334,7 @@ last statement in BODY, as elisp."
|
|||
"FALSE")
|
||||
".Last.value" (org-babel-process-file-name tmp-file 'noquote)))
|
||||
(org-babel-R-process-value-result
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params))
|
||||
(org-babel-result-cond result-params
|
||||
(with-temp-buffer
|
||||
(insert-file-contents tmp-file)
|
||||
(buffer-string))
|
||||
|
|
|
@ -78,9 +78,7 @@ called by `org-babel-execute-src-block'"
|
|||
(org-babel-reassemble-table
|
||||
((lambda (results)
|
||||
(when results
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params)
|
||||
(member "output" result-params))
|
||||
(org-babel-result-cond result-params
|
||||
results
|
||||
(let ((tmp (org-babel-temp-file "awk-results-")))
|
||||
(with-temp-file tmp (insert results))
|
||||
|
|
|
@ -79,8 +79,7 @@
|
|||
(insert (org-babel-expand-body:clojure body params))
|
||||
((lambda (result)
|
||||
(let ((result-params (cdr (assoc :result-params params))))
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params))
|
||||
(org-babel-result-cond result-params
|
||||
result
|
||||
(condition-case nil (org-babel-script-escape result)
|
||||
(error result)))))
|
||||
|
|
|
@ -56,8 +56,7 @@
|
|||
"Execute a block of emacs-lisp code with Babel."
|
||||
(save-window-excursion
|
||||
((lambda (result)
|
||||
(if (or (member "scalar" (cdr (assoc :result-params params)))
|
||||
(member "verbatim" (cdr (assoc :result-params params))))
|
||||
(org-babel-result-cond (cdr (assoc :result-params params))
|
||||
(let ((print-level nil)
|
||||
(print-length nil))
|
||||
(format "%S" result))
|
||||
|
|
|
@ -62,11 +62,11 @@
|
|||
(org-babel-process-file-name tmp-src-file)) ""))))
|
||||
((lambda (results)
|
||||
(org-babel-reassemble-table
|
||||
(if (member "vector" (cdr (assoc :result-params params)))
|
||||
(org-babel-result-cond (cdr (assoc :result-params params))
|
||||
(org-babel-read results)
|
||||
(let ((tmp-file (org-babel-temp-file "f-")))
|
||||
(with-temp-file tmp-file (insert results))
|
||||
(org-babel-import-elisp-from-file tmp-file))
|
||||
(org-babel-read results))
|
||||
(org-babel-import-elisp-from-file tmp-file)))
|
||||
(org-babel-pick-name
|
||||
(cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
|
||||
(org-babel-pick-name
|
||||
|
|
|
@ -98,7 +98,7 @@ in BODY as elisp."
|
|||
(wrapper (format org-babel-io-wrapper-method body)))
|
||||
(with-temp-file src-file (insert wrapper))
|
||||
((lambda (raw)
|
||||
(if (member "code" result-params)
|
||||
(org-babel-result-cond result-params
|
||||
raw
|
||||
(org-babel-io-table-or-string raw)))
|
||||
(org-babel-eval
|
||||
|
|
|
@ -58,11 +58,11 @@
|
|||
(make-directory packagename 'parents))
|
||||
((lambda (results)
|
||||
(org-babel-reassemble-table
|
||||
(if (member "vector" (cdr (assoc :result-params params)))
|
||||
(org-babel-result-cond (cdr (assoc :result-params params))
|
||||
(org-babel-read results)
|
||||
(let ((tmp-file (org-babel-temp-file "c-")))
|
||||
(with-temp-file tmp-file (insert results))
|
||||
(org-babel-import-elisp-from-file tmp-file))
|
||||
(org-babel-read results))
|
||||
(org-babel-import-elisp-from-file tmp-file)))
|
||||
(org-babel-pick-name
|
||||
(cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
|
||||
(org-babel-pick-name
|
||||
|
|
|
@ -76,7 +76,7 @@ current directory string."
|
|||
(require 'slime)
|
||||
(org-babel-reassemble-table
|
||||
((lambda (result)
|
||||
(if (member "output" (cdr (assoc :result-params params)))
|
||||
(org-babel-result-cond (cdr (assoc :result-params params))
|
||||
(car result)
|
||||
(condition-case nil
|
||||
(read (org-babel-lisp-vector-to-list (cadr result)))
|
||||
|
|
|
@ -89,9 +89,7 @@ called by `org-babel-execute-src-block'."
|
|||
(org-babel-eval cmd "")))))
|
||||
(if (org-babel-maxima-graphical-output-file params)
|
||||
nil
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params)
|
||||
(member "output" result-params))
|
||||
(org-babel-result-cond result-params
|
||||
result
|
||||
(let ((tmp-file (org-babel-temp-file "maxima-res-")))
|
||||
(with-temp-file tmp-file (insert result))
|
||||
|
|
|
@ -123,12 +123,7 @@
|
|||
(t full-body))))
|
||||
|
||||
((lambda (result)
|
||||
(if (or (member "verbatim" result-params)
|
||||
(member "scalar" result-params)
|
||||
(member "output" result-params)
|
||||
(member "code" result-params)
|
||||
(member "pp" result-params)
|
||||
(= (length result) 0))
|
||||
(org-babel-result-cond result-params
|
||||
result
|
||||
(read result)))
|
||||
(if (not (string= session-name "none"))
|
||||
|
|
|
@ -216,10 +216,7 @@ If RESULT-TYPE equals 'output then return standard output as a
|
|||
string. If RESULT-TYPE equals 'value then return the value of the
|
||||
last statement in BODY, as elisp."
|
||||
((lambda (raw)
|
||||
(if (or (member "code" result-params)
|
||||
(member "pp" result-params)
|
||||
(and (member "output" result-params)
|
||||
(not (member "table" result-params))))
|
||||
(org-babel-result-cond result-params
|
||||
raw
|
||||
(org-babel-python-table-or-string (org-babel-trim raw))))
|
||||
(case result-type
|
||||
|
@ -269,10 +266,7 @@ last statement in BODY, as elisp."
|
|||
(funcall send-wait))))
|
||||
((lambda (results)
|
||||
(unless (string= (substring org-babel-python-eoe-indicator 1 -1) results)
|
||||
(if (or (member "code" result-params)
|
||||
(member "pp" result-params)
|
||||
(and (member "output" result-params)
|
||||
(not (member "table" result-params))))
|
||||
(org-babel-result-cond result-params
|
||||
results
|
||||
(org-babel-python-table-or-string results))))
|
||||
(case result-type
|
||||
|
|
|
@ -104,7 +104,7 @@ in BODY as elisp."
|
|||
(wrapper (format org-babel-scala-wrapper-method body)))
|
||||
(with-temp-file src-file (insert wrapper))
|
||||
((lambda (raw)
|
||||
(if (member "code" result-params)
|
||||
(org-babel-result-cond result-params
|
||||
raw
|
||||
(org-babel-scala-table-or-string raw)))
|
||||
(org-babel-eval
|
||||
|
|
|
@ -141,9 +141,7 @@ return the value of the last statement in BODY."
|
|||
((lambda (results)
|
||||
(when results
|
||||
(let ((result-params (cdr (assoc :result-params params))))
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params)
|
||||
(member "output" result-params))
|
||||
(org-babel-result-cond result-params
|
||||
results
|
||||
(let ((tmp-file (org-babel-temp-file "sh-")))
|
||||
(with-temp-file tmp-file (insert results))
|
||||
|
|
|
@ -66,8 +66,7 @@ This function is called by `org-babel-execute-src-block'"
|
|||
(result-params (cdr (assoc :result-params params)))
|
||||
(full-body (org-babel-expand-body:shen body params)))
|
||||
((lambda (results)
|
||||
(if (or (member 'scalar result-params)
|
||||
(member 'verbatim result-params))
|
||||
(org-babel-result-cond result-params
|
||||
results
|
||||
(condition-case nil (org-babel-script-escape results)
|
||||
(error results))))
|
||||
|
|
|
@ -103,11 +103,7 @@ This function is called by `org-babel-execute-src-block'."
|
|||
(org-babel-expand-body:sql body params)))
|
||||
(message command)
|
||||
(shell-command command)
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params)
|
||||
(member "html" result-params)
|
||||
(member "code" result-params)
|
||||
(equal (point-min) (point-max)))
|
||||
(org-babel-result-cond result-params
|
||||
(with-temp-buffer
|
||||
(progn (insert-file-contents-literally out-file) (buffer-string)))
|
||||
(with-temp-buffer
|
||||
|
|
|
@ -98,12 +98,10 @@ This function is called by `org-babel-execute-src-block'."
|
|||
(cons "db " db)))
|
||||
;; body of the code block
|
||||
(org-babel-expand-body:sqlite body params)))
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params)
|
||||
(member "html" result-params)
|
||||
(member "code" result-params)
|
||||
(equal (point-min) (point-max)))
|
||||
(org-babel-result-cond result-params
|
||||
(buffer-string)
|
||||
(if (equal (point-min) (point-max))
|
||||
""
|
||||
(org-table-convert-region (point-min) (point-max)
|
||||
(if (or (member :csv others)
|
||||
(member :column others)
|
||||
|
@ -114,7 +112,7 @@ This function is called by `org-babel-execute-src-block'."
|
|||
'(4)))
|
||||
(org-babel-sqlite-table-or-scalar
|
||||
(org-babel-sqlite-offset-colnames
|
||||
(org-table-to-lisp) headers-p))))))
|
||||
(org-table-to-lisp) headers-p)))))))
|
||||
|
||||
(defun org-babel-sqlite-expand-vars (body vars)
|
||||
"Expand the variables held in VARS in BODY."
|
||||
|
|
14
lisp/ob.el
14
lisp/ob.el
|
@ -2561,6 +2561,20 @@ additionally processed by `shell-quote-argument'"
|
|||
Used by `org-babel-temp-file'. This directory will be removed on
|
||||
Emacs shutdown."))
|
||||
|
||||
(defmacro org-babel-result-cond (result-params scalar-form &rest table-forms)
|
||||
"Call the code to parse raw string results according to RESULT-PARAMS."
|
||||
(declare (indent 1))
|
||||
`(unless (member "none" result-params)
|
||||
(if (or (member "scalar" result-params)
|
||||
(member "verbatim" result-params)
|
||||
(member "html" result-params)
|
||||
(member "code" result-params)
|
||||
(member "pp" result-params)
|
||||
(and (member "output" result-params)
|
||||
(not (member "table" result-params))))
|
||||
,scalar-form
|
||||
,@table-forms)))
|
||||
|
||||
(defun org-babel-temp-file (prefix &optional suffix)
|
||||
"Create a temporary file in the `org-babel-temporary-directory'.
|
||||
Passes PREFIX and SUFFIX directly to `make-temp-file' with the
|
||||
|
|
Loading…
Reference in a new issue