Hi Thierry

On Thu, Oct 10, 2013 at 8:39 AM, Thierry Pellé
<thierry.pe...@soliavos.fr> wrote:
> After some tests :
> ==> the idea of Michael
>> --------------------------------
>> * Mean Calculation
>>   :PROPERTIES:
>>   :VAL1:     5
>>   :VAL2:     10
>>   :COEF:     10
>>   :END:
>>
>>   Mean Calculation = call_mean() =5.454545454545454=
>>
>> * code :noexport:
>>   #+NAME: mean
>>   #+HEADER: :var val1='nil
>>   #+HEADER: :var val2='nil
>>   #+HEADER: :var coef='nil
>>   #+BEGIN_SRC emacs-lisp :exports none
>>     (setq
>>      val1 (string-to-number (org-entry-get
>>                              org-babel-current-src-block-location "VAL1" t))
>>      val2 (string-to-number (org-entry-get
>>                              org-babel-current-src-block-location "VAL2" t))
>>      coef (string-to-number (org-entry-get
>>                              org-babel-current-src-block-location "COEF" t)))
>>     (/ (+ (* val1 coef) val2) (+ coef 1.0))
>>   #+END_SRC
>> --------------------------------
>
> give an error ( "Symbol's value as variable is void:
> org-babel-current-src-block-location")

This I would expect from an org-version older than 8.1. Check

    C-h v org-babel-current-src-block-location
    M-x org-version

But if you did not change the version there might be some problem
before the first loading of ob-core.el. If you can reproduce it, maybe
with a fresh started Emacs, I hope that someone more familiar with
autoload etc. than me can help.

> ==> After some tests, it works in changing the "setq" part as
>  val1 (or val1 (string-to-number
>             (org-entry-get org-babel-current-src-block-location "VAL1" t)
>                 ))

This does still not deal with all cases. As you seem to dive deeper
please forget my simplified version posted earlier and see
testing/examples/babel.org.

> I can't figure out why...

See the attached patch that adds comments to
testing/examples/babel.org for the two "or" and more.

CCed Eric Schulte who I would like to ask to review and apply the patch.

> ==> I will try with python...

Start from the shell example in testing/examples/babel.org

Did you check if you need the t or nil for org-entry-get?

Michael
From 0b7caf6adfcab1a6ad2b1aa330e7bd15c3be33d3 Mon Sep 17 00:00:00 2001
From: Michael Brand <michael.ch.br...@gmail.com>
Date: Thu, 10 Oct 2013 11:02:19 +0200
Subject: [PATCH] Babel: add comments to ERT for reading properties

* testing/examples/babel.org (use case of reading entry properties):
Add comments to function definitions.
---
 testing/examples/babel.org | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/testing/examples/babel.org b/testing/examples/babel.org
index b1f1702..5c71834 100644
--- a/testing/examples/babel.org
+++ b/testing/examples/babel.org
@@ -413,6 +413,9 @@ Note: Just export of a property can be done with a macro: 
{{{property(a)}}}.
 
 **** function definition
 
+comments for ":var":
+- The "or" is to deal with a property not present.
+- The t is to get property inheritance.
 #+NAME: src_block_location_shell
 #+HEADER: :var a=(or (org-entry-get org-babel-current-src-block-location "a" 
t) "0")
 #+HEADER: :var b=(or (org-entry-get org-babel-current-src-block-location "b" 
t) "0")
@@ -433,6 +436,11 @@ Note: Just export of a property can be done with a macro: 
{{{property(a)}}}.
 #+HEADER: :var e='nil
 #+BEGIN_SRC emacs-lisp :exports results
   (setq
+   ;; - The first `or' together with ":var <var>='nil' is to check for
+   ;;   a value bound from an optional call argument, in the examples
+   ;;   here: c=5, e=6
+   ;; - The second `or' is to deal with a property not present
+   ;; - The t is to get property inheritance
    a (or a (string-to-number
             (or (org-entry-get org-babel-current-src-block-location "a" t)
                 "0")))
-- 
1.7.12.4 (Apple Git-37)

Reply via email to