From 1f2531c31f219e5f569f228e9d57c65fd59c9964 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Mon, 2 Sep 2019 01:35:55 +0530 Subject: Implement ennu-html inner-template transcoder. * ennu-html.el (ennu-html-inner-template): New function. (ennu-html): Specify ennu-html-inner-template as inner-template transcoder. --- ennu-html.el | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/ennu-html.el b/ennu-html.el index 9a24f9c..877e561 100644 --- a/ennu-html.el +++ b/ennu-html.el @@ -8,6 +8,8 @@ (expand-file-name name (concat "/" default-directory))) (org-export-define-derived-backend 'ennu-html 'html + :translate-alist + '((inner-template . ennu-html-inner-template)) :options-alist '((:html-inline-image-rules nil nil '(("image" . "\\.\\(jpeg\\|jpg\\|png\\|gif\\|svg\\)\\'")) t) @@ -15,6 +17,61 @@ (:thumbnail "THUMBNAIL" nil nil t) (:translation-group "TRANSLATION_GROUP" nil nil t))) +(defun ennu-html-inner-template (contents info) + (concat + ;; Table of contents + (let ((depth (plist-get info :with-toc))) + (when depth (org-html-toc depth info))) + ;; Beginning of h-entry + "
" + ;; Title + (format "

%s

\n" + (org-export-data (plist-get info :title) info)) + ;; Author and date + (let ((author (when (plist-get info :with-author) + (plist-get info :author))) + (date (when (plist-get info :with-date) + (org-export-get-date info)))) + (when (or author date) + (xmlgen `(p "Published" + ,@(when author + `(" by " + (a :class "p-author h-card" + :href ,(ennu--absolute-uri "") + ,(car (plist-get info :author))))) + ,@(when date + `(" on " + (time :class "dt-published" + :datetime ,(org-export-get-date info "%Y-%m-%d 12:00:00") + ,(org-export-get-date info "%B %d, %Y")))))))) + ;; Interlanguage language links + (format "

In other languages: %s

" + (mapconcat + (lambda (translation) + (let ((lang (ennu-post-language translation)) + (slug (ennu-post-slug translation))) + (replace-regexp-in-string + "Tags: %s

" + (mapconcat + (lambda (tag) + (replace-regexp-in-string + "
%s" + (org-export-data (plist-get info :summary) info)) + ;; Document contents + (format "
%s
" contents) + ;; Footnotes section + (org-html-footnote-section info) + "
")) + ;; TODO: Pass title through org-export-data-with-backend or something ;; similar in order to export org syntax in title (defun ennu-export-post (path desc backend) -- cgit v1.2.3