Hi Al, emailorama <emailor...@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 _______________________________________________ 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