code/org
2024-02-27 10:32:29 -05:00
..
README.org Add org/README.org 2024-02-27 10:32:29 -05:00

Here is an example of how I was using org-babel with babashka to generate the command flags needed by [invoice](https://github.com/maaslalani/invoice)

#+NAME: table-of-data
| Transaction Date | Post Date  | Description                      | Category  | Type |   Amount | Memo |
|------------------+------------+----------------------------------+-----------+------+----------+------|
| 12/01/2023       | 12/02/2023 | Big Expense Number 1             | Shopping  | Sale | -2414.73 |      |
| 12/02/2023       | 12/03/2023 | Some Other Expense               | Personal  | Sale |   -95.00 |      |
| 12/03/2023       | 12/04/2023 | This Expense You Don't Recognize | Groceries | Sale |   -20.82 |      |

#+NAME: table-to-lines
#+begin_src clojure :colnames no :var input=table-of-data :exports results :results output
  (let [[header & data] input
        rows            (->> data
                             (reduce (fn [state row]
                                       (conj state
                                             (zipmap header
                                                     row)))
                                     []))]
    (doseq [{:strs [Description Amount]} (butlast rows)]
      (println (format "--item \"%s\" --quantity 1 --rate %.2f \\"
                       Description Amount)))
    (let [{:strs [Description Amount]} (last rows)]
      (print (format "--item \"%s\" --quantity 1 --rate %.2f \\"
                     Description Amount))))
#+end_src

#+RESULTS:
: --item "Big Expense Number 1" --quantity 1 --rate -2414.73 \
: --item "Some Other Expense" --quantity 1 --rate -95.00 \
: --item "This Expense You Don't Recognize" --quantity 1 --rate -20.82 \