summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang Weize <zhangweize@gmail.com>2010-08-26 09:10:03 -0600
committerEric Schulte <schulte.eric@gmail.com>2010-08-26 09:10:03 -0600
commit810bb09ef32b37bf51bc6da83716090ee2108b57 (patch)
tree46a98a2f06aaa56be5b98ffa62730e794ec3a4b1
parent9c43017755b201fef14c36bc64de6c3c68f73654 (diff)
downloadorg-mode-810bb09ef32b37bf51bc6da83716090ee2108b57.tar.gz
ob-plantuml.el support for evaluating plantuml scripts
-rw-r--r--lisp/ob-plantuml.el52
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