emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* passing the contents of a block as an escaped string
@ 2014-06-24  6:04 Alan Schmitt
  2014-06-24 16:37 ` Charles Berry
  0 siblings, 1 reply; 3+ messages in thread
From: Alan Schmitt @ 2014-06-24  6:04 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 758 bytes --]

Hello,

I'm trying to write some filters from Pygments, and to record what I'm
doing and make my life simpler, I'm doing it in an orgmode buffer. In
that buffer, I have the code I want to highlight in a source block, and
the python code for the Pygments extension in another block. I'm trying
to find out how to pass the escaped code from the source to highlight to
the python buffer.

I tried using noweb, but the expansion is verbatim and python complains
about the line breaks. So I'm wondering if there is a way to:
- pass a source block as an escaped string to another source block, or
- save a source block to a temporary file, and pass the file name to
a second source block.

Thanks,

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: passing the contents of a block as an escaped string
  2014-06-24  6:04 passing the contents of a block as an escaped string Alan Schmitt
@ 2014-06-24 16:37 ` Charles Berry
  2014-06-26  7:27   ` Alan Schmitt
  0 siblings, 1 reply; 3+ messages in thread
From: Charles Berry @ 2014-06-24 16:37 UTC (permalink / raw)
  To: emacs-orgmode

Alan Schmitt <alan.schmitt <at> polytechnique.org> writes:

> 
> Hello,
> 
> I'm trying to write some filters from Pygments, and to record what I'm
> doing and make my life simpler, I'm doing it in an orgmode buffer. In
> that buffer, I have the code I want to highlight in a source block, and
> the python code for the Pygments extension in another block. I'm trying
> to find out how to pass the escaped code from the source to highlight to
> the python buffer.
> 
> I tried using noweb, but the expansion is verbatim and python complains
> about the line breaks. So I'm wondering if there is a way to:
> - pass a source block as an escaped string to another source block, or
> - save a source block to a temporary file, and pass the file name to
> a second source block.
> 


defun a function that formats your src block, then use it in a header

  :var x=(foo "src-block-name")


or maybe wrap (foo ...) in a `format' call or `prin1-to-string' call.


An example is below.

===

Another alternative is to use this idiom (see 14.10 Noweb reference syntax)

   <<code-block-name(optional arguments)>>

where the code-block-name specifies a formatter (in elisp, say) and 
the optional argument is the name of the code block you want to format.

HTH,

Chuck


,----
| #+NAME: prin-block
| #+BEGIN_SRC emacs-lisp :var a="abc" 
|   (defun foo (blk) 
|     (save-excursion
|       (org-babel-goto-named-src-block blk)
|       (nth 1 (org-babel-get-src-block-info 'light))))
| 
| #+END_SRC
| 
| #+NAME: weird-text
| #+BEGIN_SRC python
|   just some plain text;
| 
|   \\ a double slash
| 
|   escape eol \n
|   
|   OK??
| #+END_SRC
| 
| 
| #+BEGIN_SRC python :var a=(foo "weird-text") :results output
| print(a);
| #+END_SRC
| 
| #+RESULTS:
| : just some plain text;
| : 
| : \\ a double slash
| : 
| : escape eol \n
| : 
| : OK??
| 
| #+header: :var a=(prin1-to-string (foo "weird-text")) 
| #+BEGIN_SRC python :results output
| print(a);
| #+END_SRC
| 
| #+RESULTS:
| : "just some plain text;
| : 
| : \\\\ a double slash
| : 
| : escape eol \\n
| : 
| : OK??"
`----

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: passing the contents of a block as an escaped string
  2014-06-24 16:37 ` Charles Berry
@ 2014-06-26  7:27   ` Alan Schmitt
  0 siblings, 0 replies; 3+ messages in thread
From: Alan Schmitt @ 2014-06-26  7:27 UTC (permalink / raw)
  To: Charles Berry; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1208 bytes --]

Hello Charles,

On 2014-06-24 18:37, Charles Berry <ccberry@ucsd.edu> writes:

> ,----
> | #+NAME: prin-block
> | #+BEGIN_SRC emacs-lisp :var a="abc" 
> |   (defun foo (blk) 
> |     (save-excursion
> |       (org-babel-goto-named-src-block blk)
> |       (nth 1 (org-babel-get-src-block-info 'light))))
> | 
> | #+END_SRC
> | 
> | #+NAME: weird-text
> | #+BEGIN_SRC python
> |   just some plain text;
> | 
> |   \\ a double slash
> | 
> |   escape eol \n
> |   
> |   OK??
> | #+END_SRC
> | 
> | 
> | #+BEGIN_SRC python :var a=(foo "weird-text") :results output
> | print(a);
> | #+END_SRC
> | 
> | #+RESULTS:
> | : just some plain text;
> | : 
> | : \\ a double slash
> | : 
> | : escape eol \n
> | : 
> | : OK??
> | 
> | #+header: :var a=(prin1-to-string (foo "weird-text")) 
> | #+BEGIN_SRC python :results output
> | print(a);
> | #+END_SRC
> | 
> | #+RESULTS:
> | : "just some plain text;
> | : 
> | : \\\\ a double slash
> | : 
> | : escape eol \\n
> | : 
> | : OK??"
> `----

Thanks a lot, it works great. I'm now having utf-8, orgmode, and python
problems that I'll explore in another thread.

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-06-26  7:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-24  6:04 passing the contents of a block as an escaped string Alan Schmitt
2014-06-24 16:37 ` Charles Berry
2014-06-26  7:27   ` Alan Schmitt

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).