diff --git a/src/archive.org b/src/archive.org index 5b8039b..d494551 100644 --- a/src/archive.org +++ b/src/archive.org @@ -2,5 +2,5 @@ #+begin_archive -@@html:
  • @@ @@html:@@ Jul 05, 2019 @@html:@@ [[file:posts/2019-07-04-org-publish.org][org-publish]] @@html:@@ @@html:
  • @@ +@@html:
  • @@ @@html:@@ jul 06, 2019 @@html:@@ [[file:posts/2019-07-04-org-publish.org][Static blog with org-mode]] @@html:@@ @@html:
  • @@ #+end_archive diff --git a/src/index.org b/src/index.org index 616882f..3a0447f 100644 --- a/src/index.org +++ b/src/index.org @@ -1,4 +1,4 @@ -* Code magic :noexport: +* Code magic :noexport: #+TITLE: her.esy.fun #+AUTHOR: Yann Esposito #+EMAIL: yann.esposito@gmail.com @@ -9,116 +9,132 @@ #+CREATOR: Spacemacs, org-mode (Emacs 26.1, Org mode 9.2.3) #+OPTIONS: H:6 #+begin_src elisp :results none - (require 'org) - (require 'ox-publish) - (require 'ox-html) - (require 'org-element) - (require 'ox-rss) + (require 'org) + (require 'ox-publish) + (require 'ox-html) + (require 'org-element) + (require 'ox-rss) - (defun org-blog-prepare (project-plist) - "With help from `https://github.com/howardabrams/dot-files'. - Touch `index.org' to rebuilt it. - Argument `PROJECT-PLIST' contains information about the current project." - (let* ((base-directory (plist-get project-plist :base-directory)) - (buffer (find-file-noselect (expand-file-name "index.org" base-directory) t))) - (with-current-buffer buffer - (set-buffer-modified-p t) - (save-buffer 0)) - (kill-buffer buffer))) + (defun org-blog-prepare (project-plist) + "With help from `https://github.com/howardabrams/dot-files'. + Touch `index.org' to rebuilt it. + Argument `PROJECT-PLIST' contains information about the current project." + (let* ((base-directory (plist-get project-plist :base-directory)) + (buffer (find-file-noselect (expand-file-name "index.org" base-directory) t))) + (with-current-buffer buffer + (set-buffer-modified-p t) + (save-buffer 0)) + (kill-buffer buffer))) - (defvar org-blog-head - " - ") + (defvar org-blog-head + " + ") - (defun org-blog-preamble (_plist) - "Pre-amble for whole blog." - "Programing Heresy") + (defun org-blog-preamble (_plist) + "Pre-amble for whole blog." + "Programing Heresy") - (defun org-blog-postamble (_plist) - "Post-amble for whole blog." - "
    - Home - - Posts") + (defun org-blog-postamble (_plist) + "Post-amble for whole blog." + "
    + Home - + Posts") - (defun org-blog-sitemap-format-entry (entry _style project) - "Return string for each ENTRY in PROJECT." - (when (s-starts-with-p "posts/" entry) - (format "@@html:@@ %s @@html:@@ [[file:%s][%s]] @@html:@@" - (format-time-string "%h %d, %Y" - (org-publish-find-date entry project)) - entry - (org-publish-find-title entry project)))) + (defun org-blog-sitemap-format-entry (entry _style project) + "Return string for each ENTRY in PROJECT." + (when (s-starts-with-p "posts/" entry) + (format "@@html:@@ %s @@html:@@ [[file:%s][%s]] @@html:@@" + (format-time-string "%h %d, %Y" + (org-publish-find-date entry project)) + entry + (org-publish-find-title entry project)))) - (defun org-blog-sitemap-function (title list) - "Return sitemap using TITLE and LIST returned by `org-blog-sitemap-format-entry'." - (concat "#+TITLE: " title "\n\n" - "\n#+begin_archive\n" - (mapconcat (lambda (li) - (format "@@html:
  • @@ %s @@html:
  • @@" (car li))) - (seq-filter #'car (cdr list)) - "\n") - "\n#+end_archive\n")) + (defun org-blog-sitemap-function (title list) + "Return sitemap using TITLE and LIST returned by `org-blog-sitemap-format-entry'." + (concat "#+TITLE: " title "\n\n" + "\n#+begin_archive\n" + (mapconcat (lambda (li) + (format "@@html:
  • @@ %s @@html:
  • @@" (car li))) + (seq-filter #'car (cdr list)) + "\n") + "\n#+end_archive\n")) - (setq base-dir (concat (projectile-project-root) "src")) - (setq publish-dir (concat (projectile-project-root) "_site")) - (setq assets-dir (concat base-dir "/assets")) - (setq publish-assets-dir (concat publish-dir "/assets")) - (setq rss-dir base-dir) - (setq publish-rss-dir publish-dir) - (setq org-publish-project-alist - `(("orgfiles" - :base-directory ,base-dir - :exclude ".*drafts/.*" - :base-extension "org" + (setq base-dir (concat (projectile-project-root) "src")) + (setq publish-dir (concat (projectile-project-root) "_site")) + (setq assets-dir (concat base-dir "/assets")) + (setq publish-assets-dir (concat publish-dir "/assets")) + (setq rss-dir base-dir) + (setq publish-rss-dir publish-dir) + (setq domainname "https://her.esy.fun") + (setq org-publish-project-alist + `(("orgfiles" + :base-directory ,base-dir + :exclude ".*drafts/.*" + :base-extension "org" - :publishing-directory ,publish-dir + :publishing-directory ,publish-dir - :recursive t - :preparation-function org-blog-prepare - :publishing-function org-html-publish-to-html + :recursive t + :preparation-function org-blog-prepare + :publishing-function org-html-publish-to-html - :with-toc nil - :with-title t - :with-date t - :section-numbers nil - :html-doctype "html5" - :html-html5-fancy t - :html-head-include-default-style nil - :html-head-include-scripts nil - :htmlized-source t - :html-head-extra ,org-blog-head - :html-preamble org-blog-preamble - :html-postamble org-blog-postamble + :with-toc nil + :with-title t + :with-date t + :section-numbers nil + :html-doctype "html5" + :html-html5-fancy t + :html-head-include-default-style nil + :html-head-include-scripts nil + :htmlized-source t + :html-head-extra ,org-blog-head + :html-preamble org-blog-preamble + :html-postamble org-blog-postamble - :auto-sitemap t - :sitemap-filename "archive.org" - :sitemap-title "Blog Posts" - :sitemap-style list - :sitemap-sort-files anti-chronologically - :sitemap-format-entry org-blog-sitemap-format-entry - :sitemap-function org-blog-sitemap-function) + :auto-sitemap t + :sitemap-filename "archive.org" + :sitemap-title "Blog Posts" + :sitemap-style list + :sitemap-sort-files anti-chronologically + :sitemap-format-entry org-blog-sitemap-format-entry + :sitemap-function org-blog-sitemap-function) - ("assets" - :base-directory ,assets-dir - :base-extension ".*" - :publishing-directory ,publish-assets-dir - :publishing-function org-publish-attachment - :recursive t) + ("assets" + :base-directory ,assets-dir + :base-extension ".*" + :publishing-directory ,publish-assets-dir + :publishing-function org-publish-attachment + :recursive t) - ("rss" - :base-directory ,rss-dir - :base-extension "org" - :html-link-home "https://her.esy.fun/" - :html-link-use-abs-url t - :rss-extension "xml" - :publishing-directory ,publish-rss-dir - :publishing-function (org-rss-publish-to-rss) - :exclude ".*" - :include ("archive.org") - :section-numbers nil - :table-of-contents nil) + ("rss" + :base-directory ,rss-dir + :base-extension "org" + :html-link-home ,domainname + :html-link-use-abs-url t + :rss-extension "xml" + :publishing-directory ,publish-rss-dir + :publishing-function (org-rss-publish-to-rss) + :exclude ".*" + :include ("archive.org") + :section-numbers nil + :table-of-contents nil) + + ("blog" :components ("orgfiles" "assets" "rss")))) + + ;; add target=_blank and rel="noopener noreferrer" to all links by default + (defun my-org-export-add-target-blank-to-http-links (text backend info) + "Add target=\"_blank\" to external links." + (when (and + (org-export-derived-backend-p backend 'html) + (string-match "href=\"http[^\"]+" text) + (not (string-match "target=\"" text)) + (not (string-match (concat "href=\"" domainname "[^\"]*") text))) + (string-match "