emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Re: [babel] Is ":results output inline" possible
@ 2009-10-20  6:12 emailorama
  0 siblings, 0 replies; 5+ messages in thread
From: emailorama @ 2009-10-20  6:12 UTC (permalink / raw)
  To: emacs-orgmode


Thanks very much for your reply Eric.

    So the ":results org" feature was there all along.
    Searching for "raw" in "org-babel.el" shows it's nicely
    explained in the doc-string for "org-babel-insert-result".
    (maybe I should have done that sooner)

    I also noticed the ":results html" and ":results latex"
    options which look very useful.

    The latex option encloses the output in a
    #+BEGIN_LaTeX ... #+END_LaTeX block, which is nice because
    when the source block is re-executed, the new results
    replace the old results.

 -- Would it be possible to have something like that for "raw"
    or "org" mode?  
    (Maybe that would need a #+BEGIN_org ... #+END_org kind
    of construct.)

    Also, I've been looking at #+lob: which looks like another
    really useful idea, and there are two things I am wondering
    about.

 -- Is it possible to use #+lob: with ":results output org" ?

 -- Is it possible for #+lob: to take a string argument ?
    
    The 4 examples below show things I have tried.
      1. and 2. work fine.  
      3. and 4. are what I can't work out.


Thanks for any ideas you have about these things.

al

--------------------------------------------------
1.  :results output org -> works
--------------------------------------------------
#+srcname: randone
#+begin_src ruby :results output org
description = "lucky"
number = 3
maximum = 100
puts "* Random numbers\n" +
"Here are some #{description} numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+resname: randone
* Random numbers
Here are some lucky numbers: 48, 69, 6.


--------------------------------------------------
2. :results value  -> works with #+lob:
--------------------------------------------------
#+srcname: randtwo(n,max)
#+begin_src ruby :results value
number = n
maximum = max
"* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randtwo(n=3,max=100)

#+resname: randtwo(n=3,max=100)
: * Random numbers
: Here are some random numbers: 14, 77, 75.


--------------------------------------------------
3. :results output org -> doesn't work with #+lob:
--------------------------------------------------
#+srcname: randthree(n,max)
#+begin_src ruby :results output org
number = n
maximum = max
puts "* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randthree(n=3,max=10)

#+resname: randthree(n=3,max=10)
: nil


--------------------------------------------------
4. Not sure how to use string argument with #+lob:
--------------------------------------------------
#+srcname: randfour(n,max,desc)
#+begin_src ruby :results value
description = desc
number = n
maximum = max
"* Random numbers\n" +
"Here are some #{description} numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randfour(n=3,max=100,desc="lucky")

#+resname: randfour(n=3,max=100,desc="lucky")
: randfour





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

