From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?S=C3=A9bastien_Vauban?= Subject: Re: Org-Babel and Ledger Date: Thu, 12 Aug 2010 13:45:33 +0200 Message-ID: <87vd7gyrz6.fsf@mundaneum.com> References: <87eiemsk0m.fsf@mundaneum.com> <87fwz2b634.fsf@pellet.net> <87tyng66ja.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org-mXXj517/zsQ@public.gmane.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org-mXXj517/zsQ@public.gmane.org To: emacs-orgmode-mXXj517/zsQ@public.gmane.org Hi Eric(s), >>> As you can see, the tables are completely wrongly made, because they're >>> based on spaces ("=C3=A0 la Awk") and not on fixed position of fields (= "=C3=A0 la >>> Cut"). >>> >>> What can I do about this? >>> >>> - Post-process every ledger command with some awk or cut command that w= ill >>> do whatever is needed >>> >>> - Exploit the CSV export format (never tried, don't have Ledger 3 >>> installed yet -- and I'm also using hledger...) >> >> Couldn't you use ledger's format strings for fine-tuned control of the >> command output? I don't know how you're snarfing the output, but it seems >> like you could using formatting to produce something that already looks >> very much like an org table, or perhaps CSV. That anser is not really applicable in my case, as I would like to use at least `ledger' and `hledger' for different reports, and they don't share the same exporting capabilities. Plus the problem would come back for any other command-line tool... > Many languages import tabular contents into elisp tables which are then > inserted into Org-mode buffers as Org-formatted tables. This should be > possible by replacing the call to `buffer-string' at the end of the > `org-babel-execute:ledger' function with something analogous to the > following (copied from ob-sqlite.el). > > (if (or (member "scalar" result-params) > (member "html" result-params) > (member "code" result-params) > (equal (point-min) (point-max))) > (buffer-string) > (org-table-convert-region (point-min) (point-max)) That's, then, the interesting line for me... > (org-babel-sqlite-table-or-scalar > (org-babel-sqlite-offset-colnames > (org-table-to-lisp) headers-p))) > > I would recommend this approach over shell-script post-processing. That seems not to work for me, as input data is, for example: --8<---------------cut here---------------start------------->8--- 09-Aug-21 CHEQUE : 9953055 Expenses:Unknown = 166.70 EUR 166.70 EUR 09-Sep-17 CHEQUE : 7691785 Expenses:Unknown = 100.00 EUR 266.70 EUR 09-Oct-16 REMISE CHEQUE N 8686318 001 105 Expenses:Unknown = -525.00 EUR -258.30 EUR --8<---------------cut here---------------end--------------->8--- and as =3Dorg-table-convert-region=3D can't convert fixed positioned fields (when SPC are used instead of TAB): --8<---------------cut here---------------start------------->8--- (org-table-convert-region beg0 end0 &optional separator) Convert region to a table. The region goes from beg0 to end0, but these borders will be moved slightly, to make sure a beginning of line in the first line is included. separator specifies the field separator in the lines. It can have the following values: '(4) Use the comma as a field separator '(16) Use a TAB as field separator integer When a number, use that many spaces as field separator nil When nil, the command tries to be smart and figure out the separator in the following way: - when each line contains a TAB, assume TAB-separated material - when each line contains a comma, assume CSV material - else, assume one or more SPACE characters as separator. --8<---------------cut here---------------end--------------->8--- Should that function be smarter, or do I still need pre-processing, then? Thanks for your comments... Best regards, Seb --=20 S=C3=A9bastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode