Re: [O] [BABEL][PATCH] construct a table from the output of maxima code block

2011-10-10 Thread Eric S Fraga
Sergey Litvinov slitvi...@gmail.com writes:

 In any case, can you please post a patch against the standard
 version?  Or, maybe easier, simply post ob-maxima.el as the other
 changes are not necessary for me to test your patch.

 I though my previous patch was applied. It is still under review due to
 copyright papers.  I am attaching a patch against master branch and
 ob-maxima.el file.

Seems fine from minimal testing on my part.  Nice extra functionality!
I hope the FSF papers come through soon as I would like to see this in
the master branch.

-- 
: Eric S Fraga (GnuPG: 0xC89193D8FFFCF67D) in Emacs 24.0.90.1
: using Org-mode version 7.7 (release_7.7.377.gbbf83.dirty)



Re: [O] [BABEL][PATCH] construct a table from the output of maxima code block

2011-10-06 Thread Eric Schulte
Sergey Litvinov slitvi...@gmail.com writes:

 In any case, can you please post a patch against the standard
 version?  Or, maybe easier, simply post ob-maxima.el as the other
 changes are not necessary for me to test your patch.

 I though my previous patch was applied. It is still under review due to
 copyright papers.  I am attaching a patch against master branch and
 ob-maxima.el file.

 The commit message is
 ob-maxima.el: add input variables, png graphic
 output, table as an output


Yes, there are a number of very nice patches from Sergey which are still
in holding pending completion of the FSF copyright papers.  See [1] for
a list of pending patches -- the relevant ones are tagged under
review.

Best -- Eric





Footnotes: 
[1]  http://patchwork.newartisans.com/project/org-mode/list/

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/



Re: [O] [BABEL][PATCH] construct a table from the output of maxima code block

2011-10-04 Thread Eric S Fraga
Litvinov Sergey slitvi...@gmail.com writes:

 Please consider a patch to construct a table from the output of maxima
 code block.

I am interested in trying this patch out but it would appear that it has
been generated relative to a branch other than the master at origin!  I
cannot apply the patch as a result.  I do seem to recall that you
proposed a set of changes a while back but they obviously have not been
incorporated into the standard branch of org.  Is there any reason for
this as I seem to recall that your additions were useful!

In any case, can you please post a patch against the standard version?
Or, maybe easier, simply post ob-maxima.el as the other changes are not
necessary for me to test your patch.

thanks,
eric
-- 
: Eric S Fraga (GnuPG: 0xC89193D8FFFCF67D) in Emacs 24.0.50.1
: using Org-mode version 7.7 (release_7.7.346.g4e3cc)



Re: [O] [BABEL][PATCH] construct a table from the output of maxima code block

2011-10-04 Thread Sergey Litvinov
 In any case, can you please post a patch against the standard
 version?  Or, maybe easier, simply post ob-maxima.el as the other
 changes are not necessary for me to test your patch.

I though my previous patch was applied. It is still under review due to
copyright papers.  I am attaching a patch against master branch and
ob-maxima.el file.

The commit message is
ob-maxima.el: add input variables, png graphic
output, table as an output
From d9cfa76e83c10e86ffacca3da7cbc83702268cc2 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Tue, 4 Oct 2011 19:48:14 +0200
Subject: [PATCH] ob-maxima.el: add input variables, graphic output to png file, table as an output

---
 lisp/ob-maxima.el |   97 -
 1 files changed, 73 insertions(+), 24 deletions(-)

diff --git a/lisp/ob-maxima.el b/lisp/ob-maxima.el
index 085609c..9c39a5f 100644
--- a/lisp/ob-maxima.el
+++ b/lisp/ob-maxima.el
@@ -30,47 +30,96 @@
 ;;
 ;; 1) there is no such thing as a session in maxima
 ;;
