Browse Source

integrating ob-plantuml -- Thanks to Zhang Weize for this contribution!

* Makefile (LISPF): now compiling and installing ob-plantuml.el

* contrib/scripts/.gitignore : ignores the plantuml.jar file, so that
  it can be located next to ditaa.jar

* lisp/ob-plantuml.el: adding copyright notice and FSF attribution

  (org-plantuml-jar-path): now a defcustom

  (org-babel-execute:plantuml): now using org-babel-eval which
  displays error messages

* lisp/org.el (org-babel-load-languages): ob-plantuml is now part of
  org-babel-load-languages
Eric Schulte 9 years ago
parent
commit
a89dc43e83
4 changed files with 46 additions and 18 deletions
  1. 3 2
      Makefile
  2. 1 0
      contrib/scripts/.gitignore
  3. 41 16
      lisp/ob-plantuml.el
  4. 1 0
      lisp/org.el

+ 3 - 2
Makefile

@@ -147,7 +147,8 @@ LISPF      = 	org.el			\
 		ob-css.el		\
 		ob-gnuplot.el		\
 		ob-octave.el		\
-		ob-screen.el
+		ob-screen.el		\
+		ob-plantuml.el
 
 LISPFILES0  = $(LISPF:%=lisp/%)
 LISPFILES   = $(LISPFILES0) lisp/org-install.el
@@ -444,4 +445,4 @@ lisp/org-timer.elc:	lisp/org.el
 lisp/org-vm.elc:	lisp/org.el
 lisp/org-w3m.elc:	lisp/org.el
 lisp/org-wl.elc:	lisp/org.el
-lisp/org-xoxo.elc:	lisp/org-exp.el
+lisp/org-xoxo.elc:	lisp/org-exp.el

+ 1 - 0
contrib/scripts/.gitignore

@@ -0,0 +1 @@
+plantuml.jar

+ 41 - 16
lisp/ob-plantuml.el

@@ -1,6 +1,26 @@
 ;;; ob-plantuml.el --- org-babel functions for plantuml evaluation
 
+;; Copyright (C) 2010  Free Software Foundation, Inc.
+
 ;; Author: Zhang Weize
+;; Keywords: literate programming, reproducible research
+;; Homepage: http://orgmode.org
+;; Version: 7.01trans
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -9,8 +29,14 @@
 ;; Inspired by Ian Yang's org-export-blocks-format-plantuml
 ;; http://www.emacswiki.org/emacs/org-export-blocks-format-plantuml.el
 
+;;; Requirements:
+
+;; plantuml     | http://plantuml.sourceforge.net/
+;; plantuml.jar | `org-plantuml-jar-path' should point to the jar file
+
 ;;; Code:
 (require 'ob)
+(require 'ob-eval)
 
 (defvar org-babel-default-header-args:plantuml
   '((:results . "file") (:exports . "results"))
@@ -19,28 +45,25 @@
 (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)
+(defcustom org-plantuml-jar-path nil
+  "Path to the plantuml.jar file."
+  :group 'org-babel
+  :type 'string)
+
 (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")))
+  (let* ((result-params (split-string (or (cdr (assoc :results params)) "")))
+	 (out-file (cdr (assoc :file params)))
+	 (cmdline (cdr (assoc :cmdline params)))
+	 (in-file (org-babel-temp-file "plantuml-"))
+	 (cmd (concat "java -jar "
+		      (shell-quote-argument org-plantuml-jar-path)
+		      " -p " cmdline " < " in-file " > " out-file)))
     (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))
+    (message "%s" cmd) (org-babel-eval cmd "")
     out-file))
 
 (defun org-babel-prep-session:plantuml (session params)
@@ -49,4 +72,6 @@ This function is called by `org-babel-execute-src-block'."
 
 (provide 'ob-plantuml)
 
+;; arch-tag: 451f50c5-e779-407e-ad64-70e0e8f161d1
+
 ;;; ob-plantuml.el ends here

+ 1 - 0
lisp/org.el

@@ -161,6 +161,7 @@ requirements) is loaded."
 		 (const :tag "Ocaml" ocaml)
 		 (const :tag "Octave" octave)
 		 (const :tag "Perl" perl)
+		 (const :tag "PlantUML" plantuml)
 		 (const :tag "Python" python)
 		 (const :tag "Ruby" ruby)
 		 (const :tag "Sass" sass)