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(+)
(limited to 'ennu-html.el')
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