emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Preventing RESULTS from being formatted as org table [ob-awk]
@ 2016-06-12  6:46 Kaushal Modi
  2016-06-12  6:59 ` Kaushal Modi
  0 siblings, 1 reply; 9+ messages in thread
From: Kaushal Modi @ 2016-06-12  6:46 UTC (permalink / raw)
  To: emacs-org list, eschulte

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

Hi,

I am running the latest builds of emacs-25 branch and org master branch.

I used ob-awk for the first time today and was surprised to see that the
#+RESULTS: were displayed as org tables. I do not know if that is due to
ob-awk or ob-core and so am posting it here.

Here is the minimum working example:

(1) Launch emacs -Q
(2) Create a test.txt file with the below contents (without the ===== lines
of course):

===== test.txt =====
emacs    25.0.95
org-mode 8.3.4
=====

(3) Eval (require 'ob-awk)
(4) Create this test.org file

===== test.org =====
#+BEGIN_SRC awk :in-file test.txt :exports both
{ print "My", $1, "version is", $2, "."}
#+END_SRC
=====

(5) Now with point in that src block, hit C-c C-c, answer "yes" to the
babel eval query, and you will get the below result!

#+RESULTS:
| My | emacs    | version | is | 25.0.95 | . |
| My | org-mode | version | is |   8.3.4 | . |

So how can I generate the result as one would normally see by running awk
in the terminal, without the additional org-table pipe characters?
-- 

-- 
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 1725 bytes --]

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12  6:46 Preventing RESULTS from being formatted as org table [ob-awk] Kaushal Modi
@ 2016-06-12  6:59 ` Kaushal Modi
  2016-06-12  7:05   ` Kaushal Modi
  0 siblings, 1 reply; 9+ messages in thread
From: Kaushal Modi @ 2016-06-12  6:59 UTC (permalink / raw)
  To: emacs-org list, eschulte

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

Bummer, found it; needed " :results raw" header arg

On Sun, Jun 12, 2016 at 2:46 AM Kaushal Modi <kaushal.modi@gmail.com> wrote:

> Hi,
>
> I am running the latest builds of emacs-25 branch and org master branch.
>
> I used ob-awk for the first time today and was surprised to see that the
> #+RESULTS: were displayed as org tables. I do not know if that is due to
> ob-awk or ob-core and so am posting it here.
>
> Here is the minimum working example:
>
> (1) Launch emacs -Q
> (2) Create a test.txt file with the below contents (without the =====
> lines of course):
>
> ===== test.txt =====
> emacs    25.0.95
> org-mode 8.3.4
> =====
>
> (3) Eval (require 'ob-awk)
> (4) Create this test.org file
>
> ===== test.org =====
> #+BEGIN_SRC awk :in-file test.txt :exports both
> { print "My", $1, "version is", $2, "."}
> #+END_SRC
> =====
>
> (5) Now with point in that src block, hit C-c C-c, answer "yes" to the
> babel eval query, and you will get the below result!
>
> #+RESULTS:
> | My | emacs    | version | is | 25.0.95 | . |
> | My | org-mode | version | is |   8.3.4 | . |
>
> So how can I generate the result as one would normally see by running awk
> in the terminal, without the additional org-table pipe characters?
> --
>
> --
> Kaushal Modi
>
-- 

-- 
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 2253 bytes --]

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12  6:59 ` Kaushal Modi
@ 2016-06-12  7:05   ` Kaushal Modi
  2016-06-12 16:30     ` Kaushal Modi
  0 siblings, 1 reply; 9+ messages in thread
From: Kaushal Modi @ 2016-06-12  7:05 UTC (permalink / raw)
  To: emacs-org list, eschulte

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

Correction: ":results verbatim"

On Sun, Jun 12, 2016 at 2:59 AM Kaushal Modi <kaushal.modi@gmail.com> wrote:

> Bummer, found it; needed " :results raw" header arg
>
> On Sun, Jun 12, 2016 at 2:46 AM Kaushal Modi <kaushal.modi@gmail.com>
> wrote:
>
>> Hi,
>>
>> I am running the latest builds of emacs-25 branch and org master branch.
>>
>> I used ob-awk for the first time today and was surprised to see that the
>> #+RESULTS: were displayed as org tables. I do not know if that is due to
>> ob-awk or ob-core and so am posting it here.
>>
>> Here is the minimum working example:
>>
>> (1) Launch emacs -Q
>> (2) Create a test.txt file with the below contents (without the =====
>> lines of course):
>>
>> ===== test.txt =====
>> emacs    25.0.95
>> org-mode 8.3.4
>> =====
>>
>> (3) Eval (require 'ob-awk)
>> (4) Create this test.org file
>>
>> ===== test.org =====
>> #+BEGIN_SRC awk :in-file test.txt :exports both
>> { print "My", $1, "version is", $2, "."}
>> #+END_SRC
>> =====
>>
>> (5) Now with point in that src block, hit C-c C-c, answer "yes" to the
>> babel eval query, and you will get the below result!
>>
>> #+RESULTS:
>> | My | emacs    | version | is | 25.0.95 | . |
>> | My | org-mode | version | is |   8.3.4 | . |
>>
>> So how can I generate the result as one would normally see by running awk
>> in the terminal, without the additional org-table pipe characters?
>> --
>>
>> --
>> Kaushal Modi
>>
> --
>
> --
> Kaushal Modi
>
-- 

-- 
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 2744 bytes --]

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12  7:05   ` Kaushal Modi
@ 2016-06-12 16:30     ` Kaushal Modi
  2016-06-12 18:22       ` Thomas S. Dye
  0 siblings, 1 reply; 9+ messages in thread
From: Kaushal Modi @ 2016-06-12 16:30 UTC (permalink / raw)
  To: emacs-org list, eschulte

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

Hi all,

I learnt that I need to have ":results verbatim" as a header argument for
awk source blocks. But I don't understand why I need that in the first
place.

The default value of :results is replace. Then why is it converting the awk
results to org tables?

Thanks.

Kaushal

> --

-- 
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 708 bytes --]

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12 16:30     ` Kaushal Modi
@ 2016-06-12 18:22       ` Thomas S. Dye
  2016-06-12 18:41         ` Kaushal Modi
  0 siblings, 1 reply; 9+ messages in thread
From: Thomas S. Dye @ 2016-06-12 18:22 UTC (permalink / raw)
  To: Kaushal Modi; +Cc: emacs-org list, eschulte

Aloha Kaushal,

Kaushal Modi writes:

> Hi all,
>
> I learnt that I need to have ":results verbatim" as a header argument for awk
> source blocks. But I don't understand why I need that in the first place.
>
> The default value of :results is replace. Then why is it converting the awk
> results to org tables?

There are four classes of :results header arguments.  :results replace
refers to how the results are handled.  :results verbatim refers to the
type of result returned.

hth,
Tom

-- 
Thomas S. Dye
http://www.tsdye.com

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12 18:22       ` Thomas S. Dye
@ 2016-06-12 18:41         ` Kaushal Modi
  2016-06-12 19:29           ` Thomas S. Dye
  0 siblings, 1 reply; 9+ messages in thread
From: Kaushal Modi @ 2016-06-12 18:41 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: emacs-org list, eschulte

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

On Sun, Jun 12, 2016 at 2:22 PM Thomas S. Dye <tsd@tsdye.com> wrote:

> Aloha Kaushal,
>
> There are four classes of :results header arguments.  :results replace
> refers to how the results are handled.  :results verbatim refers to the
> type of result returned.
>

Hi Thomas,

Yes, I learned that from the org info manual. But it is still confusing
because in the "Type" subsection in "(org) results" info node, it says:

> The following options are mutually exclusive and specify what type of
results the code block will return.  By default, results are inserted as
either a table or scalar depending on their value.

So what determines if the results should be table formatted or kept
verbatim (scalar)?
-- 

-- 
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 1245 bytes --]

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12 18:41         ` Kaushal Modi
@ 2016-06-12 19:29           ` Thomas S. Dye
  2016-06-12 21:02             ` Charles C. Berry
  0 siblings, 1 reply; 9+ messages in thread
From: Thomas S. Dye @ 2016-06-12 19:29 UTC (permalink / raw)
  To: Kaushal Modi; +Cc: emacs-org list, eschulte

Aloha Kaushal,

Kaushal Modi writes:

> On Sun, Jun 12, 2016 at 2:22 PM Thomas S. Dye <tsd@tsdye.com> wrote:
>
>     Aloha Kaushal,
>
>     There are four classes of :results header arguments. :results replace
>     refers to how the results are handled. :results verbatim refers to the
>     type of result returned.
>
>
> Hi Thomas,
>
> Yes, I learned that from the org info manual. But it is still confusing because
> in the "Type" subsection in "(org) results" info node, it says:
>
>> The following options are mutually exclusive and specify what type of
> results the code block will return. By default, results are inserted as
> either a table or scalar depending on their value.
>
> So what determines if the results should be table formatted or kept verbatim
> (scalar)?
> --

I think I'm correct to say that by default a single value result is
output as a scalar, and everything else is converted to an Org mode
table.

hth,
Tom

