ob-ocaml: Support for pretty-printed outputs
* lisp/ob-ocaml.el (org-babel-execute:ocaml): Support for pretty-printed outputs. E.g. the following snippet produces multiple lines of output, due to pretty-printing #+BEGIN_SRC ocaml :exports code :eval no-export :results verbatim (* Note, no need to have parentheses around sqrt, as application binds the tightest *) let rec gamma n = if n = 0 then (1.0 +. sqrt 5.0) /. 2.0 else 1.0 /. (gamma (n-1) -. 1.0) let nums = List.map gamma (List.init 5 (fun x -> x)) #+END_SRC #+NAME: gamma-tbl #+RESULTS[1fd6a3e846afdef51350eb6d7ba15c6844ccc14e]: : val gamma : int -> float = <fun> : val nums : float list = : [1.6180339887498949; 1.61803398874989468; 1.61803398874989535; : 1.61803398874989357; 1.61803398874989823] (In reality this would have 50 or so outputs, point being mathematically it shouldn't change, but due to floating point errors it does.) The regexp has the following problems: - The "." in group 5 (as-was) doesn't match new-lines, so it only matches the first line, e.g. as a list : - [1.6180339887498949, 1.61803398874989468, 1.61803398874989535, - When using "\\(.\\|\n\\)", it includes the starting indentation of the list, which makes org-babel-script-escape choke (called from org-babel-ocaml-read-list, from org-babel-ocaml-parse-output, from org-babel-execute:ocaml, the code being modified. TINYCHANGE
This commit is contained in:
parent
bd5f5ece55
commit
be8e68be0b
|
@ -83,11 +83,11 @@
|
|||
(raw (org-trim clean))
|
||||
(result-params (cdr (assq :result-params params))))
|
||||
(string-match
|
||||
"\\(\\(.*\n\\)*\\)[^:\n]+ : \\([^=\n]+\\) =\\(\n\\| \\)\\(.+\\)$"
|
||||
"\\(\\(.*\n\\)*\\)[^:\n]+ : \\([^=\n]+\\) =[[:space:]]+\\(\\(.\\|\n\\)+\\)$"
|
||||
raw)
|
||||
(let ((output (match-string 1 raw))
|
||||
(type (match-string 3 raw))
|
||||
(value (match-string 5 raw)))
|
||||
(value (match-string 4 raw)))
|
||||
(org-babel-reassemble-table
|
||||
(org-babel-result-cond result-params
|
||||
(cond
|
||||
|
|
Loading…
Reference in New Issue