diff options
author | Zhang Weize <zhangweize@gmail.com> | 2010-08-26 09:10:03 -0600 |
---|---|---|
committer | Eric Schulte <schulte.eric@gmail.com> | 2010-08-26 09:10:03 -0600 |
commit | 810bb09ef32b37bf51bc6da83716090ee2108b57 (patch) | |
tree | 46a98a2f06aaa56be5b98ffa62730e794ec3a4b1 | |
parent | 9c43017755b201fef14c36bc64de6c3c68f73654 (diff) | |
download | org-mode-810bb09ef32b37bf51bc6da83716090ee2108b57.tar.gz |
ob-plantuml.el support for evaluating plantuml scripts
-rw-r--r-- | lisp/ob-plantuml.el | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lisp/ob-plantuml.el b/lisp/ob-plantuml.el new file mode 100644 index 0000000..889fa96 --- /dev/null +++ b/lisp/ob-plantuml.el @@ -0,0 +1,52 @@ +;;; ob-plantuml.el --- org-babel functions for plantuml evaluation + +;; Author: Zhang Weize + +;;; Commentary: + +;; Org-Babel support for evaluating plantuml script. +;; +;; Inspired by Ian Yang's org-export-blocks-format-plantuml +;; http://www.emacswiki.org/emacs/org-export-blocks-format-plantuml.el + +;;; Code: +(require 'ob) + +(defvar org-babel-default-header-args:plantuml + '((:results . "file") (:exports . "results")) + "Default arguments for evaluating a plantuml source block.") + +(defun org-babel-expand-body:plantuml (body params &optional processed-params) + "Expand BODY according to PARAMS, return the expanded body." body) + +(defvar org-plantuml-jar-path) +(defun org-babel-execute:plantuml (body params) + "Execute a block of plantuml code with org-babel. +This function is called by `org-babel-execute-src-block'." + (let ((result-params (split-string (or (cdr (assoc :results params)) ""))) + (out-file (cdr (assoc :file params))) + (cmdline (cdr (assoc :cmdline params))) + (in-file (make-temp-file "org-babel-plantuml"))) + (unless (file-exists-p org-plantuml-jar-path) + (error "Could not find plantuml.jar at %s" org-plantuml-jar-path)) + (with-temp-file in-file (insert (concat "@startuml\n" body "\n@enduml"))) + (message (concat "java -jar " org-plantuml-jar-path + " -p " cmdline " < " in-file " > " out-file)) + (shell-command (concat "java -jar " (shell-quote-argument org-plantuml-jar-path) + " -p " cmdline " < " in-file " > " out-file)) + ; The method below will produce error when exporting the buffer. + ;; (with-temp-buffer + ;; (call-process-shell-command + ;; (concat "java -jar " org-plantuml-jar-path " -p " cmdline) + ;; in-file + ;; '(t nil)) + ;; (write-region nil nil out-file)) + out-file)) + +(defun org-babel-prep-session:plantuml (session params) + "Return an error because plantuml does not support sessions." + (error "Plantuml does not support sessions")) + +(provide 'ob-plantuml) + +;;; ob-plantuml.el ends here |