;;; ob-octave.el --- org-babel functions for octave and matlab evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2012 Free Software Foundation, Inc.
;; Author: Dan Davison
;; Keywords: literate programming, reproducible research
;; Homepage: http://orgmode.org
-;; Version: 7.4
;; This file is part of GNU Emacs.
(org-babel-expand-body:generic
body params (org-babel-variable-assignments:octave params)))
(result (org-babel-octave-evaluate
- session full-body result-type matlabp)))
- (or out-file
- (org-babel-reassemble-table
- result
- (org-babel-pick-name
- (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
- (org-babel-pick-name
- (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params)))))))
+ session
+ (if (org-babel-octave-graphical-output-file params)
+ (mapconcat 'identity
+ (list
+ "set (0, \"defaultfigurevisible\", \"off\");"
+ full-body
+ (format "print -dpng %s" (org-babel-octave-graphical-output-file params)))
+ "\n")
+ full-body)
+ result-type matlabp)))
+ (if (org-babel-octave-graphical-output-file params)
+ nil
+ (org-babel-reassemble-table
+ result
+ (org-babel-pick-name
+ (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
+ (org-babel-pick-name
+ (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params)))))))
(defun org-babel-prep-session:matlab (session params)
"Prepare SESSION according to PARAMS."
"Return list of octave statements assigning the block's variables"
(mapcar
(lambda (pair)
- (format "%s=%s"
+ (format "%s=%s;"
(car pair)
(org-babel-octave-var-to-octave (cdr pair))))
(mapcar #'cdr (org-babel-get-header params :var))))
(if (listp var)
(concat "[" (mapconcat #'org-babel-octave-var-to-octave var
(if (listp (car var)) "; " ",")) "]")
- (format "%s" (or var "nil"))))
+ (cond
+ ((stringp var)
+ (format "\'%s\'" var))
+ (t
+ (format "%s" var)))))
(defun org-babel-prep-session:octave (session params &optional matlabp)
"Prepare SESSION according to the header arguments specified in PARAMS."
(match-string 1 string)
string))
+(defun org-babel-octave-graphical-output-file (params)
+ "Name of file to which maxima should send graphical output."
+ (and (member "graphics" (cdr (assq :result-params params)))
+ (cdr (assq :file params))))
+
(provide 'ob-octave)
-;; arch-tag: d8e5f68b-ba13-440a-a495-b653e989e704
+
;;; ob-octave.el ends here