-;; 2) we are generally only going to return output from maxima
-;;
-;; 3) we are adding the cmdline header argument
-;;
-;; 4) there are no variables
+;; 2) we are adding the cmdline header argument
 
 ;;; Code:
 (require 'ob)
 
+(defvar org-babel-tangle-lang-exts)
+(add-to-list 'org-babel-tangle-lang-exts '(maxima . max))
+
 (defvar org-babel-default-header-args:maxima '())
 
 (defun org-babel-maxima-expand (body params)
   Expand a block of Maxima code according to its header arguments.
-  body)
+  (let ((vars (mapcar #'cdr (org-babel-get-header params :var
+ (mapconcat 'identity
+		(list
+		 ;; graphic output
+		 (let ((graphic-file (org-babel-maxima-graphical-output-file params)))
+		   (if graphic-file  
+		   (format 
+			set_plot_option ([gnuplot_term, png]); set_plot_option ([gnuplot_out_file, %S]); 
+			graphic-file)
+		 ))
+		 ;; variables
+		 (mapconcat 'org-babel-maxima-var-to-maxima vars \n)
+		 ;; body
+		 body
+		 gnuplot_close ()$)
+		\n)))
 
 (defun org-babel-execute:maxima (body params)
   Execute a block of Maxima entries with org-babel.  This function is
 called by `org-babel-execute-src-block'.
   (message executing Maxima source code block)
-  (let* ((result-params (split-string (or (cdr (assoc :results params)) )))
-	 (cmdline (cdr (assoc :cmdline params)))
-	 (in-file (org-babel-temp-file maxima-))
-	 (cmd (format maxima --very-quiet -r 'batchload(%S)$' %s
-		  in-file cmdline)))
-(with-temp-file in-file (insert body))
-(message cmd)
-((lambda (raw) ;;  | grep -v batch | grep -v 'replaced' | sed '/^$/d' 
-   (mapconcat
-	#'identity
-	(delq nil
-	  (mapcar (lambda (line)
-			(unless (or (string-match batch line)
-(string-match ^rat: replaced .*$ line)
-(= 0 (length line)))
-			  line))
-		  (split-string raw [\r\n]))) \n))
- (org-babel-eval cmd 
+  (let ((result
+	 (let* ((result-params (split-string (or (cdr (assoc :results params)) )))
+		(cmdline (cdr (assoc :cmdline params)))
+		(in-file (org-babel-temp-file maxima- .max))
+		(cmd (format maxima --very-quiet -r 'batchload(%S)$' %s
+			 in-file cmdline)))
+	   (with-temp-file in-file (insert (org-babel-maxima-expand body params)))
+	   (message cmd)
+	   ((lambda (raw) ;;  | grep -v batch | grep -v 'replaced' | sed '/^$/d' 
+	  (mapconcat
+	   #'identity
+	   (delq nil
+		 (mapcar (lambda (line)
+			   (unless (or (string-match batch line)
+	   (string-match ^rat: replaced .*$ line)
+	   (= 0 (length line)))
+ line))
+			 (split-string raw [\r\n]))) \n))
+	(org-babel-eval cmd ) 
+(if (org-babel-maxima-graphical-output-file params) 
+	nil
+  (if (or (member scalar result-params)
+	  (member verbatim result-params)
+	  (member output result-params))
+	  result
+	(let ((tmp-file (org-babel-temp-file maxima-res-)))
+	  (with-temp-file tmp-file (insert result))
+	  (org-babel-import-elisp-from-file tmp-file))
+
 
 (defun org-babel-prep-session:maxima (session params)
   (error Maxima does not support sessions))
 
+(defun org-babel-maxima-var-to-maxima (pair)
+  Convert an elisp val into a string of maxima code specifying a var
+of the same value.
+  (let ((var (car pair))
+(val (cdr pair)))
+(when (symbolp val)
+  (setq val (symbol-name val))
+  (when (= (length val) 1)
+(setq val (string-to-char val
+  (format %S: %s$ var 
+	  (org-babel-maxima-elisp-to-maxima val
+
+(defun org-babel-maxima-graphical-output-file (params)
+  Name of file to which maxima should send graphical output.
+  (and (member graphics (cdr (assq :result-params params)))
+   (cdr (assq :file params
+
+(defun org-babel-maxima-elisp-to-maxima (val)
+  Return a string of maxima code which evaluates to VAL.
+  (if (listp val)
+  (concat [ (mapconcat #'org-babel-maxima-elisp-to-maxima val , ) ])
+(format %s val)))
+
+
 (provide 'ob-maxima)
 
 
-- 
1.7.4.1