From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rasmus Subject: Re: ox-publish export subtree scopes? Date: Tue, 19 Dec 2017 12:53:06 +0100 Message-ID: <87ind3szml.fsf@gmx.us> References: <86fu8w5oyf.fsf@gmail.com> <87fu8unqut.fsf@hyperbola.info> <86wp25kfgb.fsf@gmail.com> <87o9nd73ww.fsf@gmx.us> <87d13n9hpf.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41435) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eRGSZ-0008G9-0R for emacs-orgmode@gnu.org; Tue, 19 Dec 2017 06:53:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eRGSV-0007Dg-1M for emacs-orgmode@gnu.org; Tue, 19 Dec 2017 06:53:23 -0500 Received: from [195.159.176.226] (port=45093 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eRGSU-0007CV-Qx for emacs-orgmode@gnu.org; Tue, 19 Dec 2017 06:53:18 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1eRGQP-0004K6-Vt for emacs-orgmode@gnu.org; Tue, 19 Dec 2017 12:51:09 +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" To: emacs-orgmode@gnu.org Narendra Joshi writes: > Kaushal Modi writes: > >> On Tue, Dec 5, 2017 at 7:31 AM Rasmus wrote: >> >> If you have any suggestions on how to improve ox-publish to >> better suit >> please share them. >> >> >> Hello Rasmus, >> >> I'd like to make the ox-publish based exporting working for my >> ox-hugo[1] package but so far have been unsuccessful. >> >> The main reason is that org-foo-publish-to-bar functions take only >> plist, filename and pub-dir as args. I miss the ability to first pick >> a subtree scope from the specific Org file and then export only that. >> Is something like that already possible which I am missing? >> >> In addition, when given a file name, I need to auto-decide (i) if I >> need to cycle through "valid" subtrees (see more about that below) >> and export those subtrees,or (ii) export the whole Org file if # >> +TITLE is present. >> >> So I ended up with org-hugo-export-wim-to-md[2] ("wim" stands for >> What I Mean). Below is a snippet from its doc string: >> >> ===== >> - If the current subtree has the \"EXPORT_FILE_NAME\" property, >> export >>   that subtree. >> - If the current subtree doesn't have that property, but one of its >>   parent subtrees has, then export from that subtree's scope. >> - If none of the subtrees have that property (or if there are no Org >>   subtrees at all), but the Org #+TITLE keyword is present, >>   export the whole Org file as a post with that title (calls >>   `org-hugo-export-to-md' with its SUBTREEP argument set to nil). >> >> - If ALL-SUBTREES is non-nil, export all valid Hugo post subtrees >>   \(that have the \"EXPORT_FILE_NAME\" property) in the current file >>   to multiple Markdown posts. >> - If ALL-SUBTREES is non-nil, and again if none of the subtrees have >>   that property (or if there are no Org subtrees), but the Org # >> +TITLE >>   keyword is present, export the whole Org file. >> >> - If the file neither has valid Hugo post subtrees, nor has the >>   #+TITLE present, throw a user error.  If NOERROR is non-nil, use >>   `message' to display the error message instead of signaling a user >>   error. >> ===== >> >> And I use a Makefile[3] to find all Org files in the current directly >> and call the above function, which then does the right thing as >> explained in the conditions above. >> >> Is there any way to call org-publish to export either the entire file >> or cycle through the file and export the subtrees matching a >> predicate? >> >> [1]: https://github.com/kaushalmodi/ox-hugo >> [2]: https://github.com/kaushalmodi/ox-hugo/blob/ >> 832a5d7424013f60b77354ec28613440afac0269/ox-hugo.el#L2424-L2448 >> [3]: https://github.com/kaushalmodi/ox-hugo/blob/master/Makefile >> -- >> >> Kaushal Modi > > I have faced something similar (or maybe not very similar) while using > `org-publish' for my static blog. I wanted to wrap everything inside > body in a container and a row (bootstrap classes). The functions > provided do not let me do this conveniently. I can define `content', > `preamble' and `postamble' but cannot wrap all three of them inside a > `div' without overriding the whole export function. For that you could use a filter, which may or may not be convinient. (add-to-list 'org-export-filter-final-output-functions (defun rasmus/div-body (body backend info) (when (and (org-export-derived-backend-p backend 'html) ;; Add something to identify your project if using same ;; init.el for "normal" usage and publishing usage. ) (replace-regexp-in-string "" "\n" (replace-regexp-in-string "" "\n
" body))))) Rasmus -- Bang bang