[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] ox-publish export subtree scopes?
From: |
Rasmus |
Subject: |
Re: [O] ox-publish export subtree scopes? |
Date: |
Tue, 19 Dec 2017 12:53:06 +0100 |
User-agent: |
Emacs Gnus |
Narendra Joshi <address@hidden> writes:
> Kaushal Modi <address@hidden> writes:
>
>> On Tue, Dec 5, 2017 at 7:31 AM Rasmus <address@hidden> 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
"</body>" "</div>\n</body>"
(replace-regexp-in-string "<body>"
"<body>\n<div class=\"bootstrap-thingy\">"
body)))))
Rasmus
--
Bang bang