Function: org-babel-execute:ocaml

org-babel-execute:ocaml is a byte-compiled function defined in ob-ocaml.el.gz.

Signature

(org-babel-execute:ocaml BODY PARAMS)

Documentation

Execute Ocaml BODY according to PARAMS.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-ocaml.el.gz
(defun org-babel-execute:ocaml (body params)
  "Execute Ocaml BODY according to PARAMS."
  (let* ((full-body (org-babel-expand-body:generic
		     body params
		     (org-babel-variable-assignments:ocaml params)))
         (session (org-babel-prep-session:ocaml
		   (cdr (assq :session params)) params))
         (raw (org-babel-comint-with-output
		  (session org-babel-ocaml-eoe-output nil full-body)
		(insert
		 (concat
		  (org-babel-chomp full-body) ";;\n"
		  org-babel-ocaml-eoe-indicator))
		(tuareg-interactive-send-input)))
	 (clean
	  (car (let ((re (regexp-quote org-babel-ocaml-eoe-output)) out)
		 (delq nil (mapcar (lambda (line)
				     (if out
					 (progn (setq out nil) line)
				       (when (string-match re line)
					 (progn (setq out t) nil))))
				   (mapcar #'org-trim (reverse raw)))))))
	 (raw (org-trim clean))
	 (result-params (cdr (assq :result-params params))))
    (string-match
     "\\(\\(.*\n\\)*\\)[^:\n]+ : \\([^=\n]+\\) =[[:space:]]+\\(\\(.\\|\n\\)+\\)$"
     raw)
    (let ((output (match-string 1 raw))
	  (type (match-string 3 raw))
	  (value (match-string 4 raw)))
      (org-babel-reassemble-table
       (org-babel-result-cond result-params
	 (cond
	  ((member "verbatim" result-params) raw)
	  ((member "output" result-params) output)
	  (t raw))
	 (if (and value type)
	     (org-babel-ocaml-parse-output value type)
	   raw))
       (org-babel-pick-name
	(cdr (assq :colname-names params)) (cdr (assq :colnames params)))
       (org-babel-pick-name
	(cdr (assq :rowname-names params)) (cdr (assq :rownames params)))))))