From mboxrd@z Thu Jan 1 00:00:00 1970 From: Narendra Joshi Subject: Re: ox-publish export subtree scopes? Date: Sun, 10 Dec 2017 12:45:40 +0530 Message-ID: <87d13n9hpf.fsf@gmail.com> References: <86fu8w5oyf.fsf@gmail.com> <87fu8unqut.fsf@hyperbola.info> <86wp25kfgb.fsf@gmail.com> <87o9nd73ww.fsf@gmx.us> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37428) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eNvq3-0003DK-7Z for emacs-orgmode@gnu.org; Sun, 10 Dec 2017 02:15:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eNvq0-0002u8-3q for emacs-orgmode@gnu.org; Sun, 10 Dec 2017 02:15:51 -0500 Received: from mail-pg0-x229.google.com ([2607:f8b0:400e:c05::229]:45460) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eNvpz-0002tI-RA for emacs-orgmode@gnu.org; Sun, 10 Dec 2017 02:15:48 -0500 Received: by mail-pg0-x229.google.com with SMTP id m25so8989799pgv.12 for ; Sat, 09 Dec 2017 23:15:47 -0800 (PST) In-Reply-To: (Kaushal Modi's message of "Tue, 05 Dec 2017 19:10:17 +0000") 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: Kaushal Modi Cc: emacs-orgmode@gnu.org, Rasmus 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: > > =3D=3D=3D=3D=3D > - If the current subtree has the \"EXPORT_FILE_NAME\" property, > export > =C2=A0 that subtree. > - If the current subtree doesn't have that property, but one of its > =C2=A0 parent subtrees has, then export from that subtree's scope. > - If none of the subtrees have that property (or if there are no Org > =C2=A0 subtrees at all), but the Org #+TITLE keyword is present, > =C2=A0 export the whole Org file as a post with that title (calls > =C2=A0 `org-hugo-export-to-md' with its SUBTREEP argument set to nil). > > - If ALL-SUBTREES is non-nil, export all valid Hugo post subtrees > =C2=A0 \(that have the \"EXPORT_FILE_NAME\" property) in the current file > =C2=A0 to multiple Markdown posts. > - If ALL-SUBTREES is non-nil, and again if none of the subtrees have > =C2=A0 that property (or if there are no Org subtrees), but the Org # > +TITLE > =C2=A0 keyword is present, export the whole Org file. > > - If the file neither has valid Hugo post subtrees, nor has the > =C2=A0 #+TITLE present, throw a user error.=C2=A0 If NOERROR is non-nil, = use > =C2=A0 `message' to display the error message instead of signaling a user > =C2=A0 error. > =3D=3D=3D=3D=3D > > 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. Best, --=20 Narendra Joshi