abonnements <abonneme...@thierry-pelle.eu> writes:

> Hi, thank you for your answer.
>
> Your solution is OK but only for the example I gave (2 or 3
> results). In practice I have about 10 results and the number of them
> may be variable...  Furthermore :vars does not work on my version (I
> must use :var x=A :var y=B)...

:vars was just a typo then ....

#+NAME: A
#+BEGIN_SRC emacs-lisp :results raw
 (+ 2 2)
#+END_SRC

#+results: A
4

#+NAME: B
#+BEGIN_SRC emacs-lisp :results raw
 (/ 2 2)
#+END_SRC

#+results: B
1

#+BEGIN_SRC emacs-lisp
  (org-element-map (org-element-parse-buffer) 'src-block
    (lambda (--block)
      (let ((nm (org-element-property :name --block)))
        (when nm
          (let ((val (org-element-property :value --block)))
            (list nm (eval (car (read-from-string val)))))))))
#+END_SRC

#+results:
| A | 4 |
| B | 1 |


> Ta.
> Thierry
>  
> Hello,
>
>> I have somethink like that
>>
>> #+call: gen(A)
>> #+results: A
>> : 10
>>
>> #+call: gen(B)
>> #+results: B
>> : 20
>>
>> Is there a simple mean to aggregate the results in a table, i.e to get
>> | A | 10 |
>> | B | 20 |
>>
>> I think some lisp can do that but as a beginner... but as I want to 
>> learn you can suggest a somewhat complicated solution or a simple idea.
>> Thanks.
>
> you could define a 3rd block C that takes the results from block A and B
> as variable via :vars x=A y=B (A and B must be named blocks for this,
> use a #+NAME: A line) and then do (list A x B y) in block C and use the
> :results format that outputs a list as a table (often it is the default,
> otherwise try :results table or so).

-- 
cheers,
Thorsten


Reply via email to