Hi Bastien,
On 07/01/2014 18:31, Bastien wrote:
Daniel Gerber<daniel.g.ger...@gmail.com> writes:
This change in org-babel-python-var-to-python makes python code blocks
accept a string with text properties (as one gets when referring
another code block). I guess there should be something similar for
other languages.
I don't understand why properties would be a problem here.
Can you elaborate a bit on this?
The problem is that formatting as s-expression puts them into python code.
Here is what I want to do.
First edit a query string:
#+RESULTS: query
#+BEGIN_SRC sparql
select *
where { ?x rdf:label "x\\r"@en }
#+END_SRC
(The trick of naming this block with #+results: is so that:
1. org-edit-src-code uses the right mode
2. the code block is not evaluated
3. its body is passed as a string to other code blocks.
For lack of a better idea...)
Use the query string verbatim in another language:
#+NAME: py
#+BEGIN_SRC python :var q=query
# return some_graph.query(q)
return q
#+END_SRC
But now calling py() or tangling would give a syntax error because
#+BEGIN_SRC elisp :var q=query
(org-babel-python-var-to-python q)
#+END_SRC
#+RESULTS:
: ""#("select *
: where { ?x rdf:label \"x\\\\r\"@en }
: " 0 9 (face org-block font-lock-multiline t wrap-prefix #(" " 0 2
(face org-indent)) line-prefix nil font-lock-fontified t fontified t) 9
30 (face org-block font-lock-multiline t wrap-prefix #(" " 0 2 (face
org-indent)) line-prefix nil font-lock-fontified t fontified t) 30 35
(face org-block font-lock-multiline t font-lock-fontified t wrap-prefix
#(" " 0 2 (face org-indent)) line-prefix nil fontified t) 35 40 (face
org-block font-lock-multiline t font-lock-fontified t wrap-prefix #(" "
0 2 (face org-indent)) line-prefix nil fontified t) 40 41 (face
org-block font-lock-multiline t wrap-prefix #(" " 0 2 (face
org-indent)) line-prefix nil font-lock-fontified t fontified t) 41 42
(face org-block font-lock-multiline t wrap-prefix #(" " 0 2 (face
org-indent)) line-prefix nil font-lock-fontified t fontified t))""
If org-babel-python-var-to-python does
#+BEGIN_SRC elisp :var q=query
(format "%S" (substring-no-properties q))
#+END_SRC
#+RESULTS:
: "select *
: where { ?x rdf:label \"x\\\\r\"@en }
: "
then both evaluation and tangling work fine:
#+CALL: py()
#+RESULTS:
: select *
: where { ?x rdf:label "x\\r"@en }
Best,
Daniel