]> code.delx.au - gnu-emacs/blobdiff - lisp/org/ob-dot.el
Update copyright year to 2016
[gnu-emacs] / lisp / org / ob-dot.el
index 4657fb80ba0330f81bf2cae53941382732c49465..40ee497a514cca858a183c1428b974301251651a 100644 (file)
@@ -1,11 +1,10 @@
 ;;; ob-dot.el --- org-babel functions for dot evaluation
 
-;; Copyright (C) 2009, 2010  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2016 Free Software Foundation, Inc.
 
 ;; Author: Eric Schulte
 ;; Keywords: literate programming, reproducible research
 ;; Homepage: http://orgmode.org
-;; Version: 7.01
 
 ;; This file is part of GNU Emacs.
 
 
 ;;; Code:
 (require 'ob)
-(require 'ob-eval)
 
 (defvar org-babel-default-header-args:dot
   '((:results . "file") (:exports . "results"))
   "Default arguments to use when evaluating a dot source block.")
 
-(defun org-babel-expand-body:dot (body params &optional processed-params)
+(defun org-babel-expand-body:dot (body params)
   "Expand BODY according to PARAMS, return the expanded body."
-  (let ((vars (nth 1 (or processed-params
-                        (org-babel-process-params params)))))
+  (let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
     (mapc
      (lambda (pair)
        (let ((name (symbol-name (car pair)))
             (value (cdr pair)))
         (setq body
               (replace-regexp-in-string
-               (concat "\$" (regexp-quote name))
+               (concat "$" (regexp-quote name))
                (if (stringp value) value (format "%S" value))
                body))))
      vars)
 (defun org-babel-execute:dot (body params)
   "Execute a block of Dot code with org-babel.
 This function is called by `org-babel-execute-src-block'."
-  (let ((processed-params (org-babel-process-params params))
-       (result-params (split-string (or (cdr (assoc :results params)) "")))
-        (out-file (cdr (assoc :file params)))
-        (cmdline (cdr (assoc :cmdline params)))
-        (cmd (or (cdr (assoc :cmd params)) "dot"))
-        (in-file (make-temp-file "org-babel-dot")))
+  (let* ((result-params (cdr (assoc :result-params params)))
+        (out-file (cdr (or (assoc :file params)
+                           (error "You need to specify a :file parameter"))))
+        (cmdline (or (cdr (assoc :cmdline params))
+                     (format "-T%s" (file-name-extension out-file))))
+        (cmd (or (cdr (assoc :cmd params)) "dot"))
+        (in-file (org-babel-temp-file "dot-")))
     (with-temp-file in-file
-      (insert (org-babel-expand-body:dot body params processed-params)))
-    (org-babel-eval (concat cmd " " in-file " " cmdline " -o " out-file) "")
-    out-file))
+      (insert (org-babel-expand-body:dot body params)))
+    (org-babel-eval
+     (concat cmd
+            " " (org-babel-process-file-name in-file)
+            " " cmdline
+            " -o " (org-babel-process-file-name out-file)) "")
+    nil)) ;; signal that output has already been written to file
 
 (defun org-babel-prep-session:dot (session params)
   "Return an error because Dot does not support sessions."
@@ -82,6 +84,6 @@ This function is called by `org-babel-execute-src-block'."
 
 (provide 'ob-dot)
 
-;; arch-tag: 817d0516-7b47-4f77-a8b2-2aadd8e4d0e2
+
 
 ;;; ob-dot.el ends here