[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] babel for ditaa-eps
From: |
Arne Babenhauserheide (IMK) |
Subject: |
Re: [O] babel for ditaa-eps |
Date: |
Thu, 13 Sep 2012 13:53:43 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120828 Thunderbird/14.0 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Eric,
It’s much easier to answer, what this does not share with ob-ditaa.el :)
If I cut out the obvious renaming (to be able to use a ditaa-exp
source type), it’s just this diff (and the first half of that only
defines variables…):
- --- /usr/share/emacs/site-lisp/org-mode/ob-ditaa.el 2012-05-25
23:12:51.000000000 +0200
+++ ob-ditaa-eps.el 2012-09-12 15:37:50.942191587 +0200
@@ -44,6 +47,20 @@
- -(defvar org-ditaa-jar-path)
- -(defun org-babel-execute:ditaa (body params)
+(defcustom org-ditaa-eps-jar-path (expand-file-name
+ "DitaaEps.jar"
+ (file-name-as-directory
+ (expand-file-name
+ "scripts"
+ (file-name-as-directory
+ (expand-file-name
+ "../contrib"
+ (file-name-directory (find-library-name
"org")))))))
+ "Path to the ditaa-eps jar executable."
+ :group 'org-babel
+ :type 'string)
+
+
+(defvar org-ditaa-eps-jar-path)
+(defun org-babel-execute:ditaa-eps (body params)
"Execute a block of Ditaa code with org-babel.
This function is called by `org-babel-execute-src-block'."
(let* ((result-params (split-string (or (cdr (assoc :results
params)) "")))
@@ -55,14 +72,18 @@
(cmdline (cdr (assoc :cmdline params)))
(java (cdr (assoc :java params)))
(in-file (org-babel-temp-file "ditaa-"))
- - (cmd (concat "java " java " -jar "
+ (cmd0 (concat "java " java " -jar "
(shell-quote-argument
- - (expand-file-name org-ditaa-jar-path))
+ (expand-file-name org-ditaa-eps-jar-path))
" " cmdline
" " (org-babel-process-file-name in-file)
- - " " (org-babel-process-file-name out-file))))
- - (unless (file-exists-p org-ditaa-jar-path)
- - (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
+ " " (org-babel-process-file-name (concat in-file
".eps"))))
+ (cmd1 (concat "epstopdf"
+ " " (org-babel-process-file-name (concat in-file ".eps"))
+ " -o=" (org-babel-process-file-name out-file))))
+ (unless (file-exists-p org-ditaa-eps-jar-path)
+ (error "Could not find ditaa.jar at %s" org-ditaa-eps-jar-path))
(with-temp-file in-file (insert body))
- - (message cmd) (shell-command cmd)
+ (message cmd0) (shell-command cmd0)
+ (message cmd1) (shell-command cmd1)
nil)) ;; signal that output has already been written to file
Best wishes,
Arne
Am 13.09.2012 07:16, schrieb Eric Schulte:
> It sounds like there is a good deal of desire for this
> functionality. How much code does this file share with ob-ditaa?
> If it is a large percentage perhaps it would be possible to instead
> add a new header argument to ditaa code blocks to run ditaa-eps.
> Some code blocks (e.g., sql) already have an :engine header
> argument which may be used to change the back-end tool which
> executes the block.
>
> Thanks for sharing!
>
> "Arne Babenhauserheide (IMK)" <address@hidden>
> writes:
>
>> Dear org hackers,
>>
>> I don’t know if there’s already a babel-ditaa-option for using
>> ditaa-eps, so I modified ob-ditaa.el to use ditaa-eps and convert
>> the result using epstopdf.
>>
>> Feel free to use it.
>>
>> ;;; ob-ditaa-eps.el --- org-babel functions for ditaa evaluation
>>
>> ;; Copyright (C) 2009-2012 Free Software Foundation, Inc.
>>
>> ;; Author: Eric Schulte und Arne Babenhauserheide ;; Keywords:
>> literate programming, reproducible research ;; Homepage:
>> http://orgmode.org
>>
>> ;; 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:
>>
>> ;; Org-Babel support for evaluating ditaa source code as
>> eps/pdf. ;; ;; Almost verbatim copy from ob-ditaa, but with
>> ditaa-eps and epstopdf ;; as intermediate step. ;; ;; Ditaa
>> differs from most standard languages in that ;; ;; 1) there is no
>> such thing as a "session" in ditaa ;; ;; 2) we are generally only
>> going to return results of type "file" ;; ;; 3) we are adding the
>> "file" and "cmdline" header arguments ;; ;; 4) there are no
>> variables (at least for now)
>>
>> ;;; Code: (require 'ob)
>>
>> (defvar org-babel-default-header-args:ditaa-eps '((:results .
>> "file") (:exports . "results") (:java .
>> "-Dfile.encoding=UTF-8")) "Default arguments for evaluating a
>> ditaa source block.")
>>
>> (defcustom org-ditaa-eps-jar-path (expand-file-name
>> "DitaaEps.jar" (file-name-as-directory (expand-file-name
>> "scripts" (file-name-as-directory (expand-file-name "../contrib"
>> (file-name-directory (find-library-name "org"))))))) "Path to the
>> ditaa-eps jar executable." :group 'org-babel :type 'string)
>>
>>
>> (defvar org-ditaa-eps-jar-path) (defun
>> org-babel-execute:ditaa-eps (body params) "Execute a block of
>> Ditaa 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
>> ((lambda (el) (or el (error "ditaa code block requires :file
>> header argument"))) (cdr (assoc :file params)))) (cmdline (cdr
>> (assoc :cmdline params))) (java (cdr (assoc :java params)))
>> (in-file (org-babel-temp-file "ditaa-")) (cmd0 (concat "java "
>> java " -jar " (shell-quote-argument (expand-file-name
>> org-ditaa-eps-jar-path)) " " cmdline " "
>> (org-babel-process-file-name in-file) " "
>> (org-babel-process-file-name (concat in-file ".eps")))) (cmd1
>> (concat "epstopdf" " " (org-babel-process-file-name (concat
>> in-file ".eps")) " -o=" (org-babel-process-file-name
>> out-file)))) (unless (file-exists-p org-ditaa-eps-jar-path)
>> (error "Could not find ditaa.jar at %s" org-ditaa-eps-jar-path))
>> (with-temp-file in-file (insert body)) (message cmd0)
>> (shell-command cmd0) (message cmd1) (shell-command cmd1) nil)) ;;
>> signal that output has already been written to file
>>
>> (defun org-babel-prep-session:ditaa-eps (session params) "Return
>> an error because ditaa does not support sessions." (error "Ditaa
>> does not support sessions"))
>>
>> (defun ditaa-eps-mode () (artist-mode))
>>
>> (provide 'ob-ditaa-eps)
>>
>> ;;; ob-ditaa-eps.el ends here
>>
>> Best wishes, Arne
>>
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJQUclHAAoJEFyD82SnDaCeim0IAJKYNMwE0vAsdYOk9Ur/V8Vk
JDMORPs3Riox5MC0vWZRpEwxA/MHUV9J/p40+gQSF67aAhAo0T2c1qhjA99xsn2S
7OCpbLdTPMTGe2e23LLwuPjiX6J0I9E3u39AOz+ePwUmlGBceCzCf26nQLg0ikLR
PUZvGFrB2UCBd5267BBJnCDE9rLdC3FrvnxH9o2uzti9b/h24UtoeVleGN9x7Wvl
taf/FILgtSS9Cp66xRadsovHrJda7mdopa+lQjA+dwboAUd0lhHDU5nOLL0DwIhH
yMJUEESHm+FWYZMY3m3Z9lqkTt0GN+WQUf2sXCIFGuHQuy4hdZmNtUnRMPk60uE=
=lcUh
-----END PGP SIGNATURE-----
- [O] babel for ditaa-eps, Arne Babenhauserheide (IMK), 2012/09/12
- Re: [O] babel for ditaa-eps, Luis Anaya, 2012/09/12
- Re: [O] babel for ditaa-eps, Luis Anaya, 2012/09/12
- Re: [O] babel for ditaa-eps, Eric Schulte, 2012/09/13
- Re: [O] babel for ditaa-eps,
Arne Babenhauserheide (IMK) <=
- Re: [O] babel for ditaa-eps, Eric Schulte, 2012/09/13
- Re: [O] babel for ditaa-eps, Luis Anaya, 2012/09/13
- Re: [O] babel for ditaa-eps, Eric Schulte, 2012/09/13
- Re: [O] babel for ditaa-eps, Eric Schulte, 2012/09/13
- Re: [O] babel for ditaa-eps, Luis Anaya, 2012/09/15
- Re: [O] babel for ditaa-eps, Eric Schulte, 2012/09/16
- Re: [O] babel for ditaa-eps, Bastien, 2012/09/19
- Re: [O] babel for ditaa-eps, Bastien, 2012/09/19
- Re: [O] babel for ditaa-eps, Thomas S. Dye, 2012/09/21
- Re: [O] babel for ditaa-eps, Bastien, 2012/09/21