Eric Schulte <schulte.e...@gmail.com> writes: > Thorsten Jolitz <tjol...@gmail.com> writes: > >> Eric Abrahamsen <e...@ericabrahamsen.net> writes: >> >>> Thierry Pellé <thierry.pe...@soliavos.fr> writes: >>> >>>> Hi, >>>> I'm seeking how to do something like that >>>> >>>> Let the following text inserted in an org-mode file >>>> >>>> * Mean Calculation >>>> :PROPERTIES: >>>> :VAL1: 5 >>>> :VAL2: 10 >>>> :COEF: 10 >>>> :END: >>>> >>>> I would like to append the result of a computation >>>> like RES=(VAL1*COEF+VAL2)/(COEF+1) >>>> >>>> Something like >>>> * Mean Calculation >>>> ... >>>> :END: >>>> >>>> Mean Calculation=RES (where RES is the value of the result) >>>> >>>> I think to do this with a python script but is there a more org-mode/emacs >>>> method to do it? >>> >>> Sometimes I think it would be nice to have a way to draw property values >>> directly into a babel block, the way you can with table data. Sort of >>> like: >>> >>> * Heading >>> :PROPERTIES: >>> :ID: 3f78f08a-ccca-4fc0-aba9-2a192f7a0e5a >>> :foo: 5 >>> :bar: puppy >>> :END: >>> >>> #+BEGIN_SRC emacs-lisp :var alist=3f78f08a-ccca-4fc0-aba9-2a192f7a0e5a >>> >>> And in the block, the "alist" variable would look like '(:foo 5 :bar >>> "puppy"). >>> >>> What would be even better would be to run a tags search on matching >>> headlines and feed all property drawers into a single block, as a list >>> of alists. Just thinking out loud... >> >> This is probably not really what you want, but at least somehow related. I >> would not know how to do this via source-block arguments, but maybe you can >> use the results of one source-block (that produces the data) as input for >> another source-block that does the real work. >> >> * Heading 1 :match: >> :PROPERTIES: >> :ID: 3f78f08a-ccca-4fc0-aba9-2a192f7a0e5a >> :foo: 5 >> :bar: puppy >> :END: >> >> * Heading 2 >> :PROPERTIES: >> :ID: 3f78f08a-ccca-4fc0-aba9-2a192f7a0e5b >> :foo: 6 >> :bar: yuppy >> :END: >> >> >> * Heading 3 :match: >> :PROPERTIES: >> :ID: 3f78f08a-ccca-4fc0-aba9-2a192f7a0e5c >> :foo: 7 >> :bar: hippie >> :END: >> >> >> #+begin_src emacs-lisp :results raw >> (let ((lst)) >> (org-map-entries >> (lambda () (cons (org-entry-properties) lst)) >> "match" 'file)) >> #+end_src >> >> #+results: >> ((((FILE . /home/tj/News/drafts/drafts/419) (TAGS . :match:) (ALLTAGS >> . :match:) (BLOCKED . ) (ID . 3f78f08a-ccca-4fc0-aba9-2a192f7a0e5a) (foo . 5) >> (bar . puppy) (CATEGORY . 419))) (((FILE . /home/tj/News/drafts/drafts/419) >> (TAGS . :match:) (ALLTAGS . :match:) (BLOCKED . ) (ID . >> 3f78f08a-ccca-4fc0-aba9-2a192f7a0e5c) (foo . 7) (bar . hippie) (CATEGORY . >> 419)))) > > Or maybe something like the following... > > * Mean Calculation > :PROPERTIES: > :VAL1: 5 > :VAL2: 10 > :COEF: 10 > :END: > > #+begin_src python :var props=(mapcar (lambda (p) (list (car p) (cdr p))) > (org-entry-properties)) > return props > #+end_src
This is very cool! Thanks. > #+RESULTS: > | FILE | /tmp/property-computation.org | > | BLOCKED | | > | VAL1 | 5 | > | VAL2 | 10 | > | COEF | 10 | > | CATEGORY | property-computation |