emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Christopher Allan Webber <cwebber@dustycloud.org>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Org-babel `:hlines yes` no longer working for python
Date: Sat, 26 Jun 2010 15:12:35 -0500	[thread overview]
Message-ID: <87d3vd1rkc.fsf@dustycloud.org> (raw)
In-Reply-To: <87bpaxbu2w.fsf@gmail.com> (Eric Schulte's message of "Sat, 26 Jun 2010 10:08:07 -0700")

Hey Eric,

Thanks for the super helpful reply!

Out of curiosity, is it likely that we will ever get hline support in
Python and etc?  I've been pondering how it might be done, and maybe it
could be like this, using a '|-' string instead of a list for the row:

[['a', 'b', 'c'], '|-', ['d', 'e', 'f'], ['g', 'h', 'i']]

Which would produce:

| a | b | c |
|---+---+---|
| d | e | f |
| g | h | i |

Alternately maybe the same thing could be done by abusing None:

[['a', 'b', 'c'], None, ['d', 'e', 'f'], ['g', 'h', 'i']]

Thoughts?
 - cwebb

"Eric Schulte" <schulte.eric@gmail.com> writes:

> Hi Christopher,
>
> Thanks for pointing this out, this is an error in the documentation,
> which I will update.  The code you posted should generate the error you
> have received.
>
> Currently the only language which can handle hlines is emacs-lisp, all
> other languages will result in errors like the one you pasted below.
> That's not to say that it wouldn't be possible to add hline handling to
> other languages, or to maybe do something tricky like session-based
> evaluation in which an `hlines' variable was pre-initialized to some
> value, but I digress.
>
> Note that it *is* possible to have hlines in the output, using colnames,
> e.g.
>
>
> --8<---------------cut here---------------start------------->8---
> #+tblname: A
> | a | b | c |
> |---+---+---|
> | d | e | f |
> | g | h | i |
>
> #+begin_src python :var tab=A :colnames yes
> return [[val + '*' for val in row] for row in tab]
> #+end_src
>
> #+results:
> | a  | b  | c  |
> |----+----+----|
> | d* | e* | f* |
> | g* | h* | i* |
> --8<---------------cut here---------------end--------------->8---
>
> which works because the hline, and the column names, are never made
> available to python, rather Babel holds onto them and then re-applies
> them to the source block's output.
>
> or even to have an elisp block add hlines to your results
>
>
> --8<---------------cut here---------------start------------->8---
> #+tblname: many-cols
> | a | b | c |
> |---+---+---|
> | d | e | f |
> |---+---+---|
> | g | h | i |
>
> #+source: echo-table
> #+begin_src python :var tab=many-cols
>   return tab
> #+end_src
>
> #+begin_src emacs-lisp :var table=echo-table
>   (butlast (apply #'append (mapcar (lambda (el) (list el 'hline)) table)))
> #+end_src
>
> #+results:
> | a | b | c |
> |---+---+---|
> | d | e | f |
> |---+---+---|
> | g | h | i |
> --8<---------------cut here---------------end--------------->8---
>
> Thanks for pointing this out!
>
> Best -- Eric
>
> Christopher Allan Webber <cwebber@dustycloud.org> writes:
>
>> Hello all,
>>
>> I was going through the tutorial and testing the :hlines yes feature as
>> described in the info manual.  Unfortunately, the example given no
>> longer seems to work for python:
>>
>> #+tblname: many-cols
>> | a | b | c |
>> |---+---+---|
>> | d | e | f |
>> |---+---+---|
>> | g | h | i |
>>
>> #+source: echo-table
>> #+begin_src python :var tab=many-cols :hlines yes
>>   return tab
>> #+end_src
>>
>> #+results: echo-table
>> | a | b | c |
>> | d | e | f |
>> | g | h | i |
>>
>> In the buffer *Org-Babel Error Output* I see:
>>
>> Traceback (most recent call last):
>>   File "<stdin>", line 6, in <module>
>>   File "<stdin>", line 3, in main
>> NameError: global name 'hline' is not defined
>>
>> In emacs-lisp this still seems to work though.  But I also see that in
>> emacs lisp hlines are represented by the hline symbol.  I'm guessing
>> that the python equivalent was trying to do the same thing, but no hline
>> variable exists in python?
>>
>> Thanks!
>>  - cwebb
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Please use `Reply All' to send replies to the list.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

  reply	other threads:[~2010-06-26 20:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-26 14:20 Org-babel `:hlines yes` no longer working for python Christopher Allan Webber
2010-06-26 17:08 ` Eric Schulte
2010-06-26 20:12   ` Christopher Allan Webber [this message]
2010-06-26 20:45     ` Eric Schulte
2010-06-27  1:59       ` Christopher Allan Webber
2010-06-27 23:43         ` Eric Schulte
2010-06-28 17:53           ` Christopher Allan Webber
2010-06-28 18:17             ` Eric Schulte
2010-06-28 18:58               ` Christopher Allan Webber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d3vd1rkc.fsf@dustycloud.org \
    --to=cwebber@dustycloud.org \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).