emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] [babel] Idiomatic handling of quotes


From: Thomas S. Dye
Subject: Re: [Orgmode] [babel] Idiomatic handling of quotes
Date: Fri, 18 Dec 2009 08:22:49 -1000

Hi Francesco,

On Dec 17, 2009, at 11:20 PM, Francesco Pizzolante wrote:

Hi Thomas,

In the example below, note that the R representation of the directory listing escapes the quotes in the original and encloses it all in a second set of
quotes, e.g. "\"theta-1.csv\"".

This must come up a lot.  Is there an idiomatic way to change
"\"theta-1.csv\"" to "theta-1.csv" so that it could be assigned to x and the
following statement would yield a valid path?

afile <- paste("r/",x,sep="")

I'm aware the answer might be R code, but it is to tightly tied to org-
babel I figure it makes sense to ask the question here.

I already sent an email related to double quotes in result tables. See the
email hereunder.

In order to get a result table without the double quotes for all texts, I use
the patch enclosed in my email and add the ":results noquotes" header
parameter.

In your example, I would get the following result:

--8<---------------cut here---------------start------------->8---
#+srcname: thetas()
#+begin_src shell :results noquotes
cd r && ls theta*
#+end_src

#+results: thetas
| theta-1.csv   |
| theta-2.csv   |
--8<---------------cut here---------------end--------------->8---

Is this what you need?

Here's the email I sent a few days ago. It contains the patch I use to remove
the double quotes when I need it:

-----------------------------------------------------------------
From: Francesco Pizzolante <address@hidden>
Subject: [Orgmode] [babel] double quotes in tables
To: mailing-list-org-mode <address@hidden>
Date: Mon, 14 Dec 2009 17:18:30 +0100

Hi,

Often, I find useful that babel could generate result tables without the
double quotes (") enclosing all the text values in the cells.

In order to do that, I added a 'noquotes` option to the :results header
argument.

Here's my patch. As I'm not an elisp expert, please tell me if there's a better/safer way to do that or maybe that it already exists an option to do
that...

--8<---------------cut here---------------start------------->8---
diff --git a/contrib/babel/lisp/org-babel.el b/contrib/babel/lisp/ org-babel.el
index 4c9bff5..13c8237 100644
--- a/contrib/babel/lisp/org-babel.el
+++ b/contrib/babel/lisp/org-babel.el
@@ -706,6 +706,9 @@ code ---- the results are extracted in the syntax of the source
          code of the language being evaluated and are added
          inside of a #+BEGIN_SRC block with the source-code
          language set appropriately."
+  (setq outputformat "%S")
+  (if (member "noquotes" result-params)
+      (setq outputformat "%s"))
  (if (stringp result)
      (progn
        (setq result (org-babel-clean-text-properties result))
@@ -739,7 +742,7 @@ code ---- the results are extracted in the syntax of the source
                             (if (and (listp (car result))
                                      (listp (cdr (car result))))
                                 result (list result))
-                            '(:fmt (lambda (cell) (format "%S" cell)))) "\n"))
+                            '(:fmt (lambda (cell) (format outputformat cell)))) 
"\n"))
            (forward-line -1) (org-cycle))
           ((member "file" result-params)
            (insert result))
@@ -827,7 +830,8 @@ parameters when merging lists."
  (let ((results-exclusive-groups
'(("file" "vector" "table" "scalar" "raw" "org" "html" "latex" "code" "pp")
           ("replace" "silent")
-          ("output" "value")))
+          ("output" "value")
+           ("noquotes")))
        (exports-exclusive-groups
         '(("code" "results" "both" "none")))
        params results exports tangle cache vars var ref)
--8<---------------cut here---------------end--------------->8---


This does work for me.  Grazie.

Tom




reply via email to

[Prev in Thread] Current Thread [Next in Thread]