-- 
Thomas S. Dye
http://www.tsdye.com

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12 19:29           ` Thomas S. Dye
@ 2016-06-12 21:02             ` Charles C. Berry
  2016-06-13 14:12               ` Kaushal Modi
  0 siblings, 1 reply; 9+ messages in thread
From: Charles C. Berry @ 2016-06-12 21:02 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: emacs-org list, eschulte, Kaushal Modi

On Sun, 12 Jun 2016, Thomas S. Dye wrote:

> Aloha Kaushal,
>
> Kaushal Modi writes:
>

[deleted]

>>
>> So what determines if the results should be table formatted or kept verbatim
>> (scalar)?
>> --
>
> I think I'm correct to say that by default a single value result is
> output as a scalar, and everything else is converted to an Org mode
> table.
>

TL;DR: That is almost correct. `:post' header arg gives fine control of 
formatting if needed.

`org-babel-insert-result' formats anything that isn't a string or a list 
using "%S". Then it tries hard to turn a list into a "table". Lists that 
cannot be made into tables are formatted as strings with "%s\n". However, 
various languages have their own formatting principles, so what 
`org-babel-insert-result' gets as the `result' is a bit idiosyncratic.

You can get a deeper look at the `result' by pretty printing it with the 
aid of a :post header arg. Example:


#+NAME: I-feel-pretty
#+BEGIN_SRC emacs-lisp :results pp
*this*
#+END_SRC

This elisp list is not revised:

#+BEGIN_SRC emacs-lisp :post I-feel-pretty
'(a b c (d . e))
#+END_SRC

#+RESULTS:
: (a b c
:    (d . e))


But R turns its list into an R data.frame and then into a elisp list with 
an element for each row:

#+BEGIN_SRC R :post I-feel-pretty
list(a="a",b="b", c="c", d=c("d", "e"))
#+END_SRC

#+RESULTS:
: (("a" "b" "c" "d")
:  ("a" "b" "c" "e"))

HTH,

Chuck

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

* Re: Preventing RESULTS from being formatted as org table [ob-awk]
  2016-06-12 21:02             ` Charles C. Berry
@ 2016-06-13 14:12               ` Kaushal Modi
  0 siblings, 0 replies; 9+ messages in thread
From: Kaushal Modi @ 2016-06-13 14:12 UTC (permalink / raw)
  To: Charles C. Berry, Thomas S. Dye; +Cc: emacs-org list, eschulte

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

Hi Charles, Thomas,

Thank you for the replies. They were very useful.

I learned about :post for the first time. That minimal example worked
great. Earlier I was confused about "*this*", but then from Info node
"(org) post", I learned that it's a special variable for :post.

For now, ":results verbatim" does the job for me for awk source blocks. But
:post looks like a very powerful generic solution. With your reply, I at
least tried it out and I will keep that in mind for when I might need to
use it in future.

Kaushal

On Sun, Jun 12, 2016 at 5:02 PM Charles C. Berry <ccberry@ucsd.edu> wrote:

> TL;DR: That is almost correct. `:post' header arg gives fine control of
> formatting if needed.
>
> `org-babel-insert-result' formats anything that isn't a string or a list
> using "%S". Then it tries hard to turn a list into a "table". Lists that
> cannot be made into tables are formatted as strings with "%s\n". However,
> various languages have their own formatting principles, so what
> `org-babel-insert-result' gets as the `result' is a bit idiosyncratic.
>
> You can get a deeper look at the `result' by pretty printing it with the
> aid of a :post header arg. Example:
>
>
> #+NAME: I-feel-pretty
> #+BEGIN_SRC emacs-lisp :results pp
> *this*
> #+END_SRC
>
> This elisp list is not revised:
>
> #+BEGIN_SRC emacs-lisp :post I-feel-pretty
> '(a b c (d . e))
> #+END_SRC
>
> #+RESULTS:
> : (a b c
> :    (d . e))
>


> On Sun, 12 Jun 2016, Thomas S. Dye wrote:
>  I think I'm correct to say that by default a single value result is
>  output as a scalar, and everything else is converted to an Org mode
>  table.
>
-- 

-- 
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 2390 bytes --]

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

end of thread, other threads:[~2016-06-13 14:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-12  6:46 Preventing RESULTS from being formatted as org table [ob-awk] Kaushal Modi
2016-06-12  6:59 ` Kaushal Modi
2016-06-12  7:05   ` Kaushal Modi
2016-06-12 16:30     ` Kaushal Modi
2016-06-12 18:22       ` Thomas S. Dye
2016-06-12 18:41         ` Kaushal Modi
2016-06-12 19:29           ` Thomas S. Dye
2016-06-12 21:02             ` Charles C. Berry
2016-06-13 14:12               ` Kaushal Modi

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).