Browse Source

Merge commit 'origin/master'

Dan Davison 16 years ago
parent
commit
66949199a7
3 changed files with 104 additions and 4 deletions
  1. 71 0
      lisp/langs/org-babel-asymptote.el
  2. 2 0
      lisp/org-babel-init.el
  3. 31 4
      org-babel.org

+ 71 - 0
lisp/langs/org-babel-asymptote.el

@@ -0,0 +1,71 @@
+;;; org-babel-asymptote.el --- org-babel functions for asymptote evaluation
+
+;; Copyright (C) 2009 Eric Schulte
+
+;; Author: Eric Schulte
+;; Keywords: literate programming, reproducible research
+;; Homepage: http://orgmode.org
+;; Version: 0.01
+
+;;; License:
+
+;; This program 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, or (at your option)
+;; any later version.
+;;
+;; This program 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; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Org-Babel support for evaluating asymptote source code.
+;;
+;; This differs from most standard languages in that
+;;
+;; 1) there is no such thing as a "session" in asymptote
+;;
+;; 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 'org-babel)
+
+(org-babel-add-interpreter "asymptote")
+
+(add-to-list 'org-babel-tangle-langs '("asymptote" "asymptote"))
+
+(defvar org-babel-default-header-args:asymptote '((:results . "file") (:exports . "results"))
+  "Default arguments to use when evaluating a asymptote source block.")
+
+(defun org-babel-execute:asymptote (body params)
+  "Execute a block of Asymptote code with org-babel.  This function is
+called by `org-babel-execute-src-block'."
+  (message "executing Asymptote source code block")
+  (let* ((result-params (split-string (or (cdr (assoc :results params)) "")))
+         (out-file (cdr (assoc :file params)))
+         (format (or (and (string-match ".+\\.\\(.+\\)" out-file)
+                          (match-string 1 out-file))
+                     "pdf"))
+         (cmdline (cdr (assoc :cmdline params)))
+         (in-file (make-temp-file "org-babel-asymptote")))
+    (with-temp-file in-file (insert body))
+    (message (concat "asy -globalwrite -f " format " -o " out-file " " cmdline " " in-file))
+    (shell-command (concat "asy -globalwrite -f " format " -o " out-file " " cmdline " " in-file))
+    out-file))
+
+(defun org-babel-prep-session:asymptote (session params)
+  (error "Asymptote does not support sessions"))
+
+(provide 'org-babel-asymptote)
+;;; org-babel-asymptote.el ends here

+ 2 - 0
lisp/org-babel-init.el

@@ -60,6 +60,8 @@
 (require 'org-babel-R)
 (require 'org-babel-ditaa)
 (require 'org-babel-gnuplot)
+(require 'org-babel-dot)
+(require 'org-babel-asymptote)
 
 (provide 'org-babel-init)
 ;;; org-babel-init.el ends here

+ 31 - 4
org-babel.org

@@ -2141,7 +2141,7 @@ This is currently working only with emacs lisp as in the following
 example in the [[* emacs lisp source reference][emacs lisp source reference]].
 
 
-** TODO Add languages [3/6]
+** TODO Add languages [9/11]
 I'm sure there are many more that aren't listed here.  Please add
 them, and bubble any that you particularly care about up to the top.
 
@@ -2151,9 +2151,7 @@ Follow the pattern set by [[file:lisp/org-babel-script.el][org-babel-script.el]]
 
 *** TODO perl
 This could probably be added to [[file:lisp/org-babel-script.el][org-babel-script.el]]
-
 *** TODO java
-
 *** DONE ditaa
 (see [[* file result types][file result types]])
 
@@ -2292,9 +2290,38 @@ digraph data_relationships {
 #+resname:
 [[file:test-dot.png][test-dot.png]]
 
-*** TODO asymptote
+*** DONE asymptote
 (see [[* file result types][file result types]])
 
+for information on asymptote see http://asymptote.sourceforge.net
+
+#+begin_src asymptote :file asymptote-test.png
+import graph;
+
+size(0,4cm);
+
+real f(real t) {return 1+cos(t);}
+
+path g=polargraph(f,0,2pi,operator ..)--cycle;
+filldraw(g,pink);
+
+xaxis("$x$",above=true);
+yaxis("$y$",above=true);
+
+dot("$(a,0)$",(1,0),N);
+dot("$(2a,0)$",(2,0),N+E);
+#+end_src
+
+#+resname:
+[[file:asymptote-test.png][asymptote-test.png]]
+
+
+*** DONE ruby
+*** DONE python
+*** DONE R
+*** DONE emacs-lisp
+*** DONE sh
+
 
 * Bugs [27/38]
 ** TODO creeping blank lines