* Re: [babel] Is ":results output inline" possible
@ 2009-10-20  6:14 emailorama
  2009-10-20 13:44 ` Dan Davison
  0 siblings, 1 reply; 5+ messages in thread
From: emailorama @ 2009-10-20  6:14 UTC (permalink / raw)
  To: emacs-orgmode


Thanks very much for your reply Eric.

    So the ":results org" feature was there all along.
    Searching for "raw" in "org-babel.el" shows it's nicely
    explained in the doc-string for "org-babel-insert-result".
    (maybe I should have done that sooner)

    I also noticed the ":results html" and ":results latex"
    options which look very useful.

    The latex option encloses the output in a
    #+BEGIN_LaTeX ... #+END_LaTeX block, which is nice because
    when the source block is re-executed, the new results
    replace the old results.

 -- Would it be possible to have something like that for "raw"
    or "org" mode?  
    (Maybe that would need a #+BEGIN_org ... #+END_org kind
    of construct.)

    Also, I've been looking at #+lob: which looks like another
    really useful idea, and there are two things I am wondering
    about.

 -- Is it possible to use #+lob: with ":results output org" ?

 -- Is it possible for #+lob: to take a string argument ?
    
    The 4 examples below show things I have tried.
      1. and 2. work fine.  
      3. and 4. are what I can't work out.


Thanks for any ideas you have about these things.

al

--------------------------------------------------
1.  :results output org -> works
--------------------------------------------------
#+srcname: randone
#+begin_src ruby :results output org
description = "lucky"
number = 3
maximum = 100
puts "* Random numbers\n" +
"Here are some #{description} numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+resname: randone
* Random numbers
Here are some lucky numbers: 48, 69, 6.


--------------------------------------------------
2. :results value  -> works with #+lob:
--------------------------------------------------
#+srcname: randtwo(n,max)
#+begin_src ruby :results value
number = n
maximum = max
"* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randtwo(n=3,max=100)

#+resname: randtwo(n=3,max=100)
: * Random numbers
: Here are some random numbers: 14, 77, 75.


--------------------------------------------------
3. :results output org -> doesn't work with #+lob:
--------------------------------------------------
#+srcname: randthree(n,max)
#+begin_src ruby :results output org
number = n
maximum = max
puts "* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randthree(n=3,max=10)

#+resname: randthree(n=3,max=10)
: nil


--------------------------------------------------
4. Not sure how to use string argument with #+lob:
--------------------------------------------------
#+srcname: randfour(n,max,desc)
#+begin_src ruby :results value
description = desc
number = n
maximum = max
"* Random numbers\n" +
"Here are some #{description} numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randfour(n=3,max=100,desc="lucky")

#+resname: randfour(n=3,max=100,desc="lucky")
: randfour





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

* Re: [babel] Is ":results output inline" possible
  2009-10-20  6:14 [babel] Is ":results output inline" possible emailorama
@ 2009-10-20 13:44 ` Dan Davison
  2009-10-20 15:20   ` Dan Davison
  0 siblings, 1 reply; 5+ messages in thread
From: Dan Davison @ 2009-10-20 13:44 UTC (permalink / raw)
  To: emailorama; +Cc: emacs-orgmode

Hi Al,

emailorama <emailorama@yahoo.com.au> writes:

[...]

>     Also, I've been looking at #+lob: which looks like another
>     really useful idea,

Yes, #+lob calls are the canonical way to "hide source code" in
org-babel; with this approach, source blocks are viewed more as function
definitions with arguments than as executable blocks that produce
output, and the #+lob line is used to "call the function" and actually
do something. There have been a few examples on the list recently where
it would make sense to use #+lob. I've fixed a few things related
to #+lob recently and will post some more documentation on Worg soon.

> and there are two things I am wondering
>     about.
>
>  -- Is it possible to use #+lob: with ":results output org" ?
>
>  -- Is it possible for #+lob: to take a string argument ?

Both these were bugs, which are fixed in my development branch -- they
should be merged into org-core by Eric soon. My output from your
examples is below.

Thanks a lot for the testing.

Dan

>     
>     The 4 examples below show things I have tried.
>       1. and 2. work fine.  
>       3. and 4. are what I can't work out.
>

Here's my output

--8<---------------cut here---------------start------------->8---
* Al tests (emailorama)
--------------------------------------------------
1.  :results output org -> works
--------------------------------------------------
#+srcname: randone
#+begin_src ruby :results output org
description = "lucky"
number = 3
maximum = 100
puts "* Random numbers\n" +
"Here are some #{description} numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+resname: randone
*** Random numbers
Here are some lucky numbers: 15, 52, 93.



--------------------------------------------------
2. :results value  -> works with #+lob:
--------------------------------------------------
#+srcname: randtwo(n,max)
#+begin_src ruby :results value
number = n
maximum = max
"* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randtwo(n=3,max=100)

#+resname: randtwo(n=3,max=100)
: * Random numbers
: Here are some random numbers: 47, 100, 38.




--------------------------------------------------
3. :results output org -> doesn't work with #+lob:
--------------------------------------------------
#+srcname: randthree(n,max)
#+begin_src ruby
number = n
maximum = max
puts "* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randthree(n=3,max=10) :results output org

#+resname: randthree(n=3,max=10)
* Random numbers
Here are some random numbers: 9, 3, 7.


--------------------------------------------------
4. Not sure how to use string argument with #+lob:
--------------------------------------------------
#+srcname: randfour(n,max,desc)
#+begin_src ruby :results value
description = desc
number = n
maximum = max
"* Random numbers\n" +
"Here are some #{description} numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randfour(n=3,max=100,desc="lucky")

#+resname: randfour(n=3,max=100,desc="lucky")
: * Random numbers
: Here are some lucky numbers: 65, 24, 42.
--8<---------------cut here---------------end--------------->8---





> Thanks for any ideas you have about these things.
>
> al
>
> --------------------------------------------------
> 1.  :results output org -> works
> --------------------------------------------------
> #+srcname: randone
> #+begin_src ruby :results output org
> description = "lucky"
> number = 3
> maximum = 100
> puts "* Random numbers\n" +
> "Here are some #{description} numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+resname: randone
> * Random numbers
> Here are some lucky numbers: 48, 69, 6.
>
>
> --------------------------------------------------
> 2. :results value  -> works with #+lob:
> --------------------------------------------------
> #+srcname: randtwo(n,max)
> #+begin_src ruby :results value
> number = n
> maximum = max
> "* Random numbers\n" +
> "Here are some random numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+lob: randtwo(n=3,max=100)
>
> #+resname: randtwo(n=3,max=100)
> : * Random numbers
> : Here are some random numbers: 14, 77, 75.
>
>
> --------------------------------------------------
> 3. :results output org -> doesn't work with #+lob:
> --------------------------------------------------
> #+srcname: randthree(n,max)
> #+begin_src ruby :results output org
> number = n
> maximum = max
> puts "* Random numbers\n" +
> "Here are some random numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+lob: randthree(n=3,max=10)
>
> #+resname: randthree(n=3,max=10)
> : nil
>
>
> --------------------------------------------------
> 4. Not sure how to use string argument with #+lob:
> --------------------------------------------------
> #+srcname: randfour(n,max,desc)
> #+begin_src ruby :results value
> description = desc
> number = n
> maximum = max
> "* Random numbers\n" +
> "Here are some #{description} numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+lob: randfour(n=3,max=100,desc="lucky")
>
> #+resname: randfour(n=3,max=100,desc="lucky")
> : randfour
>
>
>
>       
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

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

* Re: [babel] Is ":results output inline" possible
  2009-10-20 13:44 ` Dan Davison
@ 2009-10-20 15:20   ` Dan Davison
  0 siblings, 0 replies; 5+ messages in thread
From: Dan Davison @ 2009-10-20 15:20 UTC (permalink / raw)
  To: emailorama; +Cc: emacs-orgmode

Dan Davison <davison@stats.ox.ac.uk> writes:

[...]

>>
>>  -- Is it possible to use #+lob: with ":results output org" ?
>>
>>  -- Is it possible for #+lob: to take a string argument ?
>
> Both these were bugs, which are fixed in my development branch -- they
> should be merged into org-core by Eric soon.

Those changes are in the main org git repo now, so your examples should
work. Note that with your third example, the header args need to be
placed on the #+lob line rather than with the source block, so
that #+lob knows that it is to output org code (header args placed
with #+lob are inherited by the referenced source block).

Dan


* test
--------------------------------------------------
3. :results output org -> doesn't work with #+lob:
--------------------------------------------------
#+srcname: randthree(n,max)
#+begin_src ruby
number = n
maximum = max
puts "* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
#+end_src

#+lob: randthree(n=3,max=10) :results output raw

#+resname: randthree(n=3,max=10)
* Random numbers
Here are some random numbers: 5, 1, 10.


> My output from your examples is below.
>
> Thanks a lot for the testing.
>
> Dan
>
>>     
>>     The 4 examples below show things I have tried.
>>       1. and 2. work fine.  
>>       3. and 4. are what I can't work out.
>>
>
> Here's my output
>
> * Al tests (emailorama)
> --------------------------------------------------
> 1.  :results output org -> works
> --------------------------------------------------
> #+srcname: randone
> #+begin_src ruby :results output org
> description = "lucky"
> number = 3
> maximum = 100
> puts "* Random numbers\n" +
> "Here are some #{description} numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+resname: randone
> *** Random numbers
> Here are some lucky numbers: 15, 52, 93.
>
>
>
> --------------------------------------------------
> 2. :results value  -> works with #+lob:
> --------------------------------------------------
> #+srcname: randtwo(n,max)
> #+begin_src ruby :results value
> number = n
> maximum = max
> "* Random numbers\n" +
> "Here are some random numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+lob: randtwo(n=3,max=100)
>
> #+resname: randtwo(n=3,max=100)
> : * Random numbers
> : Here are some random numbers: 47, 100, 38.
>
>
>
>
> --------------------------------------------------
> 3. :results output org -> doesn't work with #+lob:
> --------------------------------------------------
> #+srcname: randthree(n,max)
> #+begin_src ruby
> number = n
> maximum = max
> puts "* Random numbers\n" +
> "Here are some random numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+lob: randthree(n=3,max=10) :results output org
>
> #+resname: randthree(n=3,max=10)
> * Random numbers
> Here are some random numbers: 9, 3, 7.
>
>
> --------------------------------------------------
> 4. Not sure how to use string argument with #+lob:
> --------------------------------------------------
> #+srcname: randfour(n,max,desc)
> #+begin_src ruby :results value
> description = desc
> number = n
> maximum = max
> "* Random numbers\n" +
> "Here are some #{description} numbers: " +
> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
> "."
> #+end_src
>
> #+lob: randfour(n=3,max=100,desc="lucky")
>
> #+resname: randfour(n=3,max=100,desc="lucky")
> : * Random numbers
> : Here are some lucky numbers: 65, 24, 42.
>
>
>
>
>
>> Thanks for any ideas you have about these things.
>>
>> al
>>
>> --------------------------------------------------
>> 1.  :results output org -> works
>> --------------------------------------------------
>> #+srcname: randone
>> #+begin_src ruby :results output org
>> description = "lucky"
>> number = 3
>> maximum = 100
>> puts "* Random numbers\n" +
>> "Here are some #{description} numbers: " +
>> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
>> "."
>> #+end_src
>>
>> #+resname: randone
>> * Random numbers
>> Here are some lucky numbers: 48, 69, 6.
>>
>>
>> --------------------------------------------------
>> 2. :results value  -> works with #+lob:
>> --------------------------------------------------
>> #+srcname: randtwo(n,max)
>> #+begin_src ruby :results value
>> number = n
>> maximum = max
>> "* Random numbers\n" +
>> "Here are some random numbers: " +
>> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
>> "."
>> #+end_src
>>
>> #+lob: randtwo(n=3,max=100)
>>
>> #+resname: randtwo(n=3,max=100)
>> : * Random numbers
>> : Here are some random numbers: 14, 77, 75.
>>
>>
>> --------------------------------------------------
>> 3. :results output org -> doesn't work with #+lob:
>> --------------------------------------------------
>> #+srcname: randthree(n,max)
>> #+begin_src ruby :results output org
>> number = n
>> maximum = max
>> puts "* Random numbers\n" +
>> "Here are some random numbers: " +
>> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
>> "."
>> #+end_src
>>
>> #+lob: randthree(n=3,max=10)
>>
>> #+resname: randthree(n=3,max=10)
>> : nil
>>
>>
>> --------------------------------------------------
>> 4. Not sure how to use string argument with #+lob:
>> --------------------------------------------------
>> #+srcname: randfour(n,max,desc)
>> #+begin_src ruby :results value
>> description = desc
>> number = n
>> maximum = max
>> "* Random numbers\n" +
>> "Here are some #{description} numbers: " +
>> (1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
>> "."
>> #+end_src
>>
>> #+lob: randfour(n=3,max=100,desc="lucky")
>>
>> #+resname: randfour(n=3,max=100,desc="lucky")
>> : randfour
>>
>>
>>
>>       
>>
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Remember: use `Reply All' to send replies to the list.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

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

* Re: [babel] Is ":results output inline" possible
@ 2009-10-23  7:45 emailorama
  0 siblings, 0 replies; 5+ messages in thread
From: emailorama @ 2009-10-23  7:45 UTC (permalink / raw)
  To: emacs-orgmode

>>>  -- Is it possible to use #+lob: with ":results output org" ?
>>>  -- Is it possible for #+lob: to take a string argument ?
>>
>> Both these were bugs, which are fixed in my development branch -- they
>> should be merged into org-core by Eric soon.
>
> Those changes are in the main org git repo now, so your examples should
> work. Note that with your third example, the header args need to be
> placed on the #+lob line rather than with the source block, so
> that #+lob knows that it is to output org code (header args placed
> with #+lob are inherited by the referenced source block).

Hello Dan,

Wow - that was fixed quickly !

org-mode is a great package, and babel and #+lob bring
such nice integration with several useful languages.
I'm probably just beginning to realize the potential.

Thanks very much for your response,

al






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

end of thread, other threads:[~2009-10-23  7:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-20  6:14 [babel] Is ":results output inline" possible emailorama
2009-10-20 13:44 ` Dan Davison
2009-10-20 15:20   ` Dan Davison
  -- strict thread matches above, loose matches on Subject: below --
2009-10-23  7:45 emailorama
2009-10-20  6:12 emailorama

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