From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thorsten Jolitz Subject: How to deal with 'contents' in (derived) exporter backend Date: Mon, 04 Nov 2013 13:30:48 +0100 Message-ID: <87r4awjqmf.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:50165) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VdJJN-0004O6-CZ for emacs-orgmode@gnu.org; Mon, 04 Nov 2013 07:31:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VdJJG-0003Fc-1i for emacs-orgmode@gnu.org; Mon, 04 Nov 2013 07:31:17 -0500 Received: from plane.gmane.org ([80.91.229.3]:60767) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VdJJF-0003FW-RW for emacs-orgmode@gnu.org; Mon, 04 Nov 2013 07:31:09 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1VdJJE-0000iX-27 for emacs-orgmode@gnu.org; Mon, 04 Nov 2013 13:31:08 +0100 Received: from e178061197.adsl.alicedsl.de ([85.178.61.197]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 04 Nov 2013 13:31:08 +0100 Received: from tjolitz by e178061197.adsl.alicedsl.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 04 Nov 2013 13:31:08 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi List, assume I want to derive an exporter backend from ox-org.el, and there are just a few new transcoder functions, so all other elements/object should be exported as Org-syntax (with inherited function `org-org-identity'). Using this example Org-snippet #+begin_src org * A1 Text *A1* ** A2 Text *A2* * B1 Text *B1* ** B2 Text *B2* #+end_src I get something like this if I write a transcoder function for 'headline' ignoring argument 'contents' (don't bother with the details please): #+begin_src emacs-lisp (org-data nil "(headline (title-string \"A1\" alt-title-string \"A1\" category \"tmp5\" level 1 priority nil tags nil todo-keyword nil quotedp nil archivedp nil commentedp nil footnote-secion-p nil)) (headline (title-string \"B1\" alt-title-string \"B1\" category \"tmp5\" level 1 priority nil tags nil todo-keyword nil quotedp nil archivedp nil commentedp nil footnote-secion-p nil)) ") #+end_src Only the two 1st level headlines are successfully transcoded, their content is missing. But when I use something like this in the headline transcode function #+begin_src emacs-lisp (format "(headline %S %s) " [... return headline string ...] contents) #+end_src I get the parse-tree structure as output instead of elements/object in their original Org text syntax as expected: #+begin_src emacs-lisp (org-data nil "(headline (title-string \"A1\" alt-title-string \"A1\" category \"tmp5\" level 1 priority nil tags nil todo-keyword nil quotedp nil archivedp nil commentedp nil footnote-secion-p nil) (section (#(\"Text *A1* \" 0 5 (:parent (paragraph (:begin 6 :end 16 :contents-begin 6 :contents-end 16 :post-blank 0 :post-affiliated 6 :parent (section (:begin 6 :end 16 :contents-begin 6 :contents-end 16 :post-blank 0 :parent (headline (:raw-value \"A1\" :begin 1 :end 32 :pre-blank 0 :contents-begin 6 :contents-end 32 :level 1 :priority nil :tags [...] #+end_src Note that I have a simple filter-function for section that looks like this: #+begin_src emacs-lisp (defun org-iorg-data-filter-section-function (section backend info) (format "(section (%S))" section)) #+end_src I'm sure there is some misunderstanding on my side here. I would expect that all elements/objects inside the section have already been transcoded back to Org-syntax when this filter is applied, so I should not see parse-tree structures in the output. I had a look at other backends for inspiration on how to deal with 'contents' in my headline transcoder function, e.g. #+begin_src emacs-lisp (defun org-html-section (section contents info) [...] ;; Build return value. (format "
\n%s
" class-num (or (org-element-property :CUSTOM_ID parent) section-number) contents))))) #+end_src but that looks to me just how I treated 'contents' above. Any tips would be appreciated. -- cheers, Thorsten