Oh! Nevermind. It appears this is invalid beancount syntax. I thought if 
the line did not begin with a date it was ignored, but that doesn't appear 
to be the case.
Oh well. It would be nice to be able to embed Org Tables and such into 
beancount files.

According to the manual, "Any line that does not begin as a valid Beancount 
syntax directive (e.g. with a date) is silently ignored.".

Is there something I'm missing or a work-around for this?

  -k.

On Friday, July 7, 2017 at 7:54:12 AM UTC-4, [email protected] wrote:
>
> I've searched this list and it appears some people use Org Mode for 
> outline hierarchy, I don't see much mention of using the other Org 
> capabilities with beancount.
>
> I've just set up some Org Babel and tables to simplify the process of 
> entering and updating currency positions.
>
> First, a babel bash shell block that converts from one currency to 
> another. The default here is 1 USD to USD, but you can change the "curfrom" 
> and "curto" and "amt" if you want. 
>
> #+NAME: cconv
> #+BEGIN_SRC sh :results output :eval no-export :var amt="1", 
> curfrom="USD", curto="USD"
> val=$(wget -qO- "
> http://www.google.com/finance/converter?a=${amt}&from=${curfrom}&to=${curto}"; 
> | gsed '/res/!d;s/<[^>]*>//g' | cut -d" " -f4)
> echo $val
> #+END_SRC
> #+RESULTS: cconv
> : 1
>
> Then, an inline babel call to test that the function works when passed 
> other arguments
>
> #+CALL: cconv(amt="1", curfrom="USD", curto="CHF")
> #+RESULTS:
> : 0.9622
>
> Then, an Org Table of all of my currencies I would like to track:
>
> #+NAME: currency_table
> | Input | Output |  Value |
> |-------+--------+--------|
> | USD   | DKK    | 6.5135 |
> | USD   | CHF    | 0.9622 |
> | DKK   | CAD    | 0.1992 |
> #+TBLFM: $3='(org-sbe cconv (amt 1) (curfrom '$1) (curto '$2))
>
> Pressing "C-c C-c" on the #+TBLFM line should update the 3rd column with 
> the current conversion rate of each currency.
>
> Finally, another Babel bash shell block that takes the current conversion 
> rate and prints the appropriate beancount lines.
> Note that because we are using NAMED blocks, all of this code can be 
> located anywhere in your document, and the #+RESULTS: prices line located 
> in a separate location, and it will still be updated. Also, "prepend" can 
> be removed if you want to sort by date decreasing.
>
> #+NAME: prices
> #+BEGIN_SRC sh :results output raw prepend :eval no-export :var 
> c=currency_table
> cc=( $c )
> len=$(echo ${#cc[@]})
> for (( i=0; i<$len; i+=3 )); do
>     line=$(echo $c | cut -d" " -f1-3)   # first three
>     c=$(echo $c | cut -d" " -f4-)       # rest of line
>     curin=$(echo $line | cut -d" " -f1) # break out first three
>     curout=$(echo $line | cut -d" " -f2)
>     val=$(echo $line | cut -d" " -f3)
>     echo $(date "+%Y-%m-%d") price $curin \\t\\t\\t $val $curout
> done
> #+END_SRC
> #+RESULTS: prices
> 2017-07-07 price USD 6.5135 DKK
> 2017-07-07 price USD 0.9622 CHF
> 2017-07-07 price DKK 0.1992 CAD
>
>
> Currently this requires evaluating (C-c C-c) the TBLFM and then evaluating 
> the #+NAME:prices code block. I think there is a way to force the code 
> block to update the table when it is evaluated, saving a bit of time, but I 
> am not yet sure how to do that.
>
> I hope this is helpful to someone else,
>
>    -k.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/b6bd803c-d3b0-46a3-8e76-068899359386